新增优惠活动异常修复、软件购买计算赠送时间使用优惠活动的时长和单位完全匹配

This commit is contained in:
gaoqr
2025-11-04 14:37:01 +08:00
parent 44ddf171c9
commit 6d159ab429
2 changed files with 5 additions and 13 deletions
@@ -63,8 +63,8 @@ public class ProductPromotionServiceImpl implements ProductPromotionService {
AssertUtils.empty(productPromotionDO, PRODUCT_PROMOTION_PURCHASEDURATION_IS_EXIST, createReqVO.getPurchaseDuration(), DurationUnitEnum.getDesc(createReqVO.getPurchaseDurationUnit()));
ProductPromotionDO promotionDO = BeanUtils.toBean(createReqVO, ProductPromotionDO.class);
productPromotionDO.setProductId(productsDO.getId());
productPromotionDO.setProductName(productsDO.getProductName());
promotionDO.setProductId(productsDO.getId());
promotionDO.setProductName(productsDO.getProductName());
productPromotionMapper.insert(promotionDO);
return promotionDO.getId();
}
@@ -95,8 +95,8 @@ public class ProductPromotionServiceImpl implements ProductPromotionService {
AssertUtils.empty(productPromotionDO, PRODUCT_PROMOTION_PURCHASEDURATION_IS_EXIST, updateReqVO.getPurchaseDuration(), DurationUnitEnum.getDesc(updateReqVO.getPurchaseDurationUnit()));
ProductPromotionDO promotionDO = BeanUtils.toBean(updateReqVO, ProductPromotionDO.class);
productPromotionDO.setProductId(productsDO.getId());
productPromotionDO.setProductName(productsDO.getProductName());
promotionDO.setProductId(productsDO.getId());
promotionDO.setProductName(productsDO.getProductName());
productPromotionMapper.updateById(promotionDO);
}
@@ -288,6 +288,7 @@ public class PayProductProcessorNew {
}
/**
* 计算优惠活动赠送时长
*
* @param duration
* @param durationUnit
@@ -297,15 +298,6 @@ public class PayProductProcessorNew {
.filter(p -> duration.equals(p.getPurchaseDuration()) && durationUnit.equals(p.getPurchaseDurationUnit()))
.findFirst();
if (availableProductPromotionOpt.isEmpty()) {
// 没有精确匹配时,找同单位中 purchaseDuration 与 duration 差值最小的
availableProductPromotionOpt = availableProductPromotionList.stream()
.filter(p -> durationUnit.equals(p.getPurchaseDurationUnit()))
.min(Comparator.comparing(p -> BigDecimal.valueOf(
Math.abs(p.getPurchaseDuration() - duration))
));
}
if (availableProductPromotionOpt.isPresent()) {
ProductPromotionDO productPromotionDO = availableProductPromotionOpt.get();
productPromotionId = productPromotionDO.getId();