Commit 85b2fc29 by 周晓航

购物车兼并 配送券

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent 91b6c184
......@@ -552,7 +552,21 @@ public class CouponAdapter {
couponPromotionVO.setPartnerId(shoppingCartInfoRequestVo.getPartnerId());
couponPromotionVO.setUserId(userLoginInfoDto.getMemberId());
couponPromotionVO.setStoreId(shoppingCartInfoRequestVo.getShopId());
couponPromotionVO.setCouponCode(shoppingCartInfoRequestVo.getCouponCode());
// 删除配送券-> 商品券使用逻辑组装
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (CollectionUtils.isEmpty(couponCodes)) {
couponPromotionVO.setCouponCode("");
}else {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
.filter(couponCode -> !couponCode.getCouponType().equals(CouponTypeEnum.TYPE_5.getCode()))
// 只能使用一张券 排除配送券情况下
.findFirst().orElse(null);
if (otherCouponCode !=null) {
couponPromotionVO.setCouponCode(otherCouponCode.getCouponCode());
}else {
couponPromotionVO.setCouponCode("");
}
}
couponPromotionVO.setOrderType(shoppingCartInfoRequestVo.getOrderType());
couponPromotionVO.setFlg(shoppingCartInfoRequestVo.getFlag());
couponPromotionVO.setUnChooseCouponCode(shoppingCartInfoRequestVo.getUnChooseCouponCode());
......
......@@ -207,6 +207,18 @@ public class ShoppingCartDemoController {
premiumRequest.setSessionId(listCartGoodsBO.getSessionId());
premiumRequest.setShopId(listCartGoodsBO.getShopId());
premiumRequest.setVersion(listCartGoodsBO.getVersion());
if (!CollectionUtils.isEmpty(baseRequestDTO.getCouponCodes())) {
List<PremiumExchangeRequestVo.couponCode> list = new ArrayList<>();
baseRequestDTO.getCouponCodes().forEach(couponCode -> {
PremiumExchangeRequestVo.couponCode vo = new PremiumExchangeRequestVo.couponCode();
vo.setActivityCode(couponCode.getActivityCode());
vo.setCouponCode(couponCode.getCouponCode());
vo.setCouponType(couponCode.getCouponType());
vo.setIndex(couponCode.getIndex());
list.add(vo);
});
premiumRequest.setCouponCodes(list);
}
BaseResponse<PremiumExchangeResponseVo> premiumExchangeResponseVoBaseResponse = SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).premiumExchange(premiumRequest);
List<PremiumExchangeResponseVo.PremiumExchangeProduct> chooseSendGoodList = null;
if (premiumExchangeResponseVoBaseResponse != null && ResponseResult.SUCCESS.getCode().equals(premiumExchangeResponseVoBaseResponse.getCode())
......
......@@ -176,6 +176,11 @@ public class ListCartGoodsRequestDTO extends BaseRequestDTO {
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
}
......@@ -91,6 +91,10 @@ public class ActivityCalculationDiscountRequestDto {
* 购物车商品行uid(种子券商品才传)
*/
private String cartGoodsUid;
/**
* 优惠券类型
*/
private Integer couponType;
}
@Data
......
......@@ -94,6 +94,11 @@ public class CalculationSharingDiscountRequestDto {
* 下标
*/
private Integer useIndex;
/**
* 优惠券类型
*/
private Integer couponType;
}
@Data
......
......@@ -5,6 +5,7 @@ import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class PremiumExchangeRequestVo {
......@@ -46,4 +47,31 @@ public class PremiumExchangeRequestVo {
@NotNull(message = "menuType 不能为空")
private String menuType;
/**
* 优惠券code列表
*/
private List<couponCode> couponCodes;
@Data
public final static class couponCode {
/**
* 优惠券
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
}
......@@ -230,6 +230,11 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
/**
* 购买类型 0=普通购买 1=立即购买 ,默认值为普通购买
......
......@@ -5,7 +5,8 @@ public enum CouponTypeEnum {
TYPE_0(0, "商品券"),
TYPE_1(1, "代金券"),
TYPE_3(3, "折扣券"),
TYPE_4(4, "换购券");
TYPE_4(4, "换购券"),
TYPE_5(5, "配送券");
private Integer code;
......
......@@ -12,6 +12,7 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.factory.AbstractShoppingCartImpl;
import cn.freemud.interceptor.ServiceException;
......@@ -433,8 +434,17 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
String partnerId = shoppingCartInfoRequestVo.getPartnerId();
String storeId = shoppingCartInfoRequestVo.getShopId();
String appId = shoppingCartInfoRequestVo.getAppId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (!CollectionUtils.isEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
.filter(couponCode -> !couponCode.getCouponType().equals(CouponTypeEnum.TYPE_5.getCode()))
.findFirst().orElse(null);
if (otherCouponCode !=null) {
// 由于对下面逻辑 不是很清楚 并且修改了 优惠券传参规则 所以直接设置一遍 防止出错
shoppingCartInfoRequestVo.setCouponCode(otherCouponCode.getCouponCode());
shoppingCartInfoRequestVo.setActivityCode(otherCouponCode.getActivityCode());
}
}
String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
String receiveId = shoppingCartInfoRequestVo.getReceiveId();
......@@ -483,14 +493,26 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
return ResponseUtil.error(ResponseResult.SHOPPING_CART_VERSION_ERROR, "购物车商品有变动,请手动刷新再修改");
}
// 下面代码 由于接口改动 已经不适用 begin
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
// 当couponCode不为空时,需参与价格计算
if (StringUtils.isNotEmpty(couponCode)) {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(couponCode);
coupon.setActivityCode(activityCode);
coupons.add(coupon);
// if (StringUtils.isNotEmpty(couponCode)) {
// ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
// coupon.setCode(couponCode);
// coupon.setActivityCode(activityCode);
// coupons.add(coupon);
// }
// 上面代码 由于接口改动 已经不适用 end
if (!CollectionUtils.isEmpty(couponCodes)) {
couponCodes.forEach(shoppingCouponCode -> {
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon coupon = new ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(shoppingCouponCode.getCouponCode());
coupon.setActivityCode(shoppingCouponCode.getActivityCode());
coupon.setCouponType(shoppingCouponCode.getCouponType());
coupons.add(coupon);
});
}
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息
......
......@@ -364,8 +364,17 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String storeId = this.getBindMallShopId(appId);
shoppingCartInfoRequestVo.setShopId(storeId);
List<CartGoods> cartGoodsList = new ArrayList<>();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (!CollectionUtils.isEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
.filter(couponCode -> !couponCode.getCouponType().equals(CouponTypeEnum.TYPE_5.getCode()))
.findFirst().orElse(null);
if (otherCouponCode !=null) {
// 由于对下面逻辑 不是很清楚 并且修改了 优惠券传参规则 所以直接设置一遍 防止出错
shoppingCartInfoRequestVo.setCouponCode(otherCouponCode.getCouponCode());
shoppingCartInfoRequestVo.setActivityCode(otherCouponCode.getActivityCode());
}
}
String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
// 获取购物车商品
......@@ -392,13 +401,15 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
}
ArrayList<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) {
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(couponCode);
coupon.setActivityCode(activityCode);
coupons.add(coupon);
if (!CollectionUtils.isEmpty(couponCodes)) {
couponCodes.forEach(shoppingCouponCode -> {
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(shoppingCouponCode.getCouponCode());
coupon.setActivityCode(shoppingCouponCode.getActivityCode());
coupon.setCouponType(shoppingCouponCode.getCouponType());
coupons.add(coupon);
});
}
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
......@@ -928,6 +939,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
coupon.setCode(cp.getCouponCode());
coupon.setActivityCode(cp.getActivityCode());
coupon.setUseIndex(cp.getIndex() == null ? x + oldCoupons.size(): cp.getIndex() + oldCoupons.size());
coupon.setCouponType(cp.getCouponType());
oldCoupons.add(coupon);
}
}
......
......@@ -222,6 +222,7 @@ public class CalculationSharingDiscountService {
result.setValidCouponMap(validCouponMap);
result.setSpqIdToCartUuid(spqIdToCartUuid);
// fisherman 这里传递过来的 配送费 是否要计算一下 配送券的逻辑
result.setDeliveryAmount(deliveryAmount);
result.setDistributionFee(result.getDistributionFee());
return result;
......
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