Commit bb06dc67 by chongfu.liang

Merge branch 'feature/20210420-订单在下单时需要校验券的归属-lcf'

parents f56ee348 47d9bac8
...@@ -10,6 +10,7 @@ public class ResponseCodeConstant { ...@@ -10,6 +10,7 @@ public class ResponseCodeConstant {
public final static String RESPONSE_SUCCESS_STR = "100"; public final static String RESPONSE_SUCCESS_STR = "100";
public final static String COCO_RESPONSE_COUPON_ERR_STR = "49000"; public final static String COCO_RESPONSE_COUPON_ERR_STR = "49000";
public final static String USER_HAVE_NO_COUPON = "44039";
public final static String RESPONSE_SUCCESS_OK = "ok"; public final static String RESPONSE_SUCCESS_OK = "ok";
public final static Integer RESPONSE_SUCCESS_1 = 1; public final static Integer RESPONSE_SUCCESS_1 = 1;
......
...@@ -198,6 +198,7 @@ public enum ResponseResult { ...@@ -198,6 +198,7 @@ public enum ResponseResult {
COUPON_INVAILD("46014", "优惠券失效",""), COUPON_INVAILD("46014", "优惠券失效",""),
COUPON_DATETIME_INVAILD("46015", "优惠券在当前时间不可用",""), COUPON_DATETIME_INVAILD("46015", "优惠券在当前时间不可用",""),
COUPON_ORDER_ORIGINAL_AMOUNT_NOT_ENOUGH("46016","优惠券不满足可用金额门槛",""), COUPON_ORDER_ORIGINAL_AMOUNT_NOT_ENOUGH("46016","优惠券不满足可用金额门槛",""),
SHOPPING_CART_USER_HAVE_NO_COUPON("46017", "使用的商品券已失效,请重新下单",""),
/** /**
* 加价购商品 * 加价购商品
*/ */
......
...@@ -634,6 +634,9 @@ public class CheckOrder { ...@@ -634,6 +634,9 @@ public class CheckOrder {
if (ObjectUtils.equals(ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR, apportionResponse.getCode())) { if (ObjectUtils.equals(ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR, apportionResponse.getCode())) {
throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL,apportionResponse.getMessage()); throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL,apportionResponse.getMessage());
} }
if (ObjectUtils.equals(ResponseCodeConstant.USER_HAVE_NO_COUPON, apportionResponse.getCode())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON,apportionResponse.getMessage());
}
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, apportionResponse.getCode())) { if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, apportionResponse.getCode())) {
ResponseResult responseResult = ResponseResult.getResponseResult(apportionResponse.getCode()); ResponseResult responseResult = ResponseResult.getResponseResult(apportionResponse.getCode());
...@@ -647,6 +650,7 @@ public class CheckOrder { ...@@ -647,6 +650,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD); throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
} }
// 拼单处理 // 拼单处理
if (this.isCollageOrder(createOrderVo)) { if (this.isCollageOrder(createOrderVo)) {
// 处理拼单加购人信息 // 处理拼单加购人信息
......
...@@ -11,6 +11,8 @@ import cn.freemud.demo.service.impl.AbstractApportionService; ...@@ -11,6 +11,8 @@ import cn.freemud.demo.service.impl.AbstractApportionService;
import cn.freemud.demo.service.impl.DeliveryService; import cn.freemud.demo.service.impl.DeliveryService;
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.ActivityClassifyCouponBean; import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
...@@ -204,12 +206,27 @@ public class PlatformApportionService extends AbstractApportionService { ...@@ -204,12 +206,27 @@ public class PlatformApportionService extends AbstractApportionService {
@Override @Override
public AddGoodsToShoppingCartBO checkCustomBusinessRules(ShoppingCartGoodsApportionBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO) { public AddGoodsToShoppingCartBO checkCustomBusinessRules(ShoppingCartGoodsApportionBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO) {
List<CartGoods> cartGoodsList = addGoodsToShoppingCartBO.getCartGoods(); List<CartGoods> cartGoodsList = addGoodsToShoppingCartBO.getCartGoods();
// 校验后有效的商品券map
HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16); HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16);
// 校验后有效的商品券map
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(baseRequestDTO.getPartnerId(), baseRequestDTO.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, baseRequestDTO.getOrderType());
for (int i = 0; i < cartGoodsList.size(); i++){ for (int i = 0; i < cartGoodsList.size(); i++){
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){ if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)){
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
if (CollectionUtils.isEmpty(validMemberCouponList)){
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
} else {
String finalCouponCode = spqId;
GetMemberCouponListResponseDto.Result.MemberCoupon memberCoupon = validMemberCouponList.stream().filter(p -> finalCouponCode.equals(p.getCouponCode())).findFirst().orElse(null);
if (memberCoupon == null){
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
}
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(baseRequestDTO.getPartnerId(), baseRequestDTO.getShopId(), spqId, baseRequestDTO.getMenuType()); CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(baseRequestDTO.getPartnerId(), baseRequestDTO.getShopId(), spqId, baseRequestDTO.getMenuType());
CheckSpqInfoResponseDto checkSpqInfo = null; CheckSpqInfoResponseDto checkSpqInfo = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
......
...@@ -103,6 +103,7 @@ public enum ResponseResult { ...@@ -103,6 +103,7 @@ public enum ResponseResult {
SHOPPING_CART_COUPON_MIX_NOT_EXIST("44034", "券商品不存在"), SHOPPING_CART_COUPON_MIX_NOT_EXIST("44034", "券商品不存在"),
SHOPPING_CART_QTY_LIMIT_ERR("44035", "该商品单次购买数量限制为10,请知晓"), SHOPPING_CART_QTY_LIMIT_ERR("44035", "该商品单次购买数量限制为10,请知晓"),
SHOPPING_CART_MATERIA_QTY_LIMIT_ERR("44038", "商品加料超过最大限制"), SHOPPING_CART_MATERIA_QTY_LIMIT_ERR("44038", "商品加料超过最大限制"),
SHOPPING_CART_USER_HAVE_NO_COUPON("44039", "使用的商品券已失效,请重新下单"),
/** /**
* 订单状态码 * 订单状态码
......
...@@ -14,10 +14,7 @@ ...@@ -14,10 +14,7 @@
package cn.freemud.service; package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.ActivityDiscountDto; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.CheckSpqInfoRequestDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import java.util.List; import java.util.List;
...@@ -48,6 +45,8 @@ public interface CouponService { ...@@ -48,6 +45,8 @@ public interface CouponService {
*/ */
GetCouponDetailResponseDto getMemberCoupon(GetMemberCouponRequestVo requestVo); GetCouponDetailResponseDto getMemberCoupon(GetMemberCouponRequestVo requestVo);
List<GetMemberCouponListResponseDto.Result.MemberCoupon> getValidMemberCouponList(GetMemberCouponListRequestDto getMemberCouponListRequestDto, Integer orderType);
/** /**
* 批次查询券详情 * 批次查询券详情
* *
...@@ -129,4 +128,6 @@ public interface CouponService { ...@@ -129,4 +128,6 @@ public interface CouponService {
* 返回 key = 活动code, value= 返回是否匹配点餐方式 * 返回 key = 活动code, value= 返回是否匹配点餐方式
*/ */
Map<String, Boolean> couponOrderWay(String partnerId, List<String> activityCodes, Integer orderTye); Map<String, Boolean> couponOrderWay(String partnerId, List<String> activityCodes, Integer orderTye);
void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList);
} }
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto; import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
...@@ -130,6 +129,18 @@ public class CouponPromotionService implements IPromotionService { ...@@ -130,6 +129,18 @@ public class CouponPromotionService implements IPromotionService {
useCoupon = false; useCoupon = false;
} }
if (StringUtils.isNotBlank(couponCode)) { if (StringUtils.isNotBlank(couponCode)) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setUserId(userLoginInfoDto.getMemberId());
couponPromotionVO.setStoreId(activityQueryDto.getStoreId());
couponPromotionVO.setPartnerId(activityQueryDto.getPartnerId());
couponPromotionVO.setOrderType(activityQueryDto.getOrderType());
}
couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null; CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
......
...@@ -61,6 +61,7 @@ import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo; ...@@ -61,6 +61,7 @@ import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.freemud.card.sdk.vo.coupon.response.MemberBaseRespVo; import com.freemud.card.sdk.vo.coupon.response.MemberBaseRespVo;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -130,6 +131,10 @@ public class CouponServiceImpl implements CouponService { ...@@ -130,6 +131,10 @@ public class CouponServiceImpl implements CouponService {
private String couponPartnerId; private String couponPartnerId;
@Autowired @Autowired
private CouponAdapterClient couponAdaptClient; private CouponAdapterClient couponAdaptClient;
@Autowired
private AssortmentSdkService assortmentSdkService;
@Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService;
/** /**
* 获取优惠券列表 * 获取优惠券列表
...@@ -236,6 +241,29 @@ public class CouponServiceImpl implements CouponService { ...@@ -236,6 +241,29 @@ public class CouponServiceImpl implements CouponService {
return null; return null;
} }
/**
* 获取会员服务的优惠券列表
*
* @param getMemberCouponListRequestDto
* @return
*/
public List<GetMemberCouponListResponseDto.Result.MemberCoupon> getValidMemberCouponList(GetMemberCouponListRequestDto getMemberCouponListRequestDto, Integer orderType) {
List<GetMemberCouponListResponseDto.Result.MemberCoupon> memberCoupons = Lists.newArrayList();
GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto);
// 过滤优惠券得点餐方式
if (!Objects.isNull(result) && CollectionUtils.isNotEmpty(result.getMemberCoupons())) {
List<String> activityCodes = result.getMemberCoupons().stream().map(GetMemberCouponListResponseDto.Result.MemberCoupon::getActivityCode).collect(Collectors.toList());
Map<String, Boolean> activityCodesMap = couponOrderWay(getMemberCouponListRequestDto.getPartnerId(), activityCodes, orderType);
result.getMemberCoupons().forEach(memberCoupon -> {
if (activityCodesMap.get(memberCoupon.getActivityCode()) != null && activityCodesMap.get(memberCoupon.getActivityCode())) {
memberCoupons.add(memberCoupon);
}
});
}
return memberCoupons;
}
@Override @Override
public BaseResponse receiveMemberCoupon(ReceiveMemberCouponRequestVo requestVo) { public BaseResponse receiveMemberCoupon(ReceiveMemberCouponRequestVo requestVo) {
MemberAddCouponVo memberAddCouponVo = couponAdapter.convert2MemberAddCouponVo(requestVo); MemberAddCouponVo memberAddCouponVo = couponAdapter.convert2MemberAddCouponVo(requestVo);
...@@ -1303,4 +1331,38 @@ public class CouponServiceImpl implements CouponService { ...@@ -1303,4 +1331,38 @@ public class CouponServiceImpl implements CouponService {
} }
return CouponBarCodeMap; return CouponBarCodeMap;
} }
@Override
public void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
validCouponCodeLis = couponList;
} else {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(couponPromotionVO.getPartnerId(), couponPromotionVO.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, couponPromotionVO.getOrderType());
validCouponCodeLis = validMemberCouponList.stream().map(GetMemberCouponListResponseDto.Result.MemberCoupon::getCouponCode).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(validCouponCodeLis)){
List<String> uuidList = spqIdToCartUuid.get(couponCode);
if (CollectionUtils.isNotEmpty(uuidList)){
List<CartGoods> newCartList = cartGoodsList.stream().filter(p -> !uuidList.contains(p.getCartGoodsUid())).collect(Collectors.toList());
assortmentSdkService.setShoppingCart(couponPromotionVO.getPartnerId(), couponPromotionVO.getStoreId(), couponPromotionVO.getUserId(), newCartList, null, null, this.shoppingCartBaseService);
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
} else {
String finalCouponCode = couponCode;
String memberCouponCode = validCouponCodeLis.stream().filter(p -> finalCouponCode.equals(p)).findFirst().orElse(null);
if (StringUtils.isBlank(memberCouponCode)){
List<String> uuidList = spqIdToCartUuid.get(memberCouponCode);
if (CollectionUtils.isNotEmpty(uuidList)){
List<CartGoods> newCartList = cartGoodsList.stream().filter(p -> !uuidList.contains(p.getCartGoodsUid())).collect(Collectors.toList());
assortmentSdkService.setShoppingCart(couponPromotionVO.getPartnerId(), couponPromotionVO.getStoreId(), couponPromotionVO.getUserId(), newCartList, null, null, this.shoppingCartBaseService);
throw new ServiceException(ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON, ResponseResult.SHOPPING_CART_USER_HAVE_NO_COUPON.getMessage());
}
}
}
}
} }
...@@ -81,7 +81,7 @@ public class CalculationSharingCartService { ...@@ -81,7 +81,7 @@ public class CalculationSharingCartService {
/** /**
* 可用券及券折扣 * 可用券及券折扣
*/ */
promotionSharingService.updateShoppingCartGoodsDiscount(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO,shoppingCartInfoRequestVo, userId, partnerId, storeId); promotionSharingService.updateShoppingCartGoodsDiscount(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO,shoppingCartInfoRequestVo, userId, partnerId, storeId, activityQueryDto.getOrderType());
/** /**
* 满减处理 * 满减处理
......
...@@ -18,6 +18,7 @@ import cn.freemud.service.CouponService; ...@@ -18,6 +18,7 @@ import cn.freemud.service.CouponService;
import cn.freemud.service.active.ActiveFactory; import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService; import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.CouponServiceImpl;
import cn.freemud.service.impl.calculate.promotion.GiftSharingService; import cn.freemud.service.impl.calculate.promotion.GiftSharingService;
import cn.freemud.service.thirdparty.CalculationClient; import cn.freemud.service.thirdparty.CalculationClient;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
...@@ -65,8 +66,6 @@ public class CalculationSharingDiscountService { ...@@ -65,8 +66,6 @@ public class CalculationSharingDiscountService {
@Autowired @Autowired
private ActiveFactory activeFactory; private ActiveFactory activeFactory;
@Autowired
private GiftSharingService giftSharingService;
public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType
, String partnerId , String partnerId
......
package cn.freemud.service.impl.calculate; package cn.freemud.service.impl.calculate;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.GetMemberCouponListRequestDto;
import cn.freemud.entities.dto.UserLoginInfoDto; import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
...@@ -8,6 +9,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; ...@@ -8,6 +9,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponStatus;
import cn.freemud.service.impl.calculate.promotion.*; import cn.freemud.service.impl.calculate.promotion.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -80,7 +82,8 @@ public class CalculationSharingEquallyService { ...@@ -80,7 +82,8 @@ public class CalculationSharingEquallyService {
/** /**
* 商品券\换购券 * 商品券\换购券
*/ */
promotionSharingService.equally(discountResult, cartGoodsList);
promotionSharingService.equally(discountResult, cartGoodsList, couponPromotionVO);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts();
shoppingCartGoodsDto.setProducts(cartGoodsDetailDtoList); shoppingCartGoodsDto.setProducts(cartGoodsDetailDtoList);
......
...@@ -2,12 +2,17 @@ package cn.freemud.service.impl.calculate.promotion; ...@@ -2,12 +2,17 @@ package cn.freemud.service.impl.calculate.promotion;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
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.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag; import cn.freemud.enums.CouponFlag;
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 cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
...@@ -51,7 +56,7 @@ public class CouponSharingService { ...@@ -51,7 +56,7 @@ public class CouponSharingService {
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo
, CouponPromotionVO couponPromotionVO , CouponPromotionVO couponPromotionVO
,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, String userId, String partnerId, String storeId) { ,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, String userId, String partnerId, String storeId, Integer orderType) {
// 用户选择了查询优惠券信息 // 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) { if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid() List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid()
...@@ -127,6 +132,18 @@ public class CouponSharingService { ...@@ -127,6 +132,18 @@ public class CouponSharingService {
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false; useCoupon = false;
} }
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setUserId(userId);
couponPromotionVO.setStoreId(storeId);
couponPromotionVO.setPartnerId(partnerId);
couponPromotionVO.setOrderType(orderType);
}
couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto; CheckSpqInfoResponseDto checkSpqInfoResponseDto;
...@@ -175,7 +192,7 @@ public class CouponSharingService { ...@@ -175,7 +192,7 @@ public class CouponSharingService {
} }
public void equally(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult public void equally(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList) { , List<CartGoods> cartGoodsList, CouponPromotionVO couponPromotionVO) {
if (CollectionUtils.isEmpty(cartGoodsList)) { if (CollectionUtils.isEmpty(cartGoodsList)) {
return; return;
...@@ -189,8 +206,15 @@ public class CouponSharingService { ...@@ -189,8 +206,15 @@ public class CouponSharingService {
couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length()); couponCode = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
useCoupon = false; useCoupon = false;
} }
List<String> validCouponCodeLis = new ArrayList<>();
// 计算优惠信息时,已将券校验过,放在map中 // 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap(); Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap();
Map<String, List<String>> spqIdToCartUuid = discountResult == null ? new HashMap<>() : discountResult.getSpqIdToCartUuid();
couponPromotionVO.setFlg(0);
couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
if (MapUtils.isNotEmpty(validCouponMap)) { if (MapUtils.isNotEmpty(validCouponMap)) {
CheckSpqInfoResponseDto checkSpqInfoResponseDto; CheckSpqInfoResponseDto checkSpqInfoResponseDto;
if(useCoupon){ if(useCoupon){
......
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