Commit 13fc1cfd by huiyang.chen

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

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
parents ea555471 a0e1e8ef
...@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.*; ...@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl; import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl;
import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo; import cn.freemud.service.impl.mcoffee.entity.CopyShoppingCartRequestVo;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo; 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.impl.mcoffee.entity.SwitchShoppingCartRequestVo;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
...@@ -59,6 +60,15 @@ public class MCoffeeShoppingCartController { ...@@ -59,6 +60,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") @ApiAnnotation(logMessage = "listCartGoods")
......
...@@ -88,6 +88,10 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -88,6 +88,10 @@ public class ActivityCalculationDiscountRequestDto {
*/ */
private String goodsCode; private String goodsCode;
/** /**
* 商品核销券号
*/
private String couponCode;
/**
* 商品ID * 商品ID
*/ */
private String goodsId; private String goodsId;
......
...@@ -116,4 +116,9 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -116,4 +116,9 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
private String ruleId; private String ruleId;
} }
/**
* 运费卡券
*/
private String freightCouponCode;
} }
...@@ -90,6 +90,7 @@ public enum ResponseResult { ...@@ -90,6 +90,7 @@ public enum ResponseResult {
SHOPPING_CART_PRODUCT_CAN_NOT_USE("44023", "商品不可用"), SHOPPING_CART_PRODUCT_CAN_NOT_USE("44023", "商品不可用"),
SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"), SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"),
SHOPPING_CART_LIMIT_ADD("44025", "加购数量超过限制"), SHOPPING_CART_LIMIT_ADD("44025", "加购数量超过限制"),
SHOPPING_CART_GOODS_CHECK_ERROR("44026", "当前餐盘中没有可用券的饮品"),
/** /**
* 订单状态码 * 订单状态码
......
...@@ -2,7 +2,6 @@ package cn.freemud.service.impl.mcoffee; ...@@ -2,7 +2,6 @@ package cn.freemud.service.impl.mcoffee;
import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Level;
import cn.freemud.adapter.ActivityAdapter; import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
...@@ -25,6 +24,7 @@ import cn.freemud.service.impl.mcoffee.calculation.CouponDiscountCalculation; ...@@ -25,6 +24,7 @@ import cn.freemud.service.impl.mcoffee.calculation.CouponDiscountCalculation;
import cn.freemud.service.impl.mcoffee.entity.*; import cn.freemud.service.impl.mcoffee.entity.*;
import cn.freemud.service.thirdparty.CustomerApplicationClient; import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.ProductClient; import cn.freemud.service.thirdparty.ProductClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -282,7 +282,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -282,7 +282,7 @@ public class ShoppingCartMCoffeeServiceImpl {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null, calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo); cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
...@@ -351,7 +351,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -351,7 +351,7 @@ public class ShoppingCartMCoffeeServiceImpl {
} }
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode());
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null, calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
...@@ -520,7 +520,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -520,7 +520,7 @@ public class ShoppingCartMCoffeeServiceImpl {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, tableNumber, shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, tableNumber, shoppingCartBaseService);
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
//加价购商品 //加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
...@@ -608,7 +608,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -608,7 +608,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//清空商品券商品 //清空商品券商品
clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList); clearCartCouponGoods(partnerId, toStoreId, userId, sessionId, cartGoodsList);
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,null);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null, calculationService.updateShoppingCartGoodsDiscount(partnerId, toStoreId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
...@@ -1078,7 +1078,6 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1078,7 +1078,6 @@ public class ShoppingCartMCoffeeServiceImpl {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods(); CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
productCombox.setGoodsId(vo.getSkuId()); productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId()); productCombox.setSkuId(vo.getSkuId());
productCombox.setSpuId(vo.getSpuId());
productCombox.setQty(vo.getQty()); productCombox.setQty(vo.getQty());
productCombox.setExtra(vo.getExtra()); productCombox.setExtra(vo.getExtra());
productCombox.setSpecialExtra(vo.getSpecialExtra()); productCombox.setSpecialExtra(vo.getSpecialExtra());
...@@ -1166,7 +1165,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1166,7 +1165,7 @@ public class ShoppingCartMCoffeeServiceImpl {
return checkCartRequest; return checkCartRequest;
} }
private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList) { private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> getCoupon(String couponCode, String activityCode, List<CartGoods> cartGoodsList,String freightCouponCode) {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) { if (StringUtils.isNotEmpty(couponCode)) {
...@@ -1175,6 +1174,12 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1175,6 +1174,12 @@ public class ShoppingCartMCoffeeServiceImpl {
coupon.setActivityCode(activityCode); coupon.setActivityCode(activityCode);
coupons.add(coupon); coupons.add(coupon);
} }
if (StringUtils.isNotEmpty(freightCouponCode)) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(freightCouponCode);
coupon.setActivityCode(activityCode);
coupons.add(coupon);
}
//购物车商品券 //购物车商品券
if (CollectionUtils.isNotEmpty(cartGoodsList)) { if (CollectionUtils.isNotEmpty(cartGoodsList)) {
...@@ -1329,4 +1334,110 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -1329,4 +1334,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,null);
// 促销活动的优惠金额计算
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;
}
} }
...@@ -372,6 +372,8 @@ public class CalculationServiceImpl { ...@@ -372,6 +372,8 @@ public class CalculationServiceImpl {
calculationDiscountGoods.setGoodsQuantity(goodsQuantity); calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); calculationDiscountGoods.setMemberDiscount(memberDiscount);
//新增咖啡月卡券券号
calculationDiscountGoods.setCouponCode(cartGoods.getCouponCode());
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>(); ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
//可选搭配 //可选搭配
...@@ -452,11 +454,8 @@ public class CalculationServiceImpl { ...@@ -452,11 +454,8 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount() + totalPackgeAmount); shoppingCartGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount() + totalPackgeAmount);
shoppingCartGoodsResponseVo.setNewPackAmount(totalPackgeAmount); shoppingCartGoodsResponseVo.setNewPackAmount(totalPackgeAmount);
shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount()); shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount());
if(calculationDiscount != null && calculationDiscount.getDeliveryAmount() == null){
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscount == null ? 0L :calculationDiscount.getDistributionFee());
}
} }
} }
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