Commit b492fd51 by 王世昌

添加用券来源的判断

parent ddfbdfdf
...@@ -6,14 +6,21 @@ import cn.freemud.demo.entities.bo.goods.CheckBussinessRulesBO; ...@@ -6,14 +6,21 @@ import cn.freemud.demo.entities.bo.goods.CheckBussinessRulesBO;
import cn.freemud.demo.utils.CommonUtils; import cn.freemud.demo.utils.CommonUtils;
import cn.freemud.entities.dto.CheckSpqInfoRequestDto; import cn.freemud.entities.dto.CheckSpqInfoRequestDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto; import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.GetMemberCouponListRequestDto;
import cn.freemud.entities.dto.GetMemberCouponListResponseDto;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.GoodsTypeEnum; import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -24,52 +31,68 @@ public class CheckAdapter { ...@@ -24,52 +31,68 @@ public class CheckAdapter {
@Autowired @Autowired
private CouponService couponService; private CouponService couponService;
public void adapter(CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO, CheckAdapterBO bo){ public void adapter(CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO, CheckAdapterBO bo) {
// 校验后有效的商品券map // 校验后有效的商品券map
List<CartGoods> cartGoodsList = addGoodsToShoppingCartBO.getCartGoods(); List<CartGoods> cartGoodsList = addGoodsToShoppingCartBO.getCartGoods();
HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16); HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16);
HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16); HashMap<String, List<String>> spqIdToCartUuid = new HashMap<>(16);
for (int i = 0; i < cartGoodsList.size(); i++){
CartGoods cartGoods = cartGoodsList.get(i);
if (CommonUtils.isProductCoupon(cartGoods.getCouponCode(), cartGoods.getCartGoodsUid())){ // 校验后有效的商品券map
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(bo.getPartnerId(), bo.getUserId());
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode(), CouponStatus.STATUS_2.getCode()));
getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
List<GetMemberCouponListResponseDto.Result.MemberCoupon> validMemberCouponList = couponService.getValidMemberCouponList(getMemberCouponListRequestDto, bo.getOrderType());
String couponCode = CommonUtils.getCouponCode(cartGoods.getCouponCode(), cartGoods.getCartGoodsUid()); if (CollectionUtils.isEmpty(validMemberCouponList)) {
boolean useCoupon = true; // 优惠券放在coupon字段而不是uuid中 throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){ }
useCoupon = false; for (int i = 0; i < cartGoodsList.size(); i++) {
} CartGoods cartGoods = cartGoodsList.get(i);
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(bo.getPartnerId(), bo.getShopId(), couponCode, bo.getMenuType()); if (CommonUtils.isProductCoupon(cartGoods.getCouponCode(), cartGoods.getCartGoodsUid())) {
CheckSpqInfoResponseDto checkSpqInfo = null; continue;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { }
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); String couponCode = CommonUtils.getCouponCode(cartGoods.getCouponCode(), cartGoods.getCartGoodsUid());
} else { GetMemberCouponListResponseDto.Result.MemberCoupon memberCoupon = validMemberCouponList.stream().filter(p -> couponCode.equals(p.getCouponCode())).findFirst().orElse(null);
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto); if (memberCoupon == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
// 优惠券放在coupon字段而不是uuid中
boolean useCoupon = true;
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
useCoupon = false;
}
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(bo.getPartnerId(), bo.getShopId(), couponCode, bo.getMenuType());
CheckSpqInfoResponseDto checkSpqInfo = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
} else {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto);
}
if (null == checkSpqInfo) {
cartGoodsList.remove(i--);
} else {
cartGoods.setActivityCode(checkSpqInfo.getActiveCode());
cartGoods.setCouponProductPrice(checkSpqInfo.getPrice());
validCouponMap.put(couponCode, checkSpqInfo);
if (useCoupon) {
validCouponMap.put(couponCode + checkSpqInfo.getSkuId(), checkSpqInfo);
} }
if (null == checkSpqInfo) { if (spqIdToCartUuid.containsKey(couponCode)) {
cartGoodsList.remove(i); List<String> uuidList = spqIdToCartUuid.get(couponCode);
uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList);
} else { } else {
cartGoods.setActivityCode(checkSpqInfo.getActiveCode()); List<String> uuidList = new ArrayList<>();
cartGoods.setCouponProductPrice(checkSpqInfo.getPrice()); uuidList.add(cartGoods.getCartGoodsUid());
validCouponMap.put(couponCode, checkSpqInfo); spqIdToCartUuid.put(couponCode, uuidList);
if(useCoupon){
validCouponMap.put(couponCode + checkSpqInfo.getSkuId(), checkSpqInfo);
}
if (spqIdToCartUuid.containsKey(couponCode)){
List<String> uuidList = spqIdToCartUuid.get(couponCode);
uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList);
} else {
List<String> uuidList = new ArrayList<>();
uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList);
}
addGoodsToShoppingCartBO.setSpqIdToCartUuidMap(spqIdToCartUuid);
addGoodsToShoppingCartBO.setValidCouponMap(validCouponMap);
} }
addGoodsToShoppingCartBO.setSpqIdToCartUuidMap(spqIdToCartUuid);
addGoodsToShoppingCartBO.setValidCouponMap(validCouponMap);
} }
} }
} }
} }
package cn.freemud.demo.entities.bo;
import lombok.Data;
/**
* @version: 1.0
* @Description: TODO
* @author: WangShiChang
* @date: 2021/6/7 下午5:59
* @Copyright: www.freemud.cn Inc.
*/
@Data
public class Attribute {
private String attributeId;
private String attributeValue;
}
...@@ -10,5 +10,7 @@ public class CheckAdapterBO { ...@@ -10,5 +10,7 @@ public class CheckAdapterBO {
private String menuType; private String menuType;
private String couponCode; private String couponCode;
private Integer orderType;
private String userId;
} }
...@@ -3,6 +3,7 @@ package cn.freemud.demo.entities.bo; ...@@ -3,6 +3,7 @@ package cn.freemud.demo.entities.bo;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
@Data @Data
public class SendGoods { public class SendGoods {
...@@ -21,4 +22,5 @@ public class SendGoods { ...@@ -21,4 +22,5 @@ public class SendGoods {
private Integer qty; private Integer qty;
private String activityCode; private String activityCode;
private List<Attribute> attributes;
} }
...@@ -99,6 +99,8 @@ public class PlatformAddGoodsService extends AbstractAddGoodsService { ...@@ -99,6 +99,8 @@ public class PlatformAddGoodsService extends AbstractAddGoodsService {
bo.setPartnerId(baseRequestDTO.getPartnerId()); bo.setPartnerId(baseRequestDTO.getPartnerId());
bo.setShopId(baseRequestDTO.getShopId()); bo.setShopId(baseRequestDTO.getShopId());
bo.setCouponCode(baseRequestDTO.getCouponCode()); bo.setCouponCode(baseRequestDTO.getCouponCode());
bo.setUserId(baseRequestDTO.getUserId());
bo.setOrderType(baseRequestDTO.getOrderType());
checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo); checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo);
return addGoodsToShoppingCartBO; return addGoodsToShoppingCartBO;
} }
......
...@@ -108,6 +108,8 @@ public class PlatformApportionService extends AbstractApportionService { ...@@ -108,6 +108,8 @@ public class PlatformApportionService extends AbstractApportionService {
bo.setPartnerId(baseRequestDTO.getPartnerId()); bo.setPartnerId(baseRequestDTO.getPartnerId());
bo.setShopId(baseRequestDTO.getShopId()); bo.setShopId(baseRequestDTO.getShopId());
bo.setCouponCode(baseRequestDTO.getCouponCode()); bo.setCouponCode(baseRequestDTO.getCouponCode());
bo.setUserId(baseRequestDTO.getUserId());
bo.setOrderType(baseRequestDTO.getOrderType());
checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo); checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo);
return addGoodsToShoppingCartBO; return addGoodsToShoppingCartBO;
} }
......
...@@ -122,6 +122,8 @@ public class PlatformListCartGoodsService extends AbstractListCartGoodsService { ...@@ -122,6 +122,8 @@ public class PlatformListCartGoodsService extends AbstractListCartGoodsService {
bo.setPartnerId(baseRequestDTO.getPartnerId()); bo.setPartnerId(baseRequestDTO.getPartnerId());
bo.setShopId(baseRequestDTO.getShopId()); bo.setShopId(baseRequestDTO.getShopId());
bo.setCouponCode(baseRequestDTO.getCouponCode()); bo.setCouponCode(baseRequestDTO.getCouponCode());
bo.setUserId(baseRequestDTO.getUserId());
bo.setOrderType(baseRequestDTO.getOrderType());
checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo); checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo);
return addGoodsToShoppingCartBO; return addGoodsToShoppingCartBO;
......
...@@ -110,6 +110,8 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService ...@@ -110,6 +110,8 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService
bo.setPartnerId(baseRequestDTO.getPartnerId()); bo.setPartnerId(baseRequestDTO.getPartnerId());
bo.setShopId(baseRequestDTO.getShopId()); bo.setShopId(baseRequestDTO.getShopId());
bo.setCouponCode(baseRequestDTO.getCouponCode()); bo.setCouponCode(baseRequestDTO.getCouponCode());
bo.setUserId(baseRequestDTO.getUserId());
bo.setOrderType(baseRequestDTO.getOrderType());
checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo); checkAdapter.adapter(checkBussinessRulesBO, addGoodsToShoppingCartBO, bo);
return addGoodsToShoppingCartBO; return addGoodsToShoppingCartBO;
......
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