Commit 9c89f33a by huiyang.chen

单品特价分摊处理和核销优化券

parent 85b64ab9
...@@ -2511,17 +2511,19 @@ public class OrderAdapter { ...@@ -2511,17 +2511,19 @@ public class OrderAdapter {
} }
Long scoreReduceAmount = shoppingCartGoodsResponse.getScoreReduceAmount() != null ? shoppingCartGoodsResponse.getScoreReduceAmount() : 0; if (shoppingCartGoodsResponse != null) {
if (scoreReduceAmount > 0 && CustomerScoreConstant.SUBSTRACT.getValue().equals(createReserveOrderVo.getUseCustomerScore())) { Long scoreReduceAmount = shoppingCartGoodsResponse.getScoreReduceAmount() != null ? shoppingCartGoodsResponse.getScoreReduceAmount() : 0;
Integer reduceScore = shoppingCartGoodsResponse.getReduceScore() != null ? shoppingCartGoodsResponse.getReduceScore().intValue() : 0; if (scoreReduceAmount > 0 && CustomerScoreConstant.SUBSTRACT.getValue().equals(createReserveOrderVo.getUseCustomerScore())) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder() Integer reduceScore = shoppingCartGoodsResponse.getReduceScore() != null ? shoppingCartGoodsResponse.getReduceScore().intValue() : 0;
.accountId("") CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.name("积分扣减") .accountId("")
.price(0 - scoreReduceAmount) .name("积分扣减")
.accountType(getQueryOrderAccountType(OldOrderAccountType.getByCode(OrderAccountType.CUSTOMER_SUB.getCode()))) .price(0 - scoreReduceAmount)
.sequence(orderAccountIndex++) .accountType(getQueryOrderAccountType(OldOrderAccountType.getByCode(OrderAccountType.CUSTOMER_SUB.getCode())))
.build(); .sequence(orderAccountIndex++)
sdkUpdateOrderProductInfoRequest.getAccounts().add(createOrderAccountDto); .build();
sdkUpdateOrderProductInfoRequest.getAccounts().add(createOrderAccountDto);
}
} }
// Long cardOriginalAmount = shoppingCartGoodsDto.getCardOriginalAmount() != null ? shoppingCartGoodsDto.getCardOriginalAmount() : 0L; // Long cardOriginalAmount = shoppingCartGoodsDto.getCardOriginalAmount() != null ? shoppingCartGoodsDto.getCardOriginalAmount() : 0L;
// if (cardOriginalAmount > 0) { // if (cardOriginalAmount > 0) {
......
...@@ -18,6 +18,7 @@ import cn.freemud.enums.RedisCacheEnum; ...@@ -18,6 +18,7 @@ import cn.freemud.enums.RedisCacheEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponActivityService;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.utils.DateTimeUtil; import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
...@@ -100,6 +101,8 @@ public class OrderCommonService { ...@@ -100,6 +101,8 @@ public class OrderCommonService {
private MessageCenterClient messageNoticeClient; private MessageCenterClient messageNoticeClient;
@Autowired @Autowired
private RedisService redisService; private RedisService redisService;
@Autowired
private CouponActivityService couponActivityService;
private final Integer RESPONSE_SUCCESS_CODE = 100; private final Integer RESPONSE_SUCCESS_CODE = 100;
/** /**
...@@ -272,6 +275,10 @@ public class OrderCommonService { ...@@ -272,6 +275,10 @@ public class OrderCommonService {
LogUtil.error("paySuccessCallback_payAccess_faild", JSON.toJSONString(message), JSON.toJSONString(groupOrderResponse)); LogUtil.error("paySuccessCallback_payAccess_faild", JSON.toJSONString(message), JSON.toJSONString(groupOrderResponse));
return this.newSendPayFaileMessage(); return this.newSendPayFaileMessage();
} }
//若该订单使用了优惠券,则移除卡包,移除失败也不退款
couponActivityService.callbackNotify(orderBean);
// 删除订单自增缓存 // 删除订单自增缓存
redisCache.delete(RedisUtil.getPaymentTransIdSequenceKey(orderBean.getOid())); redisCache.delete(RedisUtil.getPaymentTransIdSequenceKey(orderBean.getOid()));
// 删除支付交易号订单关系缓存 // 删除支付交易号订单关系缓存
......
...@@ -9,6 +9,7 @@ import cn.freemud.entities.vo.CartGoods; ...@@ -9,6 +9,7 @@ import cn.freemud.entities.vo.CartGoods;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -70,7 +71,15 @@ public class TimeSalePromotionService implements IPromotionService { ...@@ -70,7 +71,15 @@ public class TimeSalePromotionService implements IPromotionService {
} }
Integer actualGoodsNumber = numberMap.get(product.getProductId()); Integer actualGoodsNumber = numberMap.get(product.getProductId());
if (actualGoodsNumber > 0) { if (actualGoodsNumber > 0) {
Integer totalDiscountAmount = product.getQty() > actualGoodsNumber ? goods.getDiscountAmount() * actualGoodsNumber / goods.getActualGoodsNumber() : goods.getDiscountAmount() * product.getQty() / goods.getActualGoodsNumber(); // 重新计算单品特价折扣
List<CalculationGoodsActivityDto> discounts = goods.getDiscounts();
Integer actual = 0;
for (CalculationGoodsActivityDto dto: discounts) {
if (ObjectUtils.equals(dto.getType(),ActivityTypeEnum.TYPE_2.getCode())){
actual += dto.getDiscount();
}
}
Integer totalDiscountAmount = product.getQty() > actualGoodsNumber ? actual * actualGoodsNumber / goods.getActualGoodsNumber() : actual * product.getQty() / goods.getActualGoodsNumber();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode()); activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName()); activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
......
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