Commit 1d7d958a by huiyang.chen

Merge branch '2020/09/24-运费券-huiyang' into develop

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
parents db0bd421 52cb08f5
......@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl;
import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeCardAddVo;
import cn.freemud.service.impl.mcoffee.entity.SwitchShoppingCartRequestVo;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
......@@ -58,6 +59,15 @@ public class MCoffeeShoppingCartController {
}
/**
* 修改或者新增购物车中商品
*/
@ApiAnnotation(logMessage = "updateGoodsByCard")
@PostMapping(value = "/card/updateGoods")
public BaseResponse updateGoodsByCard(@Validated @LogParams @RequestBody MCoffeeCardAddVo request) {
return shoppingCartMCoffeeService.updateGoodsByCard(request);
}
/**
* 查询购物车信息
*/
@ApiAnnotation(logMessage = "listCartGoods")
......
......@@ -116,17 +116,8 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
}
/**
* 万能券、咖啡月卡券
* 运费卡券
*/
private String coffeeCouponCode;
/**
*
*/
private String coffeeCouponName;
/**
* 咖啡月卡适用商品id
*/
private List<String> goodsId;
private String freightCouponCode;
}
......@@ -26,8 +26,10 @@ import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.CouponAvailableReq;
import cn.freemud.service.impl.mcoffee.entity.CouponState;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeCardAddVo;
import cn.freemud.service.impl.mcoffee.entity.SwitchShoppingCartRequestVo;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.service.thirdparty.ProductClient;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray;
......@@ -328,49 +330,6 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
//校验咖啡月卡的商品是否在购物车里面存在
List<String> goodsId = shoppingCartInfoRequestVo.getGoodsId();
if (CollectionUtils.isNotEmpty(goodsId) && StringUtils.isNotEmpty(shoppingCartInfoRequestVo.getCoffeeCouponCode())){
List<CartGoods> cartGoodsListNew =new ArrayList<>();
for (String id: goodsId ) {
List<CartGoods> CartGoodsList = cartGoodsList.stream().filter(t -> t.getGoodsId().equals(id)).collect(Collectors.toList());
cartGoodsListNew.addAll(CartGoodsList);
}
if (CollectionUtils.isEmpty(cartGoodsListNew)){
return ResponseUtil.error(ResponseResult.SHOPPING_CART_GOODS_CHECK_ERROR);
}
CartGoods cartGoods = cartGoodsListNew.stream().max(Comparator.comparing(CartGoods::getOriginalPrice)).get();
if (cartGoods != null){
//修改购物车商品数量
UpdateShoppingCartGoodsQtyRequestVo vo =new UpdateShoppingCartGoodsQtyRequestVo();
vo.setCartGoodsUid(cartGoods.getCartGoodsUid());
vo.setPartnerId(partnerId);
vo.setQty(cartGoods.getQty() - 1);
vo.setOrderType(orderType);
vo.setShopId(storeId);
vo.setMenuType(menuType);
vo.setChannelType(shoppingCartInfoRequestVo.getChannelType());
vo.setAppId(appId);
updateGoodsQty(vo);
//添加商品券到购物车
MCoffeeAddGoodsRequestVo requestVo =new MCoffeeAddGoodsRequestVo();
requestVo.setAppId(appId);
requestVo.setCategoryName("DSPQ");
requestVo.setCategoryName(shoppingCartInfoRequestVo.getCoffeeCouponName());
requestVo.setChannelType(shoppingCartInfoRequestVo.getChannelType());
requestVo.setMenuType(menuType);
requestVo.setOrderType(orderType);
requestVo.setPartnerId(partnerId);
requestVo.setQty(1);
requestVo.setShopId(storeId);
requestVo.setSkuId(cartGoods.getSkuId());
requestVo.setSpuId(cartGoods.getSpuId());
requestVo.setCouponCode(shoppingCartInfoRequestVo.getCoffeeCouponCode());
addGoods(requestVo);
}
}
cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, sessionId, "", shoppingCartBaseService);
}
/**
......@@ -397,6 +356,9 @@ public class ShoppingCartMCoffeeServiceImpl {
}
// 当couponCode不为空时,需参与价格计算
if (StringUtils.isNotEmpty(shoppingCartInfoRequestVo.getFreightCouponCode())){
couponCode= couponCode +"," +shoppingCartInfoRequestVo.getFreightCouponCode();
}
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
// 促销活动的优惠金额计算
......@@ -1381,4 +1343,110 @@ public class ShoppingCartMCoffeeServiceImpl {
}
}
public BaseResponse updateGoodsByCard(MCoffeeCardAddVo cardAddVo) {
// 参数校验
if (StringUtils.isEmpty(cardAddVo.getShopId())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
}
if (cardAddVo.getQty() != null && cardAddVo.getQty() < 0) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_ADD_ERROR);
}
String sessionId = cardAddVo.getSessionId();
// 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(sessionId);
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
String userId = assortmentCustomerInfoVo.getMemberId();
String partnerId = cardAddVo.getPartnerId();
String storeId = cardAddVo.getShopId();
String appId = cardAddVo.getAppId();
String spuId = cardAddVo.getSpuId();
String skuId = StringUtils.isNotBlank(cardAddVo.getSkuId()) ? cardAddVo.getSkuId() : "";
String goodsId = StringUtils.isEmpty(skuId) ? spuId : skuId;
String menuType = cardAddVo.getMenuType();
Integer orderType = cardAddVo.getOrderType();
String couponCode = cardAddVo.getCouponCode();
String receiveId = cardAddVo.getReceiveId();
// 查询购物车缓存
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService);
// 如果购物车商品不为空, 则check购物车中所有商品
if (CollectionUtils.isNotEmpty(cartGoodsList)) {
// check购物车中所有商品
cartGoodsList = checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, cartGoodsList);
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
if (StringUtils.isNotEmpty(couponCode) && StringUtils.isNotEmpty(goodsId)) {
CartGoods couponGoods = cartGoodsList.stream().findFirst().filter(t -> t.getCouponCode().equals(couponCode)).get();
CartGoods cartGoods = cartGoodsList.stream().findFirst().filter(t -> (t.getGoodsId().equals(goodsId) && (!t.getCartGoodsUid().equals(couponGoods.getCartGoodsUid())))).get();
if (cartGoods != null) {
if (cardAddVo.getIsSelect()) {
//修改购物车商品数量
UpdateShoppingCartGoodsQtyRequestVo vo = updateCartVo(cartGoods, cardAddVo, false);
updateGoodsQty(vo);
//添加商品券到购物车
MCoffeeAddGoodsRequestVo requestVo = addCartVO(cardAddVo, true);
addGoods(requestVo);
} else {
if (couponGoods != null) {
//删除购物车行,因为商品券再购物车始终是一
UpdateShoppingCartGoodsQtyRequestVo vo = updateCartVo(cartGoods, cardAddVo, false);
updateGoodsQty(vo);
if (cartGoods.getQty() >= 1) {
//修改购物车商品数量
UpdateShoppingCartGoodsQtyRequestVo requestVo = updateCartVo(couponGoods, cardAddVo, true);
updateGoodsQty(requestVo);
} else {
MCoffeeAddGoodsRequestVo requestVo = addCartVO(cardAddVo, false);
addGoods(requestVo);
}
}
}
}
cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService);
}
}
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
//设置更新响应信息
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo =new ShoppingCartInfoRequestVo();
BeanUtil.convertBean(cardAddVo,shoppingCartInfoRequestVo);
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
private UpdateShoppingCartGoodsQtyRequestVo updateCartVo(CartGoods cartGoods,MCoffeeCardAddVo cardAddVo,Boolean isAdd){
UpdateShoppingCartGoodsQtyRequestVo vo = new UpdateShoppingCartGoodsQtyRequestVo();
vo.setCartGoodsUid(cartGoods.getCartGoodsUid());
vo.setPartnerId(cardAddVo.getPartnerId());
if (isAdd){
vo.setQty(cartGoods.getQty() + 1);
}else {
vo.setQty(cartGoods.getQty() - 1);
}
vo.setOrderType(cardAddVo.getOrderType());
vo.setShopId(cardAddVo.getShopId());
vo.setMenuType(cardAddVo.getMenuType());
vo.setChannelType(cardAddVo.getChannelType());
vo.setAppId(cardAddVo.getAppId());
vo.setSessionId(cardAddVo.getSessionId());
return vo;
}
private MCoffeeAddGoodsRequestVo addCartVO(MCoffeeCardAddVo cardAddVo,Boolean isCoupon){
MCoffeeAddGoodsRequestVo requestVo = new MCoffeeAddGoodsRequestVo();
BeanUtil.convertBean(cardAddVo,requestVo);
requestVo.setQty(1);
if (isCoupon) {
requestVo.setCategoryName("DSPQ");
requestVo.setCouponCode(cardAddVo.getCouponCode());
}
return requestVo;
}
}
package cn.freemud.service.impl.mcoffee.entity;
import lombok.Data;
@Data
public class MCoffeeCardAddVo extends MCoffeeAddGoodsRequestVo{
/**
* true : 选中
* false : 取消选中
*/
private Boolean isSelect;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment