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

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