Commit d99cc04a by ping.wu

套餐优惠计算

parent 834b8079
...@@ -46,6 +46,11 @@ public class CartGoods { ...@@ -46,6 +46,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;
/** /**
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>productcenter-sdk</artifactId> <artifactId>productcenter-sdk</artifactId>
<version>3.2.RELEASE</version> <version>3.2.RELEASE</version> <!-- //3.6.4-SNAPSHOTE -->
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter { ...@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter {
public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoods(CartGoods cartGoods, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList, Map<String, String> duplicateGoodsMap) { public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoods(CartGoods cartGoods, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList, Map<String, String> duplicateGoodsMap) {
// 设置基础信息 // 设置基础信息
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto(); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
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());
...@@ -345,6 +346,7 @@ public class ShoppingCartConvertAdapter { ...@@ -345,6 +346,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);
} }
......
...@@ -222,6 +222,11 @@ public class ShoppingCartGoodsDto { ...@@ -222,6 +222,11 @@ public class ShoppingCartGoodsDto {
* 统计分类名称 * 统计分类名称
*/ */
private String classificationName; private String classificationName;
/**
* 税率
*/
private Double tas;
/** /**
* 配料或属性 * 配料或属性
*/ */
......
...@@ -19,7 +19,8 @@ public enum GoodsTypeEnum { ...@@ -19,7 +19,8 @@ public enum GoodsTypeEnum {
COUPON_GOODS(2, "商品券"), COUPON_GOODS(2, "商品券"),
SET_MEAL_GOODS(3,"套餐商品"), SET_MEAL_GOODS(3,"套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"); SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"加价购商品");
private Integer goodsType; private Integer goodsType;
private String desc; private String desc;
......
...@@ -10,16 +10,14 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; ...@@ -10,16 +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.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;
...@@ -84,7 +82,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -84,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);
...@@ -107,22 +105,26 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -107,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);
...@@ -134,16 +136,13 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -134,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);
...@@ -151,6 +150,38 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -151,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;
}
/** /**
* 更新商品数量 * 更新商品数量
* *
...@@ -269,7 +300,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -269,7 +300,7 @@ 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);
} }
ActivityClassifyCouponBean availableCoupon = new ActivityClassifyCouponBean(); ActivityClassifyCouponBean availableCoupon = new ActivityClassifyCouponBean();
// 获取用户信息 // 获取用户信息
...@@ -287,7 +318,9 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -287,7 +318,9 @@ 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 = couponDiscountCalculation.availableCoupon(partnerId, storeId, userId, couponCode,orderType,cartGoodsList); availableCoupon = couponDiscountCalculation.availableCoupon(partnerId, storeId, userId, couponCode,orderType,cartGoodsList);
return ResponseUtil.success(availableCoupon); return ResponseUtil.success(availableCoupon);
...@@ -476,7 +509,13 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -476,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);
...@@ -485,6 +524,18 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -485,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;
...@@ -558,9 +609,9 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -558,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;
...@@ -645,4 +696,57 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -645,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;
}
} }
...@@ -171,10 +171,15 @@ public class CouponDiscountCalculation { ...@@ -171,10 +171,15 @@ public class CouponDiscountCalculation {
List<String> couponCodes = Lists.newArrayList(); List<String> couponCodes = Lists.newArrayList();
memberCoupons.forEach(memberCoupon -> { memberCoupons.forEach(memberCoupon -> {
// 只筛选小于结束时间得券 // 只筛选小于结束时间得券
if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) { // if (Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_1.getCode())
couponCodes.add(memberCoupon.getCouponCode()); // || Objects.equals(memberCoupon.getCouponType(), CouponTypeEnum.TYPE_3.getCode())) {
} // 只筛选小于结束时间得券
if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) {
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;
...@@ -312,6 +317,10 @@ public class CouponDiscountCalculation { ...@@ -312,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)) {
......
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