Commit 2e6a711e by 徐康

Merge branch 'feature/20200915_麦咖啡p2v3活动入机增加TENDERID字段' into develop

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartGoodsResponseVo.java
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartInfoRequestVo.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/AssortmentSdkService.java
parents 19fc41bb 63fdf2d3
...@@ -40,4 +40,5 @@ public class CartParamDto { ...@@ -40,4 +40,5 @@ public class CartParamDto {
private MealClearOperationEnum operationType; private MealClearOperationEnum operationType;
private Integer couponType;
} }
package com.freemud.sdk.api.assortment.shoppingcart.enums;
public enum SaveCouponType {
COUPON(1, "代金券"),
FREIGHT_COUPON(2, "运费券"),
;
private Integer code;
private String desc;
SaveCouponType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -5,6 +5,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -5,6 +5,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.enums.CouponTypeEnum;
import com.freemud.application.sdk.api.couponcenter.online.domain.*; import com.freemud.application.sdk.api.couponcenter.online.domain.*;
import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest; import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.CouponDetailRequest; import com.freemud.application.sdk.api.couponcenter.online.request.CouponDetailRequest;
...@@ -26,6 +27,7 @@ import com.freemud.application.sdk.api.productcenter.service.ProductService; ...@@ -26,6 +27,7 @@ import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter; import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter;
import com.freemud.sdk.api.assortment.shoppingcart.constant.*; import com.freemud.sdk.api.assortment.shoppingcart.constant.*;
import com.freemud.sdk.api.assortment.shoppingcart.domain.*; import com.freemud.sdk.api.assortment.shoppingcart.domain.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.SaveCouponType;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
...@@ -203,6 +205,9 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -203,6 +205,9 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
try { try {
redisTemplate.delete(this.getShoppingCartGoodsKey(cartParamDto)); redisTemplate.delete(this.getShoppingCartGoodsKey(cartParamDto));
redisTemplate.delete(this.getShoppingCartGoodsAmountKey(cartParamDto)); redisTemplate.delete(this.getShoppingCartGoodsAmountKey(cartParamDto));
cartParamDto.setCouponType(SaveCouponType.COUPON.getCode());
redisTemplate.delete(this.getShoppingCartCouponCodeKey(cartParamDto));
cartParamDto.setCouponType(SaveCouponType.FREIGHT_COUPON.getCode());
redisTemplate.delete(this.getShoppingCartCouponCodeKey(cartParamDto)); redisTemplate.delete(this.getShoppingCartCouponCodeKey(cartParamDto));
return new BaseResponse(VersionUtils.VER_1, CartResponseConstant.SUCCESS.getCode(), CartResponseConstant.SUCCESS.getMessage()); return new BaseResponse(VersionUtils.VER_1, CartResponseConstant.SUCCESS.getCode(), CartResponseConstant.SUCCESS.getMessage());
} catch (Exception e) { } catch (Exception e) {
...@@ -328,12 +333,12 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -328,12 +333,12 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
/** /**
* 获取记录购物车信息的key * 获取记录购物车coupon的key
* *
* @return * @return
*/ */
private String getShoppingCartCouponCodeKey(CartParamDto cartParamDto) { private String getShoppingCartCouponCodeKey(CartParamDto cartParamDto) {
return RedisKeyConstant.SAAS_SHOPPINGCART_COUPON_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId(); return RedisKeyConstant.SAAS_SHOPPINGCART_COUPON_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId() + "_" + cartParamDto.getCouponType();
} }
/** /**
......
...@@ -135,4 +135,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -135,4 +135,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* svc卡支付金额 * svc卡支付金额
*/ */
private BigDecimal svcPayAmount; private BigDecimal svcPayAmount;
/**
* 运费券
*/
private String freightCouponCode;
} }
...@@ -159,8 +159,9 @@ public class AssortmentSdkService { ...@@ -159,8 +159,9 @@ public class AssortmentSdkService {
* @param useId * @param useId
* @return * @return
*/ */
public String getShoppingCartCoupon(String partnerId, String storeId, String useId, ShoppingCartBaseService shoppingCartService) { public String getShoppingCartCoupon(String partnerId, String storeId, String useId, ShoppingCartBaseService shoppingCartService, Integer type) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId); com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId);
cartParamDto.setCouponType(type);
BaseResponse<String> baseResponse = shoppingCartService.getCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo()); BaseResponse<String> baseResponse = shoppingCartService.getCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || StringUtils.isEmpty(baseResponse.getResult())) { if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || StringUtils.isEmpty(baseResponse.getResult())) {
...@@ -179,9 +180,10 @@ public class AssortmentSdkService { ...@@ -179,9 +180,10 @@ public class AssortmentSdkService {
* @param useId * @param useId
* @return * @return
*/ */
public List<CartGoods> setShoppingCartCouponCode(String partnerId, String storeId, String useId, String couponCode, ShoppingCartBaseService shoppingCartService) { public List<CartGoods> setShoppingCartCouponCode(String partnerId, String storeId, String useId, String couponCode, ShoppingCartBaseService shoppingCartService, Integer type) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId); com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId);
cartParamDto.setCouponCode(couponCode); cartParamDto.setCouponCode(couponCode);
cartParamDto.setCouponType(type);
BaseResponse<String> baseResponse = shoppingCartService.setCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo()); BaseResponse<String> baseResponse = shoppingCartService.setCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) { if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) {
return null; return null;
......
...@@ -52,6 +52,7 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; ...@@ -52,6 +52,7 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates; import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates;
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.enums.SaveCouponType;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
...@@ -322,6 +323,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -322,6 +323,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String storeId = shoppingCartInfoRequestVo.getShopId(); String storeId = shoppingCartInfoRequestVo.getShopId();
String appId = shoppingCartInfoRequestVo.getAppId(); String appId = shoppingCartInfoRequestVo.getAppId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode(); String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String freightCouponCode = shoppingCartInfoRequestVo.getCouponCode();
// String activityCode = shoppingCartInfoRequestVo.getActivityCode(); // String activityCode = shoppingCartInfoRequestVo.getActivityCode();
String menuType = shoppingCartInfoRequestVo.getMenuType(); String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType(); Integer orderType = shoppingCartInfoRequestVo.getOrderType();
...@@ -342,25 +344,50 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -342,25 +344,50 @@ public class ShoppingCartMCoffeeServiceImpl {
* 如果couponCode为空,则从缓存里尝试获取 * 如果couponCode为空,则从缓存里尝试获取
* 如果couponCode不为空,则设置到缓存里 * 如果couponCode不为空,则设置到缓存里
*/ */
List<String> couponList = new ArrayList<>();
if(StringUtils.isEmpty(couponCode)) { if(StringUtils.isEmpty(couponCode)) {
couponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService); couponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService, SaveCouponType.COUPON.getCode());
if(StringUtils.isNotEmpty(couponCode)) { if(StringUtils.isNotEmpty(couponCode)) {
List<CouponState> couponStates = couponDiscountCalculation.buildAvailableCoupons(cartGoodsList, partnerId, storeId, Lists.newArrayList(couponCode)); couponList.add(couponCode);
if(CollectionUtils.isNotEmpty(couponStates)) {
if(Objects.equals(couponStates.get(0).getState(), CouponStateEnum.STATE_1.getCode())) {
couponCode = "";
}
} else {
couponCode = "";
}
} }
} else { } else {
if("remove".equals(couponCode)) { if("remove".equals(couponCode)) {
couponCode = ""; couponCode = "";
} }
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, couponCode, shoppingCartBaseService); assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, couponCode, shoppingCartBaseService, SaveCouponType.COUPON.getCode());
} }
if(StringUtils.isEmpty(freightCouponCode)) {
freightCouponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService, SaveCouponType.FREIGHT_COUPON.getCode());
if(StringUtils.isNotEmpty(freightCouponCode)) {
couponList.add(freightCouponCode);
}
} else {
if("remove".equals(freightCouponCode)) {
freightCouponCode = "";
}
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, freightCouponCode, shoppingCartBaseService, SaveCouponType.FREIGHT_COUPON.getCode());
}
//校验代金券和运费券是否可用
if(CollectionUtils.isNotEmpty(couponList)) {
List<CouponState> couponStates = couponDiscountCalculation.buildAvailableCoupons(cartGoodsList, partnerId, storeId, couponList);
if(CollectionUtils.isNotEmpty(couponStates)) {
Map<String, Integer> couponStateMap = couponStates.stream().collect(Collectors.toMap(CouponState::getCouponCode, CouponState::getState));
if(null == couponStateMap.get(couponCode) || Objects.equals(couponStateMap.get(couponCode), CouponStateEnum.STATE_1.getCode())) {
couponCode = "";
}
if(null == couponStateMap.get(freightCouponCode) || Objects.equals(couponStateMap.get(freightCouponCode), CouponStateEnum.STATE_1.getCode())) {
freightCouponCode = "";
}
} else {
couponCode = "";
freightCouponCode = "";
}
}
shoppingCartInfoRequestVo.setFreightCouponCode(freightCouponCode);
// 当couponCode不为空时,需参与价格计算 // 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode()); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,shoppingCartInfoRequestVo.getFreightCouponCode());
...@@ -371,6 +398,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -371,6 +398,7 @@ public class ShoppingCartMCoffeeServiceImpl {
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
shoppingCartGoodsResponseVo.setCouponCode(couponCode); shoppingCartGoodsResponseVo.setCouponCode(couponCode);
shoppingCartGoodsResponseVo.setFreightCouponCode(freightCouponCode);
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
......
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