Commit db41137e by 周晓航

后端校验 券互斥性

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent b4bc2d76
...@@ -20,6 +20,7 @@ import cn.freemud.demo.controller.ShoppingCartDemoController; ...@@ -20,6 +20,7 @@ import cn.freemud.demo.controller.ShoppingCartDemoController;
import cn.freemud.entities.dto.GetMemberInfoRequestDto; import cn.freemud.entities.dto.GetMemberInfoRequestDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo; import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.service.OpenStoreIappWxappConfigService; import cn.freemud.service.OpenStoreIappWxappConfigService;
...@@ -36,11 +37,10 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; ...@@ -36,11 +37,10 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
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;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFacade;
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;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -49,6 +49,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Map; import java.util.Map;
@RestController @RestController
...@@ -117,6 +118,15 @@ public class ShoppingCartController { ...@@ -117,6 +118,15 @@ public class ShoppingCartController {
@PostMapping(value = "/listCartGoods") @PostMapping(value = "/listCartGoods")
@LogIgnore(logMessage = "listCartGoods") @LogIgnore(logMessage = "listCartGoods")
public BaseResponse listCartGoods(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) { public BaseResponse listCartGoods(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) {
// 代金券 & 折扣券互斥校验
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = request.getCouponCodes();
if (CollectionUtils.isNotEmpty(couponCodes) && couponCodes.size() > 1) {
long count = couponCodes.stream().filter(c -> c.getCouponType().compareTo(CouponTypeEnum.TYPE_1.getCode()) == 0
|| c.getCouponType().compareTo(CouponTypeEnum.TYPE_3.getCode()) == 0).count();
if (count > 2) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_MUTUAL_EXCLUSION);
}
}
ShoppingCartNewService instanceByRequest = getInstanceByRequest(request); ShoppingCartNewService instanceByRequest = getInstanceByRequest(request);
if (instanceByRequest instanceof ShoppingCartNewServiceImpl && SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).newShoppingCartGray(request.getPartnerId(), request.getShopId())){ if (instanceByRequest instanceof ShoppingCartNewServiceImpl && SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).newShoppingCartGray(request.getPartnerId(), request.getShopId())){
Map requestMap = mapperFacade.map(request, Map.class); Map requestMap = mapperFacade.map(request, Map.class);
...@@ -133,6 +143,15 @@ public class ShoppingCartController { ...@@ -133,6 +143,15 @@ public class ShoppingCartController {
@PostMapping(value = "/listCartGoodsCheck") @PostMapping(value = "/listCartGoodsCheck")
@LogIgnore(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},logMessage = "listCartGoodsCheck") @LogIgnore(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},logMessage = "listCartGoodsCheck")
public BaseResponse listCartGoodsCheck(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) { public BaseResponse listCartGoodsCheck(@Validated @LogParams @RequestBody ShoppingCartInfoRequestVo request) {
// 代金券 & 折扣券互斥校验
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = request.getCouponCodes();
if (CollectionUtils.isNotEmpty(couponCodes) && couponCodes.size() > 1) {
long count = couponCodes.stream().filter(c -> c.getCouponType().compareTo(CouponTypeEnum.TYPE_1.getCode()) == 0
|| c.getCouponType().compareTo(CouponTypeEnum.TYPE_3.getCode()) == 0).count();
if (count > 2) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_MUTUAL_EXCLUSION);
}
}
return getInstanceByRequest(request).getGoodsListCheck(request); return getInstanceByRequest(request).getGoodsListCheck(request);
} }
......
...@@ -107,6 +107,7 @@ public enum ResponseResult { ...@@ -107,6 +107,7 @@ public enum ResponseResult {
SHOPPING_CART_USER_HAVE_NO_COUPON("44039", "使用的商品券已失效,请重新下单"), SHOPPING_CART_USER_HAVE_NO_COUPON("44039", "使用的商品券已失效,请重新下单"),
SHOPPING_CART_REPLACE_GOODS("44040", "原有购物车没有商品"), SHOPPING_CART_REPLACE_GOODS("44040", "原有购物车没有商品"),
SHOPPING_CART_REPLACE_GOODS_AND_CLEAR("44041", "因部分商品当前门店暂未售卖,将从购物车移除"), SHOPPING_CART_REPLACE_GOODS_AND_CLEAR("44041", "因部分商品当前门店暂未售卖,将从购物车移除"),
SHOPPING_CART_COUPON_MUTUAL_EXCLUSION("44042", "代金券和折扣券互斥"),
/** /**
* 订单状态码 * 订单状态码
......
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