Commit 99ec4506 by 徐康

listcarts返回上次使用的代金券,满减活动保存tenderId

parent a2a4bc16
...@@ -21,6 +21,10 @@ public class RedisKeyConstant { ...@@ -21,6 +21,10 @@ public class RedisKeyConstant {
/** /**
* 用户购物车在redis的key前缀 * 用户购物车在redis的key前缀
*/ */
public final static String SAAS_SHOPPINGCART_COUPON_KEY_PREFIX = "saas:user:info:cart:coupon:";
/**
* 用户购物车在redis的key前缀
*/
public final static String SAAS_USER_INFO_CART_CARTADDPRODUCT = "saas:user:info:cart:cartAddProduct:goods:"; public final static String SAAS_USER_INFO_CART_CARTADDPRODUCT = "saas:user:info:cart:cartAddProduct:goods:";
/** /**
* 用户购物车总价在redis的key前缀 * 用户购物车总价在redis的key前缀
......
...@@ -34,6 +34,8 @@ public class CartParamDto { ...@@ -34,6 +34,8 @@ public class CartParamDto {
private String cartGoodsUid; private String cartGoodsUid;
private String couponCode;
private Integer qty; private Integer qty;
private MealClearOperationEnum operationType; private MealClearOperationEnum operationType;
......
...@@ -77,6 +77,14 @@ public interface ShoppingCartBaseService { ...@@ -77,6 +77,14 @@ public interface ShoppingCartBaseService {
BaseResponse<List<CartGoods>> getCartGoodsList(CartParamDto cartParamDto, String trackingNo); BaseResponse<List<CartGoods>> getCartGoodsList(CartParamDto cartParamDto, String trackingNo);
/** /**
* 获取购物车商品代金券
*
* @param cartParamDto
* @return
*/
BaseResponse<String> getCartCouponCode(CartParamDto cartParamDto, String trackingNo);
/**
* 设置购物车商品行集合信息 * 设置购物车商品行集合信息
* *
* @param cartParamDto * @param cartParamDto
...@@ -84,6 +92,14 @@ public interface ShoppingCartBaseService { ...@@ -84,6 +92,14 @@ public interface ShoppingCartBaseService {
*/ */
BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo); BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo);
/**
* 设置购物车代金券信息
*
* @param cartParamDto
* @return
*/
BaseResponse<String> setCartCouponCode(CartParamDto cartParamDto, String trackingNo);
default boolean addCartGoodList(CartParamDto cartParamDto) { default boolean addCartGoodList(CartParamDto cartParamDto) {
return true; return true;
} }
...@@ -96,6 +112,12 @@ public interface ShoppingCartBaseService { ...@@ -96,6 +112,12 @@ public interface ShoppingCartBaseService {
BaseResponse clear(CartParamDto cartParamDto, String trackingNo); BaseResponse clear(CartParamDto cartParamDto, String trackingNo);
/** /**
* 清除麦咖啡购物车商品行信息
*
* @param cartParamDto
*/
BaseResponse clearMCCafe(CartParamDto cartParamDto, String trackingNo);
/**
* 获取商品详细信息 * 获取商品详细信息
* *
* @param getProductInfoRequest * @param getProductInfoRequest
......
...@@ -39,6 +39,7 @@ import org.springframework.beans.BeanUtils; ...@@ -39,6 +39,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.BoundHashOperations; import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -107,6 +108,19 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -107,6 +108,19 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
} }
@Override @Override
public BaseResponse<String> getCartCouponCode(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartCouponCodeKey(cartParamDto);
BoundValueOperations<String, String> operations = redisTemplate.boundValueOps(redisKey);
String couponCode = operations.get();
return CartResponseUtil.success(couponCode);
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "getCartCouponCode", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo) { public BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo) {
try { try {
String redisKey = getShoppingCartGoodsKey(cartParamDto); String redisKey = getShoppingCartGoodsKey(cartParamDto);
...@@ -124,6 +138,20 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -124,6 +138,20 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
} }
@Override @Override
public BaseResponse<String> setCartCouponCode(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartCouponCodeKey(cartParamDto);
redisTemplate.delete(redisKey);
BoundValueOperations<String, String> operations = redisTemplate.boundValueOps(redisKey);
operations.set(cartParamDto.getCouponCode());
return CartResponseUtil.success();
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "setCartCouponCode", cartParamDto, e, Level.ERROR);
return null;
}
}
@Override
public BaseResponse<CartGoods> getCartGoods(CartParamDto cartParamDto, String trackingNo) { public BaseResponse<CartGoods> getCartGoods(CartParamDto cartParamDto, String trackingNo) {
try { try {
String redisKey = getShoppingCartGoodsKey(cartParamDto); String redisKey = getShoppingCartGoodsKey(cartParamDto);
...@@ -170,6 +198,19 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -170,6 +198,19 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
} }
} }
@Override
public BaseResponse clearMCCafe(CartParamDto cartParamDto, String trackingNo) {
try {
redisTemplate.delete(this.getShoppingCartGoodsKey(cartParamDto));
redisTemplate.delete(this.getShoppingCartGoodsAmountKey(cartParamDto));
redisTemplate.delete(this.getShoppingCartCouponCodeKey(cartParamDto));
return new BaseResponse(VersionUtils.VER_1, CartResponseConstant.SUCCESS.getCode(), CartResponseConstant.SUCCESS.getMessage());
} catch (Exception e) {
ErrorLog.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "clear", cartParamDto, e, Level.ERROR);
return null;
}
}
/** /**
* 修正购物车中的spu和sku商品信息 * 修正购物车中的spu和sku商品信息
* *
...@@ -285,6 +326,16 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService { ...@@ -285,6 +326,16 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
return RedisKeyConstant.SAAS_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId(); return RedisKeyConstant.SAAS_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId();
} }
/**
* 获取记录购物车信息的key
*
* @return
*/
private String getShoppingCartCouponCodeKey(CartParamDto cartParamDto) {
return RedisKeyConstant.SAAS_SHOPPINGCART_COUPON_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId();
}
/** /**
* 获取记录购物车价格的key * 获取记录购物车价格的key
* *
......
...@@ -176,6 +176,12 @@ public class OrderAdapter { ...@@ -176,6 +176,12 @@ public class OrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType()))) .accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(orderAccountIndex++) .sequence(orderAccountIndex++)
.build(); .build();
if(mcCafePartnerId.equals(createOrderDto.getCompanyId())
&& ActivityTypeEnum.TYPE_1.getCode().equals(activityDiscountsDto.getActivityType())) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
}
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
......
...@@ -22,4 +22,5 @@ public class ActivityDiscountsDto { ...@@ -22,4 +22,5 @@ public class ActivityDiscountsDto {
private Integer discountAmount; private Integer discountAmount;
private Integer activityType; private Integer activityType;
private Integer actualActivityGoodsNumber; private Integer actualActivityGoodsNumber;
private String tenderId;
} }
...@@ -154,6 +154,8 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -154,6 +154,8 @@ public class ActivityCalculationDiscountResponseDto {
private Integer type; private Integer type;
private Long thresholdAmount; private Long thresholdAmount;
private String tenderId;
} }
@Data @Data
......
...@@ -21,6 +21,7 @@ public class ActivityDiscountsDto { ...@@ -21,6 +21,7 @@ public class ActivityDiscountsDto {
private String activityName; private String activityName;
private Integer discountAmount; private Integer discountAmount;
private Integer activityType; private Integer activityType;
private String tenderId;
/** /**
* 实际参与活动商品数量 * 实际参与活动商品数量
......
...@@ -124,4 +124,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -124,4 +124,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 配送费为零的原因:0:正常,1:超出配送范围 * 配送费为零的原因:0:正常,1:超出配送范围
*/ */
private Integer deliveryFeeZeroReason; private Integer deliveryFeeZeroReason;
/**
* 代金券
*/
private String couponCode;
} }
...@@ -19,6 +19,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest; ...@@ -19,6 +19,7 @@ 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;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -108,6 +109,25 @@ public class AssortmentSdkService { ...@@ -108,6 +109,25 @@ public class AssortmentSdkService {
} }
/** /**
* 调用聚合sdk获取缓存中购物车代金券信息
*
* @param partnerId
* @param storeId
* @param useId
* @return
*/
public String getShoppingCartCoupon(String partnerId, String storeId, String useId, ShoppingCartBaseService shoppingCartService) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId);
BaseResponse<String> baseResponse = shoppingCartService.getCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || StringUtils.isEmpty(baseResponse.getResult())) {
return "";
}
return baseResponse.getResult();
}
/**
* 调用聚合sdk设置缓存中购物车信息 * 调用聚合sdk设置缓存中购物车信息
* *
* @param partnerId * @param partnerId
...@@ -128,6 +148,25 @@ public class AssortmentSdkService { ...@@ -128,6 +148,25 @@ public class AssortmentSdkService {
return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class); return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class);
} }
/**
* 调用聚合sdk设置缓存中购物车代金券
*
* @param partnerId
* @param storeId
* @param useId
* @return
*/
public List<CartGoods> setShoppingCartCouponCode(String partnerId, String storeId, String useId, String couponCode, ShoppingCartBaseService shoppingCartService) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, useId);
cartParamDto.setCouponCode(couponCode);
BaseResponse<String> baseResponse = shoppingCartService.setCartCouponCode(cartParamDto, LogThreadLocal.getTrackingNo());
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) {
return null;
}
return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class);
}
/** /**
......
...@@ -297,6 +297,18 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -297,6 +297,18 @@ public class ShoppingCartMCoffeeServiceImpl {
Integer orderType = shoppingCartInfoRequestVo.getOrderType(); Integer orderType = shoppingCartInfoRequestVo.getOrderType();
String receiveId = shoppingCartInfoRequestVo.getReceiveId(); String receiveId = shoppingCartInfoRequestVo.getReceiveId();
/**
* 如果couponCode为空,则从缓存里尝试获取
* 如果couponCode不为空,则设置到缓存里
*/
if(StringUtils.isEmpty(couponCode)) {
couponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService);
//TODO 校验券是否可用,不可用要删除
} else {
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, couponCode, shoppingCartBaseService);
}
// 获取购物车商品 // 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, sessionId, "", shoppingCartBaseService); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, sessionId, "", shoppingCartBaseService);
...@@ -316,6 +328,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -316,6 +328,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);
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
...@@ -372,7 +385,7 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -372,7 +385,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String partnerId = shoppingCartClearRequestVo.getPartnerId(); String partnerId = shoppingCartClearRequestVo.getPartnerId();
String storeId = shoppingCartClearRequestVo.getShopId(); String storeId = shoppingCartClearRequestVo.getShopId();
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = assortmentSdkService.getCartParamDto(partnerId, storeId, userId); com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = assortmentSdkService.getCartParamDto(partnerId, storeId, userId);
shoppingCartBaseService.clear(cartParamDto, LogThreadLocal.getTrackingNo()); shoppingCartBaseService.clearMCCafe(cartParamDto, LogThreadLocal.getTrackingNo());
if (ObjectUtils.equals(shoppingCartClearRequestVo.getOperationType(), OperationTypeEnum.PAY_SUCCESS.getOperationType())) { if (ObjectUtils.equals(shoppingCartClearRequestVo.getOperationType(), OperationTypeEnum.PAY_SUCCESS.getOperationType())) {
return ResponseUtil.success(); return ResponseUtil.success();
} }
......
...@@ -193,6 +193,7 @@ public class CalculationServiceImpl { ...@@ -193,6 +193,7 @@ public class CalculationServiceImpl {
activityDiscountsDto.setActivityName(discount.getActivityName()); activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(discountType); activityDiscountsDto.setActivityType(discountType);
activityDiscountsDto.setDiscountAmount(0 - discountAmount); activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDto.setTenderId(discount.getTenderId());
activityDiscountsDtos.add(activityDiscountsDto); activityDiscountsDtos.add(activityDiscountsDto);
} }
} }
......
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