Commit 99ec4506 by 徐康

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

parent a2a4bc16
......@@ -21,6 +21,10 @@ public class RedisKeyConstant {
/**
* 用户购物车在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:";
/**
* 用户购物车总价在redis的key前缀
......
......@@ -34,6 +34,8 @@ public class CartParamDto {
private String cartGoodsUid;
private String couponCode;
private Integer qty;
private MealClearOperationEnum operationType;
......
......@@ -77,6 +77,14 @@ public interface ShoppingCartBaseService {
BaseResponse<List<CartGoods>> getCartGoodsList(CartParamDto cartParamDto, String trackingNo);
/**
* 获取购物车商品代金券
*
* @param cartParamDto
* @return
*/
BaseResponse<String> getCartCouponCode(CartParamDto cartParamDto, String trackingNo);
/**
* 设置购物车商品行集合信息
*
* @param cartParamDto
......@@ -84,6 +92,14 @@ public interface ShoppingCartBaseService {
*/
BaseResponse<List<CartGoods>> setCartGoodsList(CartParamDto cartParamDto, String trackingNo);
/**
* 设置购物车代金券信息
*
* @param cartParamDto
* @return
*/
BaseResponse<String> setCartCouponCode(CartParamDto cartParamDto, String trackingNo);
default boolean addCartGoodList(CartParamDto cartParamDto) {
return true;
}
......@@ -96,6 +112,12 @@ public interface ShoppingCartBaseService {
BaseResponse clear(CartParamDto cartParamDto, String trackingNo);
/**
* 清除麦咖啡购物车商品行信息
*
* @param cartParamDto
*/
BaseResponse clearMCCafe(CartParamDto cartParamDto, String trackingNo);
/**
* 获取商品详细信息
*
* @param getProductInfoRequest
......
......@@ -39,6 +39,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
......@@ -107,6 +108,19 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
}
@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) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
......@@ -124,6 +138,20 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
}
@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) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
......@@ -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商品信息
*
......@@ -285,6 +326,16 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
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
*
......
......@@ -176,6 +176,12 @@ public class OrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(orderAccountIndex++)
.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);
}
......
......@@ -22,4 +22,5 @@ public class ActivityDiscountsDto {
private Integer discountAmount;
private Integer activityType;
private Integer actualActivityGoodsNumber;
private String tenderId;
}
......@@ -154,6 +154,8 @@ public class ActivityCalculationDiscountResponseDto {
private Integer type;
private Long thresholdAmount;
private String tenderId;
}
@Data
......
......@@ -21,6 +21,7 @@ public class ActivityDiscountsDto {
private String activityName;
private Integer discountAmount;
private Integer activityType;
private String tenderId;
/**
* 实际参与活动商品数量
......
......@@ -124,4 +124,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 配送费为零的原因:0:正常,1:超出配送范围
*/
private Integer deliveryFeeZeroReason;
/**
* 代金券
*/
private String couponCode;
}
......@@ -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.service.ShoppingCartBaseService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -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设置缓存中购物车信息
*
* @param partnerId
......@@ -128,6 +148,25 @@ public class AssortmentSdkService {
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 {
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
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);
......@@ -316,6 +328,7 @@ public class ShoppingCartMCoffeeServiceImpl {
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
shoppingCartGoodsResponseVo.setCouponCode(couponCode);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
......@@ -372,7 +385,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String partnerId = shoppingCartClearRequestVo.getPartnerId();
String storeId = shoppingCartClearRequestVo.getShopId();
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())) {
return ResponseUtil.success();
}
......
......@@ -193,6 +193,7 @@ public class CalculationServiceImpl {
activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(discountType);
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDto.setTenderId(discount.getTenderId());
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