Commit 9c89f33a by huiyang.chen

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

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