|
|
@@ -3258,6 +3258,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
//两者之间的差价
|
|
|
BigDecimal differPrice = upgradeSku.getPrice().subtract(goodsDonSku.getPrice());
|
|
|
+ Long userUpgradePackageId = chatgptUser.getPackageId();
|
|
|
+ //已升级的套餐包
|
|
|
+ if (userUpgradePackageId != 0) {
|
|
|
+ UpgradePackage hasUpgradePackage = upgradePackageMapper.selectById(userUpgradePackageId);
|
|
|
+ BigDecimal thisPackagePrice = hasUpgradePackage.getPrice();
|
|
|
+ differPrice = thisPackagePrice.subtract(upgradePackage.getPrice());
|
|
|
+ }
|
|
|
+
|
|
|
if (differPrice.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
throw BusinessRuntimeException.getInstance("车票套餐升级错误,请联系客服");
|
|
|
}
|
|
|
@@ -3265,9 +3273,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
//自然月差价
|
|
|
DateTime offset = DateUtil.offsetMonth(now, goodsDonSku.getMonths());
|
|
|
long totalDays = DateUtil.between(now, offset, DateUnit.DAY) + 1;
|
|
|
- BigDecimal singlePrice = differPrice.divide(BigDecimal.valueOf(totalDays), 0, RoundingMode.DOWN);
|
|
|
-
|
|
|
- BigDecimal payUpgradePackagePrice = singlePrice.multiply(BigDecimal.valueOf(day));
|
|
|
+ //待支付价格
|
|
|
+ BigDecimal payUpgradePackagePrice = differPrice.multiply(BigDecimal.valueOf(day)).divide(BigDecimal.valueOf(totalDays), 0, RoundingMode.HALF_UP);
|
|
|
if (payRequest.getDonMoney().compareTo(payUpgradePackagePrice) < 0) {
|
|
|
payRequest.setDonMoney(payUpgradePackagePrice);
|
|
|
}
|
|
|
@@ -3465,10 +3472,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
if (chatgptUser != null) {
|
|
|
Long time = upgradePackage.getTime();
|
|
|
Integer num = upgradePackage.getNum();
|
|
|
+ //下次清洗用户套餐包时间 避免续费时间修改
|
|
|
+ Date clearPackageTime = chatgptUser.getExpireTime();
|
|
|
|
|
|
int update = chatgptUserMapper.update(null, Wrappers.lambdaUpdate(ChatgptUser.class)
|
|
|
.set(ChatgptUser::getLimitTime, time)
|
|
|
.set(ChatgptUser::getLimitNum, num)
|
|
|
+ .set(ChatgptUser::getPackageId, orderDon.getPackageId())
|
|
|
+ .set(ChatgptUser::getClearPackageTime, clearPackageTime)
|
|
|
.eq(ChatgptUser::getId, chatgptUser.getId()));
|
|
|
if (update == 0) {
|
|
|
log.info("chatgptUser 升级套餐包增值失败 id:{},orderId:{}", chatgptUser.getId(), orderDon.getId());
|