Commit f9bc24fa by 刘鹏飞

Merge remote-tracking branch 'remotes/origin/feature/coco-payGift-刘鹏飞' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
#	order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	ordercenter-sdk/pom.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 2a55595b a5dadfc0
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.18-SNAPSHOT</version> <version>2.2.19-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<version>1.7.3-SNAPSHOT</version> <version>1.7.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -107,3 +107,4 @@ ...@@ -107,3 +107,4 @@
| 2.2.15-SNAPSHOT| 拼单 | 缪晖 | 2020-12-2 | | 2.2.15-SNAPSHOT| 拼单 | 缪晖 | 2020-12-2 |
| 2.2.17-SNAPSHOT| 带券订单下单直接锁券 | 李小二 | 2020-12-2 | | 2.2.17-SNAPSHOT| 带券订单下单直接锁券 | 李小二 | 2020-12-2 |
| 2.2.18-SNAPSHOT| 抖音支付新增抖音单号和openId | 张志恒 | 2020-12-4 | | 2.2.18-SNAPSHOT| 抖音支付新增抖音单号和openId | 张志恒 | 2020-12-4 |
| 2.2.19-SNAPSHOT| 买一赠一寄件 | 刘鹏飞 | 2020-12-11 |
\ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.2.18-SNAPSHOT</version> <version>2.2.19-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -9,6 +9,8 @@ public class ResponseCodeConstant { ...@@ -9,6 +9,8 @@ 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 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;
public final static String RESPONSE_SUCCESS_0_STR = "0"; public final static String RESPONSE_SUCCESS_0_STR = "0";
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
package cn.freemud.entities.dto.activity; package cn.freemud.entities.dto.activity;
import cn.freemud.entities.vo.PayGiftCouponVo; import cn.freemud.entities.vo.PayGiftCouponVo;
import cn.freemud.entities.vo.PayGiftGoodsConfigVo;
import cn.freemud.entities.vo.PayGiftMicroProgramConfigVo;
import cn.freemud.entities.vo.PayGiftWechatCouponInfoVo; import cn.freemud.entities.vo.PayGiftWechatCouponInfoVo;
import lombok.Data; import lombok.Data;
...@@ -35,4 +37,34 @@ public class PayGiftCheckAndJoinResponseDto { ...@@ -35,4 +37,34 @@ public class PayGiftCheckAndJoinResponseDto {
private String type; private String type;
private List<PayGiftCouponVo> coupons; private List<PayGiftCouponVo> coupons;
private PayGiftWechatCouponInfoVo wechatCouponInfo; private PayGiftWechatCouponInfoVo wechatCouponInfo;
/**
* 奖励类型:1-非码券,2-微信商家券,3-弹窗奖励
*/
private String syncWechat;
/**
* 活动配图
*/
private String activityPicture;
/**
* 跳转设置(跳转类型) 0:无 5:跳转页面 10:外部小程序 15:跳转商品 20:跳转H5
*/
private String redirectType;
/**
* 跳转商品
*/
private PayGiftGoodsConfigVo goodsConfig;
/**
* 跳转小程序
*/
private PayGiftMicroProgramConfigVo microProgramConfig;
/**
* 跳转页面5和20跳转外部H5对应的路径或者URL
*/
private String redirectPage;
} }
...@@ -167,7 +167,7 @@ public class CreateOrderVo { ...@@ -167,7 +167,7 @@ public class CreateOrderVo {
/** /**
* 券码列表 * 券码列表
*/ */
private List<String> couponCodes; private List<couponCode> couponCodes;
/** /**
* 运费券code * 运费券code
...@@ -440,4 +440,21 @@ public class CreateOrderVo { ...@@ -440,4 +440,21 @@ public class CreateOrderVo {
*/ */
private Boolean sendCoupon; private Boolean sendCoupon;
} }
@Data
public final static class couponCode {
/**
* 优惠券
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 顺序
*/
private Integer index;
}
} }
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class PayGiftGoodsConfigVo {
/**
* 跳转商品ID
*/
private String goodsId;
/**
* 跳转商品名称
*/
private String goodsName;
/**
* 跳转商品价格,单位分
*/
private Integer price;
}
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class PayGiftMicroProgramConfigVo {
/**
* 跳转小程序ID
*/
private String appId;
/**
* 跳转小程序跳转路径
*/
private String redirectUrl;
}
...@@ -371,6 +371,37 @@ public class QueryOrderResponseVo { ...@@ -371,6 +371,37 @@ public class QueryOrderResponseVo {
private List<PayGiftCouponVo> coupons; private List<PayGiftCouponVo> coupons;
private PayGiftWechatCouponInfoVo wechatCouponInfo; private PayGiftWechatCouponInfoVo wechatCouponInfo;
/**
* 支付有礼奖励类型:1-非码券,2-微信商家券,3-弹窗奖励
*/
private String syncWechat;
/**
* 支付有礼活动配图
*/
private String activityPicture;
/**
* 支付有礼跳转设置(跳转类型) 0:无 5:跳转页面 10:外部小程序 15:跳转商品 20:跳转H5
*/
private String redirectType;
/**
* 支付有礼跳转商品
*/
private PayGiftGoodsConfigVo goodsConfig;
/**
* 支付有礼跳转小程序
*/
private PayGiftMicroProgramConfigVo microProgramConfig;
/**
* 支付有礼跳转页面5和20跳转外部H5对应的路径或者URL
*/
private String redirectPage;
/** /**
* 收件人省份 * 收件人省份
*/ */
......
...@@ -207,6 +207,11 @@ public class ShoppingCartInfoRequestVo { ...@@ -207,6 +207,11 @@ public class ShoppingCartInfoRequestVo {
* 活动号 * 活动号
*/ */
private String activityCode; private String activityCode;
/**
* 顺序
*/
private Integer index;
} }
} }
...@@ -227,6 +227,12 @@ public enum ResponseResult { ...@@ -227,6 +227,12 @@ public enum ResponseResult {
DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"), DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"),
DELIVERY_INFO_ERROR("60002","配送地址不正确"), DELIVERY_INFO_ERROR("60002","配送地址不正确"),
DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"), DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"),
/**
* coco券验证失败
*/
COCO_COUPON_VALIDATOR_FAIL("70000", "优惠券验证错误"),
; ;
......
...@@ -579,7 +579,7 @@ public class CheckOrder { ...@@ -579,7 +579,7 @@ public class CheckOrder {
// 校验couponCode // 校验couponCode
GetCouponDetailResponseDto getCouponDetailResponseDto = couponService.getMemberCoupon(GetMemberCouponRequestVo.builder() GetCouponDetailResponseDto getCouponDetailResponseDto = couponService.getMemberCoupon(GetMemberCouponRequestVo.builder()
.partnerId(createOrderVo.getPartnerId()) .partnerId(createOrderVo.getPartnerId())
.couponCode(couponCode).build()); .couponCode(couponCode.getCouponCode()).build());
if (Objects.equals(getCouponDetailResponseDto, null) || CollectionUtils.isEmpty(getCouponDetailResponseDto.getDetails()) if (Objects.equals(getCouponDetailResponseDto, null) || CollectionUtils.isEmpty(getCouponDetailResponseDto.getDetails())
|| getCouponDetailResponseDto.getDetails().get(0).getActive() == null || getCouponDetailResponseDto.getDetails().get(0).getActive() == null
|| getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode() == null) { || getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode() == null) {
...@@ -594,8 +594,9 @@ public class CheckOrder { ...@@ -594,8 +594,9 @@ public class CheckOrder {
} }
String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode(); String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode();
ShoppingCartInfoRequestVo.couponCode coupon = new ShoppingCartInfoRequestVo.couponCode(); ShoppingCartInfoRequestVo.couponCode coupon = new ShoppingCartInfoRequestVo.couponCode();
coupon.setCouponCode(couponCode); coupon.setCouponCode(couponCode.getCouponCode());
coupon.setActivityCode(activeCode); coupon.setActivityCode(activeCode);
coupon.setIndex(couponCode.getIndex());
couponCodes.add(coupon); couponCodes.add(coupon);
}); });
...@@ -620,6 +621,12 @@ public class CheckOrder { ...@@ -620,6 +621,12 @@ public class CheckOrder {
} else { } else {
apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto); apportionResponse = shoppingCartClient.getShoppingCartGoodsApportionNew(requestDto);
} }
// 这个是专门的给coco使用的验证券的逻辑
if (ObjectUtils.equals(ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR, apportionResponse.getCode())) {
throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL,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());
throw new ServiceException(responseResult != null ? responseResult : ResponseResult.SHOPPING_CART_GETINFO_ERROR); throw new ServiceException(responseResult != null ? responseResult : ResponseResult.SHOPPING_CART_GETINFO_ERROR);
......
...@@ -1281,6 +1281,14 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1281,6 +1281,14 @@ public class OrderServiceImpl implements Orderservice {
queryOrderResponseVo.setActivityName(payGiftResponse.getActivityName()); queryOrderResponseVo.setActivityName(payGiftResponse.getActivityName());
queryOrderResponseVo.setCoupons(payGiftResponse.getCoupons()); queryOrderResponseVo.setCoupons(payGiftResponse.getCoupons());
queryOrderResponseVo.setWechatCouponInfo(payGiftResponse.getWechatCouponInfo()); queryOrderResponseVo.setWechatCouponInfo(payGiftResponse.getWechatCouponInfo());
queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
queryOrderResponseVo.setSyncWechat(payGiftResponse.getSyncWechat());
queryOrderResponseVo.setActivityPicture(payGiftResponse.getActivityPicture());
queryOrderResponseVo.setRedirectType(payGiftResponse.getRedirectType());
queryOrderResponseVo.setGoodsConfig(payGiftResponse.getGoodsConfig());
queryOrderResponseVo.setMicroProgramConfig(payGiftResponse.getMicroProgramConfig());
queryOrderResponseVo.setRedirectPage(payGiftResponse.getRedirectPage());
queryOrderResponseVo.setActivitySendType(payGiftResponse.getSendType());
} }
} }
......
...@@ -120,10 +120,7 @@ public class CocoOrderRelationServiceImpl implements OrderRelationService { ...@@ -120,10 +120,7 @@ public class CocoOrderRelationServiceImpl implements OrderRelationService {
if(null != masterProducts && !masterProducts.isEmpty()){ if(null != masterProducts && !masterProducts.isEmpty()){
masterProducts.forEach(product -> { masterProducts.forEach(product -> {
Integer giftQty = product.getQty(); Integer giftQty = giftMap.get(product.getCid()) == null ? 0 : giftMap.get(product.getCid());
if(giftQty == 0){
return;
}
product.setQty(product.getQty() + giftQty); product.setQty(product.getQty() + giftQty);
}); });
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<version>1.0.0</version> <version>1.0.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>1.7.3-SNAPSHOT</version> <version>1.7.4-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<dependencies> <dependencies>
......
...@@ -45,3 +45,4 @@ ...@@ -45,3 +45,4 @@
| 1.7.1-SNAPSHOT | 拼单 | 缪晖 | 2020-12-02 | | 1.7.1-SNAPSHOT | 拼单 | 缪晖 | 2020-12-02 |
| 1.7.2-SNAPSHOT | coco订单详情赠品合并 | 刘鹏飞 | 2020-12-3 | | 1.7.2-SNAPSHOT | coco订单详情赠品合并 | 刘鹏飞 | 2020-12-3 |
| 1.7.3-SNAPSHOT| 抖音支付新增抖音单号和openId | 张志恒 | 2020-12-4 | | 1.7.3-SNAPSHOT| 抖音支付新增抖音单号和openId | 张志恒 | 2020-12-4 |
| 1.7.4-SNAPSHOT| 买一赠一寄件 | 刘鹏飞 | 2020-12-11 |
\ No newline at end of file
...@@ -31,5 +31,5 @@ public class OrderSendCouponReq { ...@@ -31,5 +31,5 @@ public class OrderSendCouponReq {
/** /**
* 买一赠一寄件信息 * 买一赠一寄件信息
*/ */
private List<OrderSendCouponUpdateReq> chooseGoods; private List<OrderSendCouponUpdateReq> orderSendCouponRespList;
} }
...@@ -9,6 +9,9 @@ public class ResponseCodeConstant { ...@@ -9,6 +9,9 @@ public class ResponseCodeConstant {
public final static String RESPONSE_SUCCESS_STR = "100"; public final static String RESPONSE_SUCCESS_STR = "100";
// coco券校验异常的错误
public final static String COCO_RESPONSE_COUPON_ERR_STR = "700";
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;
public final static String RESPONSE_SUCCESS_0_STR = "0"; public final static String RESPONSE_SUCCESS_0_STR = "0";
......
...@@ -89,6 +89,11 @@ public class CalculationSharingDiscountRequestDto { ...@@ -89,6 +89,11 @@ public class CalculationSharingDiscountRequestDto {
* 活动号 * 活动号
*/ */
private String activityCode; private String activityCode;
/**
* 下标
*/
private Integer useIndex;
} }
@Data @Data
......
...@@ -217,6 +217,11 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -217,6 +217,11 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 活动号 * 活动号
*/ */
private String activityCode; private String activityCode;
/**
* 顺序
*/
private Integer index;
} }
} }
...@@ -146,6 +146,7 @@ public enum ResponseResult { ...@@ -146,6 +146,7 @@ public enum ResponseResult {
COUPON_SHOP_NOTSUPPORT("46010", "优惠券在当前门店不可用"), COUPON_SHOP_NOTSUPPORT("46010", "优惠券在当前门店不可用"),
COUPON_ORDER_WAY_ERROR("46011", "您选择得优惠券不适用该点餐方式"), COUPON_ORDER_WAY_ERROR("46011", "您选择得优惠券不适用该点餐方式"),
COUPON_VERIFICATION_FAIL("46012", "优惠券核销失败"), COUPON_VERIFICATION_FAIL("46012", "优惠券核销失败"),
/** /**
* 加价购商品 * 加价购商品
*/ */
...@@ -176,7 +177,13 @@ public enum ResponseResult { ...@@ -176,7 +177,13 @@ public enum ResponseResult {
*/ */
WEICHAT_SHOP_NOTSUPPORT("48001", "当前门店不可用"), WEICHAT_SHOP_NOTSUPPORT("48001", "当前门店不可用"),
WEICHAT_NOT_PRODUCTCARD("48002", "不是商品券不用加入购物车"), WEICHAT_NOT_PRODUCTCARD("48002", "不是商品券不用加入购物车"),
WEICHAT_PRODUCT_NOEXIST("48003", "商品不存在"); WEICHAT_PRODUCT_NOEXIST("48003", "商品不存在"),
/**
* coco验证券错误
*/
COCO_COUPON_VALIDATOR_FAIL("49000", "优惠券验证错误")
;
private String code; private String code;
......
...@@ -51,6 +51,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -51,6 +51,7 @@ import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
...@@ -345,7 +346,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -345,7 +346,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
, null); , null);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
} }
else { else {
// 获取优惠信息 // 获取优惠信息
...@@ -469,7 +470,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -469,7 +470,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
, null); , null);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
} }
else { else {
// 获取优惠信息 // 获取优惠信息
...@@ -587,6 +588,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -587,6 +588,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupon.setActivityCode(activityCode); coupon.setActivityCode(activityCode);
coupons.add(coupon); coupons.add(coupon);
} }
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sendGoodsList)) { if (CollectionUtils.isNotEmpty(sendGoodsList)) {
...@@ -624,7 +628,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -624,7 +628,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
,shoppingCartInfoRequestVo.getFlag()); ,shoppingCartInfoRequestVo.getFlag());
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,shoppingCartInfoRequestVo.getFlag(),partnerId);
} }
else { else {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
...@@ -817,6 +821,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -817,6 +821,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupon.setActivityCode(activityCode); coupon.setActivityCode(activityCode);
coupons.add(coupon); coupons.add(coupon);
} }
// 当couponCodes不为空时,需参与价格计算,同时排除单券入参
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType
, partnerId , partnerId
, storeId , storeId
...@@ -2131,10 +2138,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2131,10 +2138,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/ */
private void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, private void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult, CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,
Integer flag,
String partnerId) { String partnerId) {
ShoppingCartRelationService shoppingCartRelationService = shoppingCartRelationFactory.getBuildShoppingCartGoodsResponseService(partnerId); ShoppingCartRelationService shoppingCartRelationService = shoppingCartRelationFactory.getBuildShoppingCartGoodsResponseService(partnerId);
shoppingCartRelationService.buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult); shoppingCartRelationService.buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,flag);
} }
...@@ -2178,4 +2186,37 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2178,4 +2186,37 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return false; return false;
} }
} }
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, List<ShoppingCartInfoRequestVo.couponCode> coupons){
ApiLog.info("批量使用优惠券前,oldCoupons,coupons",oldCoupons,coupons);
for(int i = 0 ; i < oldCoupons.size() ; i++){
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon oldCoupon = oldCoupons.get(i);
oldCoupon.setUseIndex(i);
}
List<String> codes = oldCoupons.stream().map(CalculationSharingDiscountRequestDto.CalculationDiscountCoupon::getCode).collect(toList());
if (coupons != null) {
for(int x = 0 ; x < coupons.size() ; x++){
ShoppingCartInfoRequestVo.couponCode cp = coupons.get(x);
if(codes.contains(cp.getCouponCode())){
continue;
}
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
coupon.setCode(cp.getCouponCode());
coupon.setActivityCode(cp.getActivityCode());
coupon.setUseIndex(cp.getIndex() == null ? x + oldCoupons.size(): cp.getIndex() + oldCoupons.size());
oldCoupons.add(coupon);
}
}
ApiLog.info("批量使用优惠券后,oldCoupons,coupons",oldCoupons,coupons);
return oldCoupons;
}
} }
...@@ -198,6 +198,11 @@ public class CalculationSharingDiscountService { ...@@ -198,6 +198,11 @@ public class CalculationSharingDiscountService {
return result; return result;
} }
// 这个是专门给coco使用的券验证错误的异常,message要抛出去
if(sharingDiscountResponseDto != null && StringUtils.equals(sharingDiscountResponseDto.getStatusCode(), ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR)){
throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL,sharingDiscountResponseDto.getMsg());
}
// 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车 // 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车
//throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN); //throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN);
return null; return null;
......
...@@ -13,6 +13,9 @@ import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; ...@@ -13,6 +13,9 @@ import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.ActivityService; import cn.freemud.service.ActivityService;
import cn.freemud.utils.WebUtil; import cn.freemud.utils.WebUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.card.sdk.log.ApiLog;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,7 +48,48 @@ public class FullSharingService { ...@@ -45,7 +48,48 @@ public class FullSharingService {
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo
, ActivityQueryDto activityQueryDto) { , ActivityQueryDto activityQueryDto) {
List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>();
/**
* 每满减 TYPE_11\ 阶梯满减 TYPE_12
*/
activityTypeEnums.add(ActivityTypeEnum.TYPE_11);
activityTypeEnums.add(ActivityTypeEnum.TYPE_12);
activityTypeEnums.add(ActivityTypeEnum.TYPE_3);
activityTypeEnums.add(ActivityTypeEnum.TYPE_31);
if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods())) { if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods())) {
/**
* 调用促销统一活动查询,过滤出参与的满减(目前只有每满减和阶梯满减)
*/
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivityByType(activityQueryDto, activityTypeEnums, null);
if (null==activityQueryResponseDto || CollectionUtils.isEmpty(activityQueryResponseDto.getResult())) {
return;
}
Optional<ActivityResponseDto> first = activityQueryResponseDto.getResult().stream().findFirst();
PromotionMessageDto promotionMessageDto = new PromotionMessageDto();
ActivityResponseDto activityResponseDto = first.get();
promotionMessageDto.setActivityId(activityResponseDto.getActivityCode());
promotionMessageDto.setActivityName(activityResponseDto.getActivityName());
promotionMessageDto.setActivityType(activityResponseDto.getActivityType());
promotionMessageDto.setPromotionAmount(0L);
StringBuilder messageBuilder = new StringBuilder();
ArrayList<ActivityList> activityList = new ArrayList<>();
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList);
promotionMessageDto.setPromotionMessage(messageBuilder.toString());
ActivityTip activityTip = new ActivityTip();
activityTip.setActivityCode(promotionMessageDto.getActivityId());
activityTip.setActivityType(promotionMessageDto.getActivityType());
activityTip.setActivityName(promotionMessageDto.getPromotionMessage());
activityTip.setActivityList(activityList);
shoppingCartGoodsResponseVo.setActivityTip(activityTip);
return; return;
} }
...@@ -65,14 +109,7 @@ public class FullSharingService { ...@@ -65,14 +109,7 @@ public class FullSharingService {
} }
shoppingCartGoodsResponseVo.setActivityTip(new ActivityTip()); shoppingCartGoodsResponseVo.setActivityTip(new ActivityTip());
List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>();
/**
* 每满减 TYPE_11\ 阶梯满减 TYPE_12
*/
activityTypeEnums.add(ActivityTypeEnum.TYPE_11);
activityTypeEnums.add(ActivityTypeEnum.TYPE_12);
activityTypeEnums.add(ActivityTypeEnum.TYPE_3);
activityTypeEnums.add(ActivityTypeEnum.TYPE_31);
List<Integer> typeEnums = activityTypeEnums.stream().map(ActivityTypeEnum::getCode).collect(Collectors.toList()); List<Integer> typeEnums = activityTypeEnums.stream().map(ActivityTypeEnum::getCode).collect(Collectors.toList());
/** /**
* 还原满减折扣到行记录上 * 还原满减折扣到行记录上
......
...@@ -147,7 +147,7 @@ public class GiftSharingService { ...@@ -147,7 +147,7 @@ public class GiftSharingService {
, List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList , List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList
, ActivityQueryDto activityQueryDto , ActivityQueryDto activityQueryDto
, String menuType) { , String menuType) {
if (CollectionUtils.isEmpty(discountResult.getGoods())) { if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods())) {
return; return;
} }
List<ProductBeanDTO> beanDTOList = this.drawGiftInfo(discountResult, activityQueryDto, menuType); List<ProductBeanDTO> beanDTOList = this.drawGiftInfo(discountResult, activityQueryDto, menuType);
......
...@@ -21,7 +21,8 @@ public interface ShoppingCartRelationService { ...@@ -21,7 +21,8 @@ public interface ShoppingCartRelationService {
* 获取购物车查询出参构建实现 * 获取购物车查询出参构建实现
*/ */
void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult); CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,
Integer flag);
} }
...@@ -14,13 +14,19 @@ ...@@ -14,13 +14,19 @@
package cn.freemud.service.shoppingCart.impl; package cn.freemud.service.shoppingCart.impl;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService; import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
@Service("cocoShoppingCartRelationService") @Service("cocoShoppingCartRelationService")
public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelationService { public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelationService {
...@@ -28,7 +34,8 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation ...@@ -28,7 +34,8 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation
@Override @Override
public void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, public void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) { CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,
Integer flag) {
if(discountResult != null){ if(discountResult != null){
...@@ -37,16 +44,169 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation ...@@ -37,16 +44,169 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation
// coco返回的活动中剔除集点活动 // coco返回的活动中剔除集点活动
if(discountResult.getDiscounts() != null && !discountResult.getDiscounts().isEmpty()){ if(discountResult.getDiscounts() != null && !discountResult.getDiscounts().isEmpty()){
discountResult.getDiscounts().forEach(discount -> { discountResult.getDiscounts().forEach(discount -> {
if(ActivityTypeEnum.TYPE_221.equals(discount.getType())){ if(ActivityTypeEnum.TYPE_221.getCode().equals(discount.getType())){
return; return;
} }
discounts.add(discount); discounts.add(discount);
}); });
} }
// 促销的活动信息和商品优惠信息给前端做展示、打标签用
shoppingCartGoodsResponseVo.setDiscounts(discounts); shoppingCartGoodsResponseVo.setDiscounts(discounts);
shoppingCartGoodsResponseVo.setGoods(discountResult.getGoods()); shoppingCartGoodsResponseVo.setGoods(discountResult.getGoods());
List<CartGoods> products = shoppingCartGoodsResponseVo.getProducts();
List<String> gifeProductIds = new ArrayList<>();
if(products != null && !products.isEmpty()){
// 获取赠品的商品id
gifeProductIds = products.stream().filter(product -> Objects.equals(product.getActivityType(),ActivityTypeEnum.TYPE_63.getCode())).map(CartGoods::getGoodsId).collect(Collectors.toList());
}
Map<String,CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goodsDiscountsMap = new HashMap<>();
Map<String,CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> halfDiscountsMap = new HashMap<>();
// 商品优惠信息
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goodsDiscounts = discountResult.getGoods();
if(goodsDiscounts == null || goodsDiscounts.isEmpty()){
return;
}
goodsDiscountsMap = goodsDiscounts.stream().collect(Collectors.toMap(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, g -> g,(k1,k2)->k1));
goodsDiscounts.forEach(goodsDiscount ->{
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> oneGoodsDiscounts = goodsDiscount.getDiscounts();
if(oneGoodsDiscounts == null || oneGoodsDiscounts.isEmpty()){
return;
}
oneGoodsDiscounts.forEach(discount -> {
if(Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_53.getCode())){
halfDiscountsMap.put(goodsDiscount.getCartGoodsUid() + "-" + discount.getGoodsId(),discount);
}
});
});
List<CartGoods> newProducts = new ArrayList<>();
if(!Objects.equals(flag,1)){// 非结算页
if(products == null || products.isEmpty()){
return;
}
List<CartGoods> halfProduct = new ArrayList<>();
for(int x = 0 ; x < products.size() ; x ++){
CartGoods product = products.get(x);
// 要添加的半价行数量,该字段从促销返回
Integer num = 0;
// 商品优惠的金额
Long discountAmount = 0L;
if(halfDiscountsMap.get(product.getCartGoodsUid() + "-" + product.getGoodsId()) != null){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = halfDiscountsMap.get(product.getCartGoodsUid() + "-" + product.getGoodsId());
if(discount == null){
return;
}
num = discount.getActualGoodsNumber();
for(int i = 0 ; i < num ; i++){
// 第二件优惠活动,在点餐页需要给优惠商品单独显示一行
// 复制商品加到购物车
discountAmount = discount.getDiscount();
Long newPrice = product.getOriginalPrice() - discountAmount;
// 构建半价行
CartGoods cartGoods = buildNewLine(product,ActivityTypeEnum.TYPE_53.getCode(),1,newPrice);
halfProduct.add(cartGoods);
}
}
Integer newQty = product.getQty() - num;
// 数量减去购物车行之后如果为0就不加入购物车
// 主商品行要数量,价格
if(!Objects.equals(newQty,0)){
product.setAmount(product.getAmount() - discountAmount * num);
product.setOriginalAmount(product.getOriginalAmount() - product.getOriginalPrice() * num);
product.setQty(newQty);
// 商品的现单价使用促销返回的现单价
// 但是要排除赠品行、半价行
if(!ObjectUtils.equals(product.getActivityType(),ActivityTypeEnum.TYPE_63.getCode()) && !ObjectUtils.equals(product.getActivityType(),ActivityTypeEnum.TYPE_53.getCode())){
product.setFinalPrice(goodsDiscountsMap.get(product.getCartGoodsUid()).getNowPrice());
}
// num代表拆出来的半价行数量,gifeProductIds代表赠品
// 只要符合条件就需要设置为空
// 因为前端指挥在半价行、赠品行上打标
// 前端是从商品活动信息中查找活动,在商品列表中找商品
if((gifeProductIds.contains(product.getGoodsId()) && product.getActivityType() == null) || !Objects.equals(num,0)){
product.setGoodsId(null);
} }
// num代表拆出来的半价行数量
// 所以只要不等于0就需要把ActivityType设置为空
// 因为前端用这个判断是否能加减
if(!Objects.equals(num,0)){
product.setActivityType(null);
} }
newProducts.add(product);
}
}
// 半价商品加到购物车
newProducts.addAll(halfProduct);
shoppingCartGoodsResponseVo.setProducts(newProducts);
}
}
}
public CartGoods buildNewLine(CartGoods cgs,Integer activityType,Integer qty,Long newPrice){
CartGoods newCartGoods = new CartGoods();
// 购物车的行设置和原来的行一致,便于前端在更新商品数量的时候。能够根据购物车行聚合商品数量
// 因为半价行是从主行中拆出来的
newCartGoods.setCartGoodsUid(cgs.getCartGoodsUid());
// 这个地方不要放置商品id,因为半价行的商品不打活动标签
// 前端会根据这个活动检索
newCartGoods.setGoodsType(cgs.getGoodsType());
newCartGoods.setGoodsId(cgs.getGoodsId());
newCartGoods.setSpuId(cgs.getSpuId());
newCartGoods.setSkuId(cgs.getSkuId());
newCartGoods.setSpecProductId(cgs.getSpecProductId());
// 价格只用一个商品的价格
newCartGoods.setOriginalPrice(cgs.getOriginalPrice());
// 价格只用一个商品的价格
newCartGoods.setPackPrice(cgs.getPackPrice());
// 价格只用一个商品的价格
newCartGoods.setOriginalAmount(cgs.getOriginalPrice());
// 价格只用一个商品的价格
newCartGoods.setFinalPrice(newPrice);
// 价格只用一个商品的价格
newCartGoods.setAmount(newPrice);
newCartGoods.setName(cgs.getName());
newCartGoods.setSpuName(cgs.getSpuName());
newCartGoods.setSubName(cgs.getSubName());
newCartGoods.setNodeId(cgs.getNodeId());
newCartGoods.setCategoryName(cgs.getCategoryName());
List<CartGoods.CartGoodsExtra> extra = Lists.newArrayList();
List<CartGoods.CartGoodsExtra> cartGoodsExtras = cgs.getExtra();
if (CollectionUtils.isNotEmpty(cartGoodsExtras)) {
cartGoodsExtras.forEach(cartGoodsExtra -> {
CartGoods.CartGoodsExtra goodsExtra = new CartGoods.CartGoodsExtra();
goodsExtra.setAttributeId(cartGoodsExtra.getAttributeId());
goodsExtra.setAttributeName(cartGoodsExtra.getAttributeName());
extra.add(goodsExtra);
});
}
newCartGoods.setExtra(extra);
newCartGoods.setPic(cgs.getPic());
newCartGoods.setCreateTimeMili(cgs.getCreateTimeMili());
newCartGoods.setSkuName(cgs.getSkuName());
newCartGoods.setSkuName(cgs.getSkuName());
newCartGoods.setClassificationId(cgs.getClassificationId());
newCartGoods.setClassificationName(cgs.getClassificationName());
newCartGoods.setActivityType(activityType);
newCartGoods.setQty(qty);
return newCartGoods;
}
} }
...@@ -22,7 +22,8 @@ public class PlatformShoppingCartRelationServiceImpl implements ShoppingCartRela ...@@ -22,7 +22,8 @@ public class PlatformShoppingCartRelationServiceImpl implements ShoppingCartRela
@Override @Override
public void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, public void buildShoppingCartGoodsResponse(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult) { CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult,
Integer flag) {
} }
} }
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