mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
软件购买流程修改,新的购买在前序记录上累加有效时间
This commit is contained in:
-1
@@ -491,7 +491,6 @@ public class ErrorCodeConstants {
|
||||
//=========== 产品延期管理 1-002-049-000 ============
|
||||
public static final ErrorCode PRODUCT_PURCHASE_NO_EXIST = new ErrorCode(1_002_049_001, "当前购买记录不存在,请检查");
|
||||
public static final ErrorCode PRODUCT_PURCHASE_ENDTIME_BEFORE_DELAYTIME_ERROR = new ErrorCode(1_002_049_002, "当前订购的产品延期时间{}超过续费时间{},请调整续费时长");
|
||||
public static final ErrorCode PRODUCT_PURCHASE_ENDTIME_NOT_ENOUGH_ERROR = new ErrorCode(1_002_049_003, "本次订购的产品结束时间{}早于当前有效产品结束时间{},请勿重复订购");
|
||||
|
||||
//=========== 手工调账管理 1-002-050-000 ============
|
||||
public static final ErrorCode RECHARGE_GIFT_MEANWHILE_EMPTY_ERROR = new ErrorCode(1_002_050_001, "充值金额、赠送金额不能同时为空");
|
||||
|
||||
+13
-21
@@ -44,7 +44,6 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.PAY_PRODUCT_BAL
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PAY_PRODUCT_GIFT_BALANCE_INSUFFICIENT;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PRODUCTS_DETAIL_DURATION_UNIT_NOT_SUPPORT;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PRODUCT_PURCHASE_ENDTIME_BEFORE_DELAYTIME_ERROR;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PRODUCT_PURCHASE_ENDTIME_NOT_ENOUGH_ERROR;
|
||||
|
||||
/**
|
||||
* 产品购买类型处理器
|
||||
@@ -74,6 +73,8 @@ public class PayProductProcessor {
|
||||
|
||||
private PurchaseRecordDO previousPurchaseRecord;
|
||||
|
||||
private LocalDate startTime = LocalDate.now();
|
||||
|
||||
public PayProductProcessor(ProductsDO productsDO, ProductsDetailDO productsDetailDO, PurchaseRecordDO orgInitialPurchaseRecord, PreviouProductDelayRespVO previouProductDelayRespVO,
|
||||
OrganAmountDO organAmountDO, Long organId, ChenfengPayConfig payConfig, MybatisIdProperties mybatisIdProperties) {
|
||||
this.productsDO = productsDO;
|
||||
@@ -82,6 +83,8 @@ public class PayProductProcessor {
|
||||
this.previouProductDelayRespVO = previouProductDelayRespVO;
|
||||
if (ObjectUtil.isNotNull(previouProductDelayRespVO.getPreviouPurchaseRecord())) {
|
||||
previousPurchaseRecord = previouProductDelayRespVO.getPreviouPurchaseRecord();
|
||||
// 如果有前置购买记录,那么新的开始时间是上一次订购的结束时间
|
||||
startTime = previousPurchaseRecord.getEndTime();
|
||||
}
|
||||
this.organAmountDO = organAmountDO;
|
||||
this.organId = organId;
|
||||
@@ -160,7 +163,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_ONLY.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -218,7 +221,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_ONLY.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -273,7 +276,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_ONLY.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -314,7 +317,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_ONLY.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -360,7 +363,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_AND_GIFT.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -438,7 +441,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayChannelCodeEnum.ALIPAY_PC.equals(payChannelCodeEnum) ? PayProductChannelCodeEnum.BALANCE_AND_GIFT_AND_ALIPAY.getCode() : PayProductChannelCodeEnum.BALANCE_AND_GIFT_AND_WECHAT.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -518,7 +521,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayChannelCodeEnum.ALIPAY_PC.equals(payChannelCodeEnum) ? PayProductChannelCodeEnum.GIFT_AND_ALIPAY.getCode() : PayProductChannelCodeEnum.GIFT_AND_WECHAT.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -600,7 +603,7 @@ public class PayProductProcessor {
|
||||
.purchaseDurationUnit(productsDetailDO.getDurationUnit())
|
||||
.giftDuration(productsDetailDO.getGiftDuration())
|
||||
.giftDurationUnit(productsDetailDO.getGiftDurationUnit())
|
||||
.startTime(LocalDate.now())
|
||||
.startTime(startTime)
|
||||
.paymentMethod(PayProductChannelCodeEnum.BALANCE_AND_GIFT.getCode())
|
||||
.totalAmount(price)
|
||||
.originalAmount(productsDetailDO.getCurrentPrice())
|
||||
@@ -721,17 +724,6 @@ public class PayProductProcessor {
|
||||
endTime = calculateDelayEndTime(startTime, endTime, delayRespVOList);
|
||||
}
|
||||
|
||||
PurchaseRecordDO previouPurchaseRecord = previouProductDelayRespVO.getPreviouPurchaseRecord();
|
||||
if (ObjectUtil.isNotNull(previouPurchaseRecord)) {
|
||||
// 如果本次订购的时间小于上次订购的结束时间,提示请勿重复订购
|
||||
LocalDate previouPurchaseRecordEndTime = previouPurchaseRecord.getEndTime();
|
||||
if (endTime.isBefore(previouPurchaseRecordEndTime)) {
|
||||
throw ServiceExceptionUtil.exception(PRODUCT_PURCHASE_ENDTIME_NOT_ENOUGH_ERROR,
|
||||
LocalDateTimeUtil.format(endTime, DatePattern.NORM_DATE_PATTERN),
|
||||
LocalDateTimeUtil.format(previouPurchaseRecordEndTime, DatePattern.NORM_DATE_PATTERN));
|
||||
}
|
||||
}
|
||||
|
||||
return endTime;
|
||||
}
|
||||
|
||||
@@ -762,7 +754,7 @@ public class PayProductProcessor {
|
||||
* @param delayRecordsList 延期列表
|
||||
* @return
|
||||
*/
|
||||
private static LocalDate calculateDelayEndTime(LocalDate startTime, LocalDate endTime, List<ProductDelayRespVO> delayRecordsList) {
|
||||
private LocalDate calculateDelayEndTime(LocalDate startTime, LocalDate endTime, List<ProductDelayRespVO> delayRecordsList) {
|
||||
// 筛选出延期列表结束时间排序最早和最晚的
|
||||
ProductDelayRespVO earliestDelayVO = delayRecordsList.stream().min(Comparator.comparing(ProductDelayRespVO::getEndTime)).get();
|
||||
ProductDelayRespVO lastestDelayVO = delayRecordsList.stream().max(Comparator.comparing(ProductDelayRespVO::getDelayTime)).get();
|
||||
|
||||
Reference in New Issue
Block a user