Commit 4faf9dd2 by 吕明尚

修改计算订单价格,用户钱包计算增加会员日的处理

parent e60d3fef
...@@ -1884,7 +1884,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1884,7 +1884,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
activity = activityService.getOne(queryWrapper); activity = activityService.getOne(queryWrapper);
totalFee = getBigDecimal(request, activity, payPrice, user); totalFee = getBigDecimal(request, activity, payPrice, user);
} }
totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, room); totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, room, request);
} else { } else {
SPack byId = packService.getById(roomLabel.getPackId()); SPack byId = packService.getById(roomLabel.getPackId());
if (!ObjectUtils.isEmpty(byId) && byId.getIsOpen().equals(YesNoEnum.yes.getIndex())) { if (!ObjectUtils.isEmpty(byId) && byId.getIsOpen().equals(YesNoEnum.yes.getIndex())) {
...@@ -1896,7 +1896,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1896,7 +1896,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
totalFee = getBigDecimal(request, activity, payPrice, user); totalFee = getBigDecimal(request, activity, payPrice, user);
} }
// totalFee = getBigDecimal(consumerWallet, timeLong, priceResponse, totalFee, byId); // totalFee = getBigDecimal(consumerWallet, timeLong, priceResponse, totalFee, byId);
totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, byId); totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, byId, request);
} else { } else {
payPrice = totalPrice; payPrice = totalPrice;
request.setBuyType(BuyTypeEnum.TIME.getCode()); request.setBuyType(BuyTypeEnum.TIME.getCode());
...@@ -1906,7 +1906,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1906,7 +1906,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
totalFee = getBigDecimal(request, activity, payPrice, user); totalFee = getBigDecimal(request, activity, payPrice, user);
} }
// totalFee = getBigDecimal(consumerWallet, timeLong, priceResponse, totalFee, room); // totalFee = getBigDecimal(consumerWallet, timeLong, priceResponse, totalFee, room);
totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, room); totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, room, request);
} }
} }
} else if (!ObjectUtils.isEmpty(request.getPackId())) { } else if (!ObjectUtils.isEmpty(request.getPackId())) {
...@@ -1918,7 +1918,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1918,7 +1918,7 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
activity = activityService.getOne(queryWrapper); activity = activityService.getOne(queryWrapper);
totalFee = getBigDecimal(request, activity, payPrice, user); totalFee = getBigDecimal(request, activity, payPrice, user);
} }
totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, byId); totalFee = getBigDecimal(consumerWallet, activity, timeLong, priceResponse, totalFee, byId, request);
} }
priceResponse.setTotalFee(payPrice); priceResponse.setTotalFee(payPrice);
if (ObjectUtil.isEmpty(consumerWallet) && totalFee.compareTo(new BigDecimal(0)) == 0) { if (ObjectUtil.isEmpty(consumerWallet) && totalFee.compareTo(new BigDecimal(0)) == 0) {
...@@ -1954,9 +1954,43 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1954,9 +1954,43 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
return priceResponse; return priceResponse;
} }
private BigDecimal getBigDecimal(ConsumerWallet consumerWallet, Activity activity, BigDecimal timeLong, ComputedOrderPriceResponse priceResponse, BigDecimal totalFee, SRoom room) { private BigDecimal getBigDecimal(ConsumerWallet consumerWallet, Activity activity, BigDecimal timeLong, ComputedOrderPriceResponse priceResponse, BigDecimal totalFee, SRoom room, OrderComputedPriceRequest request) {
if (ObjectUtil.isNotEmpty(consumerWallet)) { if (ObjectUtil.isNotEmpty(consumerWallet)) {
if (ObjectUtil.isEmpty(activity)) { CronParser cronParser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
if (ObjectUtil.isNotEmpty(activity)) {
Cron cron = cronParser.parse(activity.getCronExpression());
ExecutionTime executionTime = ExecutionTime.forCron(cron);
boolean match = executionTime.isMatch(ZonedDateTime.ofInstant(request.getPreStartDate().toInstant(), ZoneId.systemDefault()));
boolean match1 = executionTime.isMatch(ZonedDateTime.ofInstant(request.getPreEndDate().toInstant(), ZoneId.systemDefault()));
if (match && match1) {
if (consumerWallet.getBalance().compareTo(totalFee) >= 0) {
priceResponse.setBalance(totalFee);
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(totalFee));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(totalFee) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
totalFee = totalFee.subtract(consumerWallet.getBalance());
}
} else {
if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) {
priceResponse.setDuration(timeLong);
priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getRemainingDuration().compareTo(timeLong) < 0) {
priceResponse.setDuration(consumerWallet.getRemainingDuration());
priceResponse.setRemainingDuration(new BigDecimal(0));
BigDecimal remainingBalance = timeLong.subtract(consumerWallet.getRemainingDuration()).multiply(room.getPrice());
if (consumerWallet.getBalance().compareTo(remainingBalance) >= 0) {
priceResponse.setBalance(remainingBalance);
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(remainingBalance));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(remainingBalance) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
totalFee = remainingBalance.subtract(consumerWallet.getBalance());
}
}
}
} else {
if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) { if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) {
priceResponse.setDuration(timeLong); priceResponse.setDuration(timeLong);
priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong)); priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong));
...@@ -1974,24 +2008,47 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -1974,24 +2008,47 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
totalFee = remainingBalance.subtract(consumerWallet.getBalance()); totalFee = remainingBalance.subtract(consumerWallet.getBalance());
} }
} }
} else {
if (consumerWallet.getBalance().compareTo(totalFee) >= 0) {
priceResponse.setBalance(totalFee);
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(totalFee));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(totalFee) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
totalFee = totalFee.subtract(consumerWallet.getBalance());
}
} }
} }
return totalFee; return totalFee;
} }
private BigDecimal getBigDecimal(ConsumerWallet consumerWallet, Activity activity, BigDecimal timeLong, ComputedOrderPriceResponse priceResponse, BigDecimal totalFee, SPack byId) { private BigDecimal getBigDecimal(ConsumerWallet consumerWallet, Activity activity, BigDecimal timeLong, ComputedOrderPriceResponse priceResponse, BigDecimal totalFee, SPack byId, OrderComputedPriceRequest request) {
if (ObjectUtil.isNotEmpty(consumerWallet)) { if (ObjectUtil.isNotEmpty(consumerWallet)) {
if (ObjectUtil.isEmpty(activity)) { CronParser cronParser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
if (ObjectUtil.isNotEmpty(activity)) {
Cron cron = cronParser.parse(activity.getCronExpression());
ExecutionTime executionTime = ExecutionTime.forCron(cron);
boolean match = executionTime.isMatch(ZonedDateTime.ofInstant(request.getPreStartDate().toInstant(), ZoneId.systemDefault()));
boolean match1 = executionTime.isMatch(ZonedDateTime.ofInstant(request.getPreEndDate().toInstant(), ZoneId.systemDefault()));
if (match && match1) {
if (consumerWallet.getBalance().compareTo(totalFee) >= 0) {
priceResponse.setBalance(totalFee);
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(totalFee));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(totalFee) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
priceResponse.setRemainingBalance(new BigDecimal(0));
totalFee = totalFee.subtract(consumerWallet.getBalance());
}
} else {
if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) {
priceResponse.setDuration(timeLong);
priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getRemainingDuration().compareTo(timeLong) < 0) {
if (consumerWallet.getBalance().compareTo(byId.getPrice()) >= 0) {
priceResponse.setBalance(byId.getPrice());
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(byId.getPrice()));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(byId.getPrice()) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
priceResponse.setRemainingBalance(new BigDecimal(0));
totalFee = byId.getPrice().subtract(consumerWallet.getBalance());
}
}
}
} else {
if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) { if (consumerWallet.getRemainingDuration().compareTo(timeLong) >= 0) {
priceResponse.setDuration(timeLong); priceResponse.setDuration(timeLong);
priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong)); priceResponse.setRemainingDuration(consumerWallet.getRemainingDuration().subtract(timeLong));
...@@ -2007,16 +2064,6 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme ...@@ -2007,16 +2064,6 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
totalFee = byId.getPrice().subtract(consumerWallet.getBalance()); totalFee = byId.getPrice().subtract(consumerWallet.getBalance());
} }
} }
} else {
if (consumerWallet.getBalance().compareTo(totalFee) >= 0) {
priceResponse.setBalance(totalFee);
priceResponse.setRemainingBalance(consumerWallet.getBalance().subtract(totalFee));
totalFee = new BigDecimal(0);
} else if (consumerWallet.getBalance().compareTo(totalFee) < 0) {
priceResponse.setBalance(consumerWallet.getBalance());
priceResponse.setRemainingBalance(new BigDecimal(0));
totalFee = totalFee.subtract(consumerWallet.getBalance());
}
} }
} }
return totalFee; return totalFee;
......
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