高峰出行日收费规则:优化

This commit is contained in:
attiya 2025-04-27 17:16:14 +08:00
parent f7797f8ae6
commit 7dd75890a2

View File

@ -408,28 +408,18 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
* @param feignEbikeSysRcostsetDto 计费规则
* @return 计费后总金额
*/
BigDecimal weekCostCalculation(List<EbikeOrderDetails> list,EbikeUserOrders userOrders, ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto) {
BigDecimal weekCostCalculation(List<EbikeOrderDetails> list, EbikeUserOrders userOrders, ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto) {
BigDecimal decimal = new BigDecimal(0);
LocalDateTime startTime = userOrders.getStartTime();
LocalDateTime endTime = userOrders.getEndTime();
boolean crossDay = TimeUtils.isCrossDay(startTime, endTime);
Long orderId = userOrders.getOrderId();
if (!crossDay) {
//未跨天
TimeSegment timeSegment = new TimeSegment(startTime, endTime);
//处理为自然时间段防止跨天
List<TimeSegment> timeSegments = TimeUtils.splitByDays(startTime, endTime);
for (int i = 0; i < timeSegments.size(); i++) {
TimeSegment timeSegment = timeSegments.get(i);
boolean checked = checkWeek(timeSegment, feignEbikeSysRcostsetDto);
BigDecimal dailiedFee = dailyFee(timeSegment, feignEbikeSysRcostsetDto, true, checked, list, orderId);
BigDecimal dailiedFee = dailyFee(timeSegment, feignEbikeSysRcostsetDto, i < 1, checked, list, orderId);
decimal = decimal.add(dailiedFee);
} else {
//跨天
List<TimeSegment> timeSegments = TimeUtils.splitByDays(startTime, endTime);
for (int i = 0; i < timeSegments.size(); i++) {
TimeSegment timeSegment = timeSegments.get(i);
boolean checked = checkWeek(timeSegment, feignEbikeSysRcostsetDto);
BigDecimal dailiedFee = dailyFee(timeSegment, feignEbikeSysRcostsetDto, i < 1, checked, list, orderId);
decimal = decimal.add(dailiedFee);
}
}
return decimal;
}
@ -558,7 +548,7 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
/**
* 按照时间段计费(默认
*
* @param userOrders 订单信息
* @param userOrders 订单信息
* @param feignEbikeSysRcostsetDto 计费规则
* @return 计费后总金额
*/