Commit 470138cf by ping.wu

Merge branches 'develop' and 'feature/20200721_麦咖啡购物车_wuping' of…

Merge branches 'develop' and 'feature/20200721_麦咖啡购物车_wuping' of http://gitlab.freemud.com/order-group-application/order-group into develop

# Conflicts:
#	shopping-cart-application-service/pom.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
#	shopping-cart-application-service/src/main/java/cn/freemud/enums/GoodsTypeEnum.java
parents d5512886 d99cc04a
...@@ -47,6 +47,11 @@ public class CartGoods { ...@@ -47,6 +47,11 @@ public class CartGoods {
*/ */
private String unit; private String unit;
/**
* 商品券code
*/
private String couponCode;
private String spuId; private String spuId;
private String skuId; private String skuId;
/** /**
......
...@@ -85,6 +85,7 @@ public class ShoppingCartConvertAdapter { ...@@ -85,6 +85,7 @@ public class ShoppingCartConvertAdapter {
// 设置基础信息 // 设置基础信息
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto(); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
cartGoodsDetailDto.setCartGoodsUid(cartGoods.getCartGoodsUid()); cartGoodsDetailDto.setCartGoodsUid(cartGoods.getCartGoodsUid());
cartGoodsDetailDto.setTas(0.02d);
cartGoodsDetailDto.setSpuId(cartGoods.getSpuId()); cartGoodsDetailDto.setSpuId(cartGoods.getSpuId());
cartGoodsDetailDto.setSpuName(cartGoods.getSpuName()); cartGoodsDetailDto.setSpuName(cartGoods.getSpuName());
cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId()); cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId());
...@@ -362,6 +363,7 @@ public class ShoppingCartConvertAdapter { ...@@ -362,6 +363,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setSpuId(spuId); cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId); cartGoods.setSkuId(skuId);
cartGoods.setQty(qty); cartGoods.setQty(qty);
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode());
Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType(); Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) { if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType(); goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
......
...@@ -2,9 +2,8 @@ package cn.freemud.controller; ...@@ -2,9 +2,8 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl; import cn.freemud.service.impl.mcoffee.ShoppingCartMCoffeeServiceImpl;
import cn.freemud.utils.ResponseUtil; import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
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;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -43,7 +42,7 @@ public class MCoffeeShoppingCartController { ...@@ -43,7 +42,7 @@ public class MCoffeeShoppingCartController {
*/ */
@ApiAnnotation(logMessage = "addGoods") @ApiAnnotation(logMessage = "addGoods")
@PostMapping(value = "/addGoods") @PostMapping(value = "/addGoods")
public BaseResponse addGoods(@Validated @LogParams @RequestBody AddShoppingCartGoodsRequestVo request) { public BaseResponse addGoods(@Validated @LogParams @RequestBody MCoffeeAddGoodsRequestVo request) {
return shoppingCartMCoffeeService.addGoods(request); return shoppingCartMCoffeeService.addGoods(request);
} }
......
...@@ -117,6 +117,30 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -117,6 +117,30 @@ public class ActivityCalculationDiscountRequestDto {
*/ */
private List<Material> smallMaterial; private List<Material> smallMaterial;
private List<Material> smallMaterial;
@Data
@NoArgsConstructor
static public class Material {
/**
* 加料商品ID
*/
private String goodsId;
/**
* 加料数量
*/
private Integer goodsQuantity;
/**
* 加料单价
*/
private Long originalPrice;
/**
* 1 :小料、2:可选搭配
*/
private int type;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) if (this == o)
...@@ -156,4 +180,5 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -156,4 +180,5 @@ public class ActivityCalculationDiscountRequestDto {
private int type; private int type;
} }
} }
} }
...@@ -226,6 +226,11 @@ public class ShoppingCartGoodsDto { ...@@ -226,6 +226,11 @@ public class ShoppingCartGoodsDto {
* 统计分类名称 * 统计分类名称
*/ */
private String classificationName; private String classificationName;
/**
* 税率
*/
private Double tas;
/** /**
* 配料或属性 * 配料或属性
*/ */
......
...@@ -20,7 +20,8 @@ public enum GoodsTypeEnum { ...@@ -20,7 +20,8 @@ public enum GoodsTypeEnum {
SET_MEAL_GOODS(3, "套餐商品"), SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"), SPU_GOODS(5, "spu商品"),
MATERIAL(88, "有加料的商品"); MATERIAL(88, "有加料的商品"),
REDUCE_PRICE_GOODS(6,"加价购商品");
private Integer goodsType; private Integer goodsType;
private String desc; private String desc;
......
...@@ -10,15 +10,14 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; ...@@ -10,15 +10,14 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto; import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.*;
import cn.freemud.enums.OperationTypeEnum;
import cn.freemud.enums.OrderType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.ActivityService; import cn.freemud.service.ActivityService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.FullSubtractionActivityServiceImpl; import cn.freemud.service.impl.FullSubtractionActivityServiceImpl;
import cn.freemud.service.impl.mcoffee.calculation.CalculationServiceImpl; import cn.freemud.service.impl.mcoffee.calculation.CalculationServiceImpl;
import cn.freemud.service.impl.mcoffee.calculation.CouponDiscountCalculation;
import cn.freemud.service.impl.mcoffee.entity.MCoffeeAddGoodsRequestVo;
import cn.freemud.service.thirdparty.CustomerApplicationClient; import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
...@@ -27,7 +26,6 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; ...@@ -27,7 +26,6 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
...@@ -75,6 +73,8 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -75,6 +73,8 @@ public class ShoppingCartMCoffeeServiceImpl {
private CustomerApplicationClient customerApplicationClient; private CustomerApplicationClient customerApplicationClient;
@Autowired @Autowired
private CalculationServiceImpl calculationService; private CalculationServiceImpl calculationService;
@Autowired
private CouponDiscountCalculation couponDiscountCalculation;
/** /**
* 添加商品 * 添加商品
...@@ -82,7 +82,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -82,7 +82,7 @@ public class ShoppingCartMCoffeeServiceImpl {
* @param addShoppingCartGoodsRequestVo * @param addShoppingCartGoodsRequestVo
* @return * @return
*/ */
public BaseResponse addGoods(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo) { public BaseResponse addGoods(MCoffeeAddGoodsRequestVo addShoppingCartGoodsRequestVo) {
// TODO: 2020/7/21 参数校验 // TODO: 2020/7/21 参数校验
if (StringUtils.isEmpty(addShoppingCartGoodsRequestVo.getShopId())) { if (StringUtils.isEmpty(addShoppingCartGoodsRequestVo.getShopId())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY); return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
...@@ -105,22 +105,26 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -105,22 +105,26 @@ public class ShoppingCartMCoffeeServiceImpl {
String menuType = addShoppingCartGoodsRequestVo.getMenuType(); String menuType = addShoppingCartGoodsRequestVo.getMenuType();
Integer orderType = addShoppingCartGoodsRequestVo.getOrderType(); Integer orderType = addShoppingCartGoodsRequestVo.getOrderType();
String receiveId = addShoppingCartGoodsRequestVo.getReceiveId(); String receiveId = addShoppingCartGoodsRequestVo.getReceiveId();
Integer operationType = addShoppingCartGoodsRequestVo.getOperationType();
String couponCode = addShoppingCartGoodsRequestVo.getCouponCode();
String spuId2 = spuId; String spuId2 = spuId;
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
productIds.add(Long.parseLong(goodsId)); productIds.add(Long.parseLong(goodsId));
CartGoods addCartGoods = convent2CartGoods(addShoppingCartGoodsRequestVo);
// TODO: 2020/7/21 获取添加商品的详细信息 // TODO: 2020/7/21 获取添加商品的详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId
, Collections.singletonList(spuId2), menuType, this.shoppingCartBaseService); , Collections.singletonList(spuId2), menuType, this.shoppingCartBaseService);
CartGoods addCartGoods = ShoppingCartConvertAdapter.convent2CartGoods(addShoppingCartGoodsRequestVo);
// TODO: 2020/7/21 查询购物车缓存 // TODO: 2020/7/21 查询购物车缓存
// 注意,围餐和点餐redis数据结构不一样 // 注意,围餐和点餐redis数据结构不一样
List<CartGoods> oldCartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService); List<CartGoods> oldCartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, null, shoppingCartBaseService);
if (CollectionUtils.isEmpty(oldCartGoodsList)) { if (CollectionUtils.isEmpty(oldCartGoodsList)) {
oldCartGoodsList = new ArrayList<>(); oldCartGoodsList = new ArrayList<>();
} }
//商品券已添加
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = checkGoodsCoupon(oldCartGoodsList, operationType,couponCode);
setClassificationAndPrice(addCartGoods, productBeanListSpuClass); setClassificationAndPrice(addCartGoods, productBeanListSpuClass);
//查询多个商品库存信息 //查询多个商品库存信息
Integer checkQty = this.checkSkuQty(oldCartGoodsList, addCartGoods); Integer checkQty = this.checkSkuQty(oldCartGoodsList, addCartGoods);
...@@ -132,16 +136,13 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -132,16 +136,13 @@ public class ShoppingCartMCoffeeServiceImpl {
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价” // 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS); setToastMsgIfNotExist(shoppingCartGoodsResponseVo, ShoppingCartConstant.HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS);
} }
List<CartGoods> newCartGoods = new ArrayList<>();
newCartGoods.addAll(oldCartGoodsList);
newCartGoods = checkNewCartGoods(newCartGoods, addCartGoods);
// TODO: 2020/7/21 购物车数据更新(保存商品原价) // TODO: 2020/7/21 购物车数据更新(保存商品原价)
newCartGoods = updateCartGoodsLegal(partnerId, storeId, orderType, tableNumber, menuType, userId, addCartGoods, shoppingCartGoodsResponseVo, newCartGoods); List<CartGoods> newCartGoods = updateCartGoodsLegal(partnerId, storeId, orderType, tableNumber, menuType, userId,addCartGoods, shoppingCartGoodsResponseVo, oldCartGoodsList);
// TODO: 2020/7/21 促销活动等价格计算 // TODO: 2020/7/21 促销活动等价格计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId,null, calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId,null,
newCartGoods, new ArrayList<>(), new ArrayList<>(), shoppingCartGoodsResponseVo); newCartGoods, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
// TODO: 2020/7/21 返回购物车数据 // TODO: 2020/7/21 返回购物车数据
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, newCartGoods, null, ShoppingCartConstant.ADD_AND_UPDATE, null); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, newCartGoods, null, ShoppingCartConstant.ADD_AND_UPDATE, null);
...@@ -149,6 +150,38 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -149,6 +150,38 @@ public class ShoppingCartMCoffeeServiceImpl {
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
private List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> checkGoodsCoupon(List<CartGoods> oldCartGoodsList,Integer operationType,String couponCode){
if(operationType != null && operationType == 1 && StringUtils.isBlank(couponCode)){
throw new ServiceException(ResponseResult.PARAMETER_MISSING,"商品券券号为空");
}
if(CollectionUtils.isEmpty(oldCartGoodsList) && StringUtils.isNotBlank(couponCode)){
throw new ServiceException(ResponseResult.PARAMETER_MISSING,"请先添加商品再使用商品券");
}
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if(CollectionUtils.isNotEmpty(oldCartGoodsList)){
for (CartGoods cartGoods : oldCartGoodsList){
//购物车已存在商品券
if(StringUtils.isNotBlank(cartGoods.getCouponCode())){
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
calculationDiscountCoupon.setCode(couponCode);
coupons.add(calculationDiscountCoupon);
}
if(couponCode != null && couponCode.equals(cartGoods.getCouponCode())){
throw new ServiceException(ResponseResult.PARAMETER_MISSING,"商品券已添加");
}
}
}
//新增商品券
if(StringUtils.isNotBlank(couponCode)){
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
calculationDiscountCoupon.setCode(couponCode);
coupons.add(calculationDiscountCoupon);
}
return coupons;
}
/** /**
* 更新商品数量 * 更新商品数量
* *
...@@ -267,9 +300,8 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -267,9 +300,8 @@ public class ShoppingCartMCoffeeServiceImpl {
*/ */
public BaseResponse availableCoupon(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public BaseResponse availableCoupon(ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if (StringUtils.isEmpty(shoppingCartInfoRequestVo.getShopId())) { if (StringUtils.isEmpty(shoppingCartInfoRequestVo.getShopId())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY); return ResponseUtil.error(ResponseResult.SHOPPING_CART_SHOP_ID_NOT_EMPTY);
} }
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
ActivityClassifyCouponBean availableCoupon = new ActivityClassifyCouponBean(); ActivityClassifyCouponBean availableCoupon = new ActivityClassifyCouponBean();
// 获取用户信息 // 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(shoppingCartInfoRequestVo.getSessionId()); CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(shoppingCartInfoRequestVo.getSessionId());
...@@ -277,6 +309,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -277,6 +309,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String partnerId = shoppingCartInfoRequestVo.getPartnerId(); String partnerId = shoppingCartInfoRequestVo.getPartnerId();
String storeId = shoppingCartInfoRequestVo.getShopId(); String storeId = shoppingCartInfoRequestVo.getShopId();
String appId = shoppingCartInfoRequestVo.getAppId(); String appId = shoppingCartInfoRequestVo.getAppId();
//非商品券券号
String couponCode = shoppingCartInfoRequestVo.getCouponCode(); String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode(); String activityCode = shoppingCartInfoRequestVo.getActivityCode();
String menuType = shoppingCartInfoRequestVo.getMenuType(); String menuType = shoppingCartInfoRequestVo.getMenuType();
...@@ -285,10 +318,11 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -285,10 +318,11 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品 // 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService);
if (CollectionUtils.isEmpty(cartGoodsList)) {
// 促销计算-查询用户券-券码校验可用券 return ResponseUtil.error(ResponseResult.SHOPPING_CART_ADD_INVAILD);
availableCoupon = calculationService.availableCoupon(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId,null, }
cartGoodsList, new ArrayList<>(), new ArrayList<>(), shoppingCartGoodsResponseVo); // 获取购物车商品-查询用户券-券码校验可用券
availableCoupon = couponDiscountCalculation.availableCoupon(partnerId, storeId, userId, couponCode,orderType,cartGoodsList);
return ResponseUtil.success(availableCoupon); return ResponseUtil.success(availableCoupon);
} }
...@@ -475,7 +509,13 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -475,7 +509,13 @@ public class ShoppingCartMCoffeeServiceImpl {
* @param shoppingCartGoodsResponseVo * @param shoppingCartGoodsResponseVo
*/ */
public List<CartGoods> updateCartGoodsLegal(String partnerId, String storeId, Integer orderType, String tableNumber, String menuType, String userId, public List<CartGoods> updateCartGoodsLegal(String partnerId, String storeId, Integer orderType, String tableNumber, String menuType, String userId,
CartGoods addCartGoods, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> newCartGoods) { CartGoods addCartGoods, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, List<CartGoods> oldCartGoodsList) {
List<CartGoods> newCartGoods = new ArrayList<>();
newCartGoods.addAll(oldCartGoodsList);
newCartGoods = checkNewCartGoods(newCartGoods, addCartGoods);
//筛选非加购商品--加价购商品不校验是否在菜单,不调用validateShopProduct
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品 //当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(newCartGoods, partnerId, CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(newCartGoods, partnerId,
storeId, shoppingCartGoodsResponseVo, orderType, "", menuType, shoppingCartBaseService); storeId, shoppingCartGoodsResponseVo, orderType, "", menuType, shoppingCartBaseService);
...@@ -484,6 +524,18 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -484,6 +524,18 @@ public class ShoppingCartMCoffeeServiceImpl {
shoppingCartGoodsResponseVo.setChanged(checkCartRequest.getShoppingCartGoodsResponseVo().getChanged()); shoppingCartGoodsResponseVo.setChanged(checkCartRequest.getShoppingCartGoodsResponseVo().getChanged());
} }
List<CartGoods> allCartGoodsList = JSONArray.parseArray(JSONObject.toJSONString(checkCartRequest.getCartGoodsList()), CartGoods.class); List<CartGoods> allCartGoodsList = JSONArray.parseArray(JSONObject.toJSONString(checkCartRequest.getCartGoodsList()), CartGoods.class);
//添加商品为商品券时,设置商品券号
if(StringUtils.isNotBlank(addCartGoods.getCouponCode())){
for (CartGoods cartGoods :allCartGoodsList){
if(cartGoods.getGoodsId().equals(addCartGoods.getGoodsId())){
cartGoods.setCouponCode(addCartGoods.getCouponCode());
cartGoods.setGoodsType(2);
break;
}
}
}
// 重新set购物车信息到缓存中 // 重新set购物车信息到缓存中
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, allCartGoodsList, null, tableNumber, this.shoppingCartBaseService); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, allCartGoodsList, null, tableNumber, this.shoppingCartBaseService);
return allCartGoodsList; return allCartGoodsList;
...@@ -557,9 +609,9 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -557,9 +609,9 @@ public class ShoppingCartMCoffeeServiceImpl {
Integer qty = addCartGoods.getQty() == null ? 0 : addCartGoods.getQty(); Integer qty = addCartGoods.getQty() == null ? 0 : addCartGoods.getQty();
boolean isadd = true; boolean isadd = true;
if (CollectionUtils.isNotEmpty(newCartGoods)) { if (CollectionUtils.isNotEmpty(newCartGoods) && StringUtils.isBlank(addCartGoods.getCouponCode())) {
for (CartGoods goods : newCartGoods) { for (CartGoods goods : newCartGoods) {
if (goods.getSkuId().equals(addCartGoods.getSkuId()) && goods.getSpuId().equals(addCartGoods.getSpuId())) { if (goods.getSkuId().equals(addCartGoods.getSkuId()) && goods.getSpuId().equals(addCartGoods.getSpuId()) && StringUtils.isBlank(goods.getCouponCode())) {
qty += goods.getQty(); qty += goods.getQty();
goods.setQty(qty); goods.setQty(qty);
isadd = false; isadd = false;
...@@ -644,4 +696,57 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -644,4 +696,57 @@ public class ShoppingCartMCoffeeServiceImpl {
// } // }
} }
public static CartGoods convent2CartGoods(MCoffeeAddGoodsRequestVo addShoppingCartGoodsRequestVo) {
String spuId = addShoppingCartGoodsRequestVo.getSpuId();
String skuId = addShoppingCartGoodsRequestVo.getSkuId();
String goodsId = StringUtils.isEmpty(skuId) ? spuId : skuId;
Integer qty = addShoppingCartGoodsRequestVo.getQty() == null ? 1 : addShoppingCartGoodsRequestVo.getQty();
CartGoods cartGoods = new CartGoods();
cartGoods.setGoodsId(goodsId);
cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId);
cartGoods.setQty(qty);
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode());
Integer goodsType = StringUtils.isEmpty(skuId)||ObjectUtils.equals(spuId,skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
goodsType = GoodsTypeEnum.COUPON_GOODS.getGoodsType();
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
}
if (addShoppingCartGoodsRequestVo.getOperationType() != null && addShoppingCartGoodsRequestVo.getOperationType() == 2) {
goodsType = GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType();
}
cartGoods.setGoodsType(goodsType);
cartGoods.setExtra(addShoppingCartGoodsRequestVo.getExtra());
cartGoods.setNodeId(addShoppingCartGoodsRequestVo.getNodeId());
cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName());
List<CartGoods.ComboxGoods> productComboList = new ArrayList<>();
List<CartGoods.ComboxGoods> productGroupList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList())) {
for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductComboList()) {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId());
productCombox.setQty(vo.getQty());
productCombox.setExtra(vo.getExtra());
productComboList.add(productCombox);
}
}
if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
for (ComboxGoodsRequestVo vo : addShoppingCartGoodsRequestVo.getProductGroupList()) {
CartGoods.ComboxGoods productCombox = new CartGoods.ComboxGoods();
productCombox.setGoodsId(vo.getSkuId());
productCombox.setSkuId(vo.getSkuId());
productCombox.setQty(vo.getQty());
productCombox.setExtra(vo.getExtra());
productCombox.setProductGroupId(StringUtils.isEmpty(vo.getProductGroupId()) ? null : Long.parseLong(vo.getProductGroupId()));
productGroupList.add(productCombox);
}
}
cartGoods.setProductComboList(productComboList);
cartGoods.setProductGroupList(productGroupList);
return cartGoods;
}
} }
...@@ -11,12 +11,10 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -11,12 +11,10 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
import cn.freemud.service.thirdparty.ActivityClient; import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
...@@ -27,7 +25,6 @@ import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest; ...@@ -27,7 +25,6 @@ import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -121,7 +118,7 @@ public class CalculationServiceImpl { ...@@ -121,7 +118,7 @@ public class CalculationServiceImpl {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getCustomerCode(),cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount()); addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getCustomerCode(),cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(),cartGoods);
} }
if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) { if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) {
...@@ -130,7 +127,7 @@ public class CalculationServiceImpl { ...@@ -130,7 +127,7 @@ public class CalculationServiceImpl {
// 当加价购商品不为空时 // 当加价购商品不为空时
if (CollectionUtils.isNotEmpty(sendGoodsList)) { if (CollectionUtils.isNotEmpty(sendGoodsList)) {
for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) { for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(), 100); this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(), 100,null);
} }
} }
calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0))); calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0)));
...@@ -345,7 +342,7 @@ public class CalculationServiceImpl { ...@@ -345,7 +342,7 @@ public class CalculationServiceImpl {
* @param originalPrice * @param originalPrice
*/ */
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList, private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList,
String goodsCode,String goodsId, Integer goodsQuantity, Long originalPrice, Integer memberDiscount) { String goodsCode,String goodsId, Integer goodsQuantity, Long originalPrice, Integer memberDiscount,CartGoods cartGoods) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods(); ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsCode(goodsCode); calculationDiscountGoods.setGoodsCode(goodsCode);
calculationDiscountGoods.setGoodsId(goodsId); calculationDiscountGoods.setGoodsId(goodsId);
...@@ -353,6 +350,21 @@ public class CalculationServiceImpl { ...@@ -353,6 +350,21 @@ public class CalculationServiceImpl {
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); calculationDiscountGoods.setMemberDiscount(memberDiscount);
//可选搭配
if (cartGoods != null && CollectionUtils.isNotEmpty(cartGoods.getProductGroupList())) {
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
for (CartGoods.ComboxGoods materialGoods : cartGoods.getProductGroupList()) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material material = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material();
material.setType(2);
material.setGoodsId(materialGoods.getGoodsId());
material.setGoodsQuantity(cartGoods.getQty());
material.setOriginalPrice(materialGoods.getFinalPrice());
materials.add(material);
}
calculationDiscountGoods.setSmallMaterial(materials);
}
//累加需加入计算的商品 //累加需加入计算的商品
int index; int index;
// 当商品已存在时,需累加数量 // 当商品已存在时,需累加数量
...@@ -387,31 +399,4 @@ public class CalculationServiceImpl { ...@@ -387,31 +399,4 @@ public class CalculationServiceImpl {
shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount()); shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount());
} }
/**
* 可选优惠券
*/
public ActivityClassifyCouponBean availableCoupon(String partnerId, String storeId, String userId, String appId, Integer orderType,
boolean isMember, String menuType, String receiveId,String couponCode,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo){
Long deliveryAmount = 0L;
QueryDeliverDetailResponse response = calculateDeliveryAmount(receiveId, partnerId, storeId, appId);
if(response != null){
shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(response.getDeliveryFeeZeroReason() != null ? response.getDeliveryFeeZeroReason() : 0);
deliveryAmount = response.getDeliveryAmount();
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscount = getCalculationDiscount(partnerId, storeId, userId, appId, orderType, isMember,
menuType, deliveryAmount, cartGoodsList, coupons, sendGoodsList);
//优惠券
CouponPromotionVO couponPromotionVO = couponDiscountCalculation.getCouponPromotionVO(partnerId, storeId, userId, couponCode, orderType);
couponDiscountCalculation.updateShoppingCartGoodsDiscount(couponPromotionVO,calculationDiscount,cartGoodsList, shoppingCartGoodsResponseVo);
return shoppingCartGoodsResponseVo.getAvailableCoupon();
}
} }
...@@ -19,9 +19,7 @@ import cn.freemud.service.thirdparty.CouponClient; ...@@ -19,9 +19,7 @@ import cn.freemud.service.thirdparty.CouponClient;
import cn.freemud.service.thirdparty.CustomerExtendClient; import cn.freemud.service.thirdparty.CustomerExtendClient;
import cn.freemud.utils.BarcodeUtil; import cn.freemud.utils.BarcodeUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.RedisUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.card.sdk.vo.coupon.CouponStateVo;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -75,25 +73,7 @@ public class CouponDiscountCalculation { ...@@ -75,25 +73,7 @@ public class CouponDiscountCalculation {
* 优惠计算 * 优惠计算
*/ */
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList());
// 是否存在商品券
boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
// 构建可用不可用优惠券
ActivityClassifyCouponBean activityClassifyCouponBean = availableCoupon(cartGoodsList, couponPromotionVO.getPartnerId()
, couponPromotionVO.getUserId(), couponPromotionVO.getStoreId(), couponPromotionVO.getCouponCode(), hasGoodssCoupon, couponPromotionVO.getOrderType());
if (Objects.equals(activityClassifyCouponBean, null)) {
// 构建一个空得订单券信息
activityClassifyCouponBean = new ActivityClassifyCouponBean();
activityClassifyCouponBean.setCouponNum(0);
activityClassifyCouponBean.setDisableCouponNum(0);
activityClassifyCouponBean.setUsableCouponNum(0);
activityClassifyCouponBean.setDisableCoupons(Lists.newArrayList());
activityClassifyCouponBean.setUsableCoupons(Lists.newArrayList());
}
shoppingCartGoodsResponseVo.setAvailableCoupon(activityClassifyCouponBean);
}
// 当couponCode不为空时,需计算优惠价格 // 当couponCode不为空时,需计算优惠价格
long couponDiscount = 0; long couponDiscount = 0;
...@@ -137,10 +117,38 @@ public class CouponDiscountCalculation { ...@@ -137,10 +117,38 @@ public class CouponDiscountCalculation {
} }
public void getCoupon(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo){
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
// 构建可用不可用优惠券
ActivityClassifyCouponBean activityClassifyCouponBean = availableCoupon(couponPromotionVO.getPartnerId()
, couponPromotionVO.getUserId(), couponPromotionVO.getStoreId(), couponPromotionVO.getCouponCode(), couponPromotionVO.getOrderType(),cartGoodsList);
if (Objects.equals(activityClassifyCouponBean, null)) {
// 构建一个空得订单券信息
activityClassifyCouponBean = new ActivityClassifyCouponBean();
activityClassifyCouponBean.setCouponNum(0);
activityClassifyCouponBean.setDisableCouponNum(0);
activityClassifyCouponBean.setUsableCouponNum(0);
activityClassifyCouponBean.setDisableCoupons(Lists.newArrayList());
activityClassifyCouponBean.setUsableCoupons(Lists.newArrayList());
}
shoppingCartGoodsResponseVo.setAvailableCoupon(activityClassifyCouponBean);
}
}
/**
* 可选优惠券
*/
public ActivityClassifyCouponBean availableCoupon( String partnerId, String storeId,String userId
, String couponCode, Integer orderType,List<CartGoods> cartGoods) {
List<CartGoods> tmpCartGoods = cartGoods.parallelStream().filter(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)).collect(Collectors.toList());
boolean hasGoodsCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
public ActivityClassifyCouponBean availableCoupon(List<CartGoods> cartGoods, String partnerId, String userId // 获取会员服务的优惠券列表
, String storeId, String couponCode, boolean hasGoodsCoupon, Integer orderType) {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, userId); GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(partnerId, userId);
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode())); getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode()));
getMemberCouponListRequestDto.setPageNum(1); getMemberCouponListRequestDto.setPageNum(1);
...@@ -163,10 +171,15 @@ public class CouponDiscountCalculation { ...@@ -163,10 +171,15 @@ public class CouponDiscountCalculation {
List<String> couponCodes = Lists.newArrayList(); List<String> couponCodes = Lists.newArrayList();
memberCoupons.forEach(memberCoupon -> { memberCoupons.forEach(memberCoupon -> {
// 只筛选小于结束时间得券 // 只筛选小于结束时间得券
// if (Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_1.getCode())
// || Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_3.getCode())) {
// 只筛选小于结束时间得券
if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) { if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) {
couponCodes.add(memberCoupon.getCouponCode()); couponCodes.add(memberCoupon.getCouponCode());
} }
// }
}); });
List<CouponState> couponStateList = buildAvailableCoupons(cartGoods, partnerId, storeId, couponCodes); List<CouponState> couponStateList = buildAvailableCoupons(cartGoods, partnerId, storeId, couponCodes);
if (CollectionUtils.isEmpty(couponStateList)) { if (CollectionUtils.isEmpty(couponStateList)) {
return null; return null;
...@@ -304,6 +317,10 @@ public class CouponDiscountCalculation { ...@@ -304,6 +317,10 @@ public class CouponDiscountCalculation {
int usableCouponNum = 0; int usableCouponNum = 0;
for (CouponState couponStateVo : couponStateList) { for (CouponState couponStateVo : couponStateList) {
// 过滤0得代金券 // 过滤0得代金券
if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_0.getCode())) {
continue;
}
// 过滤0得代金券
if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode()) if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode())
&& (couponStateVo.getOriginalPrice() == null && (couponStateVo.getOriginalPrice() == null
|| couponStateVo.getOriginalPrice() == 0)) { || couponStateVo.getOriginalPrice() == 0)) {
...@@ -382,79 +399,6 @@ public class CouponDiscountCalculation { ...@@ -382,79 +399,6 @@ public class CouponDiscountCalculation {
return availableCouponResponseVo; return availableCouponResponseVo;
} }
private ActivityClassifyCouponBean returnAvailableCoupons(String couponCode,ActivityClassifyCouponBean availableCouponResponseVo, Map<String, GetMemberCouponListResponseDto.Result.MemberCoupon> memberCouponMap,
// List<CouponStateVo> couponStateList,
List<GetMemberCouponListResponseDto.Result.MemberCoupon> memberCoupons) {
int disableCouponNum = 0;
int usableCouponNum = 0;
// 可用优惠券信息
List<ActivityCouponBean> usableCoupons = Lists.newArrayList();
for (GetMemberCouponListResponseDto.Result.MemberCoupon couponStateVo : memberCoupons) {
// // 过滤0得代金券
// if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode())
// && (couponStateVo.getOriginalPrice() == null
// || couponStateVo.getOriginalPrice() == 0)) {
// continue;
// }
//
// // 过滤折扣券为0折得
// if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_3.getCode())
// && (couponStateVo.getDiscount() == null
// || couponStateVo.getDiscount() == 0)) {
// continue;
// }
ActivityCouponBean activityCouponBean = new ActivityCouponBean();
activityCouponBean.setCouponCode(couponStateVo.getCouponCode());
GetMemberCouponListResponseDto.Result.MemberCoupon memberCoupon = memberCouponMap.get(couponStateVo.getCouponCode());
if (memberCoupon != null) {
activityCouponBean.setCouponName(memberCoupon.getCouponName());
activityCouponBean.setEndTime(memberCoupon.getEndTime());
if (Objects.equals(couponStateVo.getCouponType(), CouponTypeEnum.TYPE_1.getCode())) {
activityCouponBean.setDiscountAmount(couponStateVo.getOriginalPrice() + "");
}
activityCouponBean.setThresholdDesc("满" + formatAmount((couponStateVo.getMinAmount() == null ? 0 : couponStateVo.getMinAmount()) * 1.00 / 100) + "元可用");
activityCouponBean.setActivityDesc("不与其他活动优惠同时享受。");
activityCouponBean.setUnusedReason(couponStateVo.getRemark());
// 详情
GetMemberCouponListResponseVo.MemberCouponDetail detail = new GetMemberCouponListResponseVo.MemberCouponDetail();
detail.setActivityName(memberCoupon.getCouponName());
String startDate = DateUtil.convert2String(DateUtil.convert2Date(memberCoupon.getStartTime(), DateUtil.FORMAT_yyyyMMdd_date), DateUtil.FORMAT_yyyyMMdd_date).replace("-", ".");
String endDate = DateUtil.convert2String(DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_yyyyMMdd_date), DateUtil.FORMAT_yyyyMMdd_date).replace("-", ".");
detail.setEndTime(endDate);
detail.setStartTime(startDate);
String remark = memberCoupon.getActiveDesc();
detail.setRemark(couponAdapter.getDescribeText(remark));
if (Objects.equals(couponStateVo.getCouponType(), CouponTypeEnum.TYPE_1.getCode())) {
detail.setAmountDesc("满" + formatAmount((couponStateVo.getMinAmount() == null ? 0 : couponStateVo.getMinAmount()) * 1.00 / 100) + "元减" + formatAmount((couponStateVo.getOriginalPrice() == null ? 0 : couponStateVo.getOriginalPrice()) * 1.00 / 100) + "元");
}
// 设置条形码
GetCouponBarCodeResponseVo responseVo = this.getCouponBarCode(couponStateVo.getCouponCode());
detail.setCouponBarCode(responseVo.getBase64Image());
activityCouponBean.setDetail(detail);
activityCouponBean.setActivityCode(memberCoupon.getActivityCode());
activityCouponBean.setCouponType(couponStateVo.getCouponType());
activityCouponBean.setDateDescribe(couponAdapter.getDateDescribe(memberCoupon.getStatus(), memberCoupon.getStartTime(), memberCoupon.getEndTime()));
// 券状态 0 可用 1 不可用 2 限制可用
if (Objects.equals(activityCouponBean.getCouponCode(), couponCode)) {
activityCouponBean.setSelected(YesOrNoEnum.YES.getCode());
} else {
activityCouponBean.setSelected(YesOrNoEnum.NO.getCode());
}
usableCoupons.add(activityCouponBean);
usableCouponNum = usableCouponNum + 1;
}
}
availableCouponResponseVo.setCouponNum(disableCouponNum + usableCouponNum);
availableCouponResponseVo.setDisableCouponNum(disableCouponNum);
availableCouponResponseVo.setUsableCouponNum(usableCouponNum);
availableCouponResponseVo.setDisableCoupons(null);
availableCouponResponseVo.setUsableCoupons(usableCoupons);
return availableCouponResponseVo;
}
public GetCouponBarCodeResponseVo getCouponBarCode(String couponCode) { public GetCouponBarCodeResponseVo getCouponBarCode(String couponCode) {
byte[] bytes = BarcodeUtil.generateBarCode128(couponCode, 6D, null, true, false); byte[] bytes = BarcodeUtil.generateBarCode128(couponCode, 6D, null, true, false);
String base64Image = Base64.getEncoder().encodeToString(bytes); String base64Image = Base64.getEncoder().encodeToString(bytes);
......
package cn.freemud.service.impl.mcoffee.entity;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ComboxGoodsRequestVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: MCoffeeAddGoodsRequestVo
* @Package cn.freemud.service.impl.mcoffee.entity
* @Description:
* @author: ping1.wu
* @date: 2020/8/8 21:04
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class MCoffeeAddGoodsRequestVo {
@NotEmpty(message = "sessionId不能为空")
private String sessionId;
/**
* 商户Id
*/
@NotEmpty(message = "partnerId不能为空")
private String partnerId;
/**
* 微信appId
*/
@NotEmpty(message = "appId不能为空")
private String appId;
/**
* 门店Id
* 商城没有门店id,如果需要门店id必传在业务中进行校验
*/
//@NotEmpty(message = "shopId不能为空")
private String shopId;
/**
* 下单类型 CreateOrderType 外卖、到店、商城
*/
private Integer orderType;
/**
* 渠道类型 OrderChannelType
*/
private String channelType;
private String spuId;
private String skuId;
/**
* 商品额外的属性
*/
private List<CartGoods.CartGoodsExtra> extra;
private String version;
/**
* 1.6.0 版本增加 节点ID
*/
private String nodeId;
/**
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 套餐固定商品
*/
private List<ComboxGoodsRequestVo> productComboList;
/**
* 套餐可选商品
*/
private List<ComboxGoodsRequestVo> productGroupList;
private String appType;
private String tableNumber;
/**
* 数量
*/
private Integer qty;
/**
* 业务类型: 0 : 自提 1:外卖 2:微商城
*/
private String menuType ;
/**
* 收货地址ID、svc卡支付外卖订单必传
*/
private String receiveId;
/**
* 操作类型 1= 添加商品券 2=加价购
*/
private Integer operationType;
/**
* 优惠券号
*/
private String couponCode;
}
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