From 9fb8af07c30d9ab0351bb20dafd15cc61bc809267c7debbf8abb47a299690046 Mon Sep 17 00:00:00 2001 From: yanglei Date: Wed, 17 Dec 2025 15:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B9=E7=94=A8=E8=AE=A1=E7=AE=97=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cdzy/common/enums/GlobalConstants.java | 5 +++++ ...eOrderImpl.java => EbikeOrderServiceImpl.java} | 15 ++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) rename ebike-user/src/main/java/com/cdzy/user/service/impl/{EbikeOrderImpl.java => EbikeOrderServiceImpl.java} (96%) diff --git a/ebike-common/src/main/java/com/cdzy/common/enums/GlobalConstants.java b/ebike-common/src/main/java/com/cdzy/common/enums/GlobalConstants.java index 90fb73a..5b497b0 100644 --- a/ebike-common/src/main/java/com/cdzy/common/enums/GlobalConstants.java +++ b/ebike-common/src/main/java/com/cdzy/common/enums/GlobalConstants.java @@ -24,6 +24,10 @@ public interface GlobalConstants { Integer NUMBER_FIVE = 5; + Integer NUMBER_FIFTY_NINE = 59; + + Integer NUMBER_SIXTY = 60; + Integer NUMBER_ONE_HUNDRED = 100; // 字符串状态常量 @@ -54,4 +58,5 @@ public interface GlobalConstants { Long LONG_FIVE = 5L; + Long LONG_SIXTY = 60L; } diff --git a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java similarity index 96% rename from ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java rename to ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java index da35305..30700e3 100644 --- a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderImpl.java +++ b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java @@ -1,6 +1,7 @@ package com.cdzy.user.service.impl; import com.cdzy.common.enums.Code; +import com.cdzy.common.enums.GlobalConstants; import com.cdzy.common.ex.EbikeException; import com.cdzy.common.model.request.PageParam; import com.cdzy.common.model.response.JsonResult; @@ -54,7 +55,7 @@ import static com.cdzy.user.model.entity.table.EbikeRefundTableDef.EBIKE_REFUND; */ @Slf4j @Service -public class EbikeOrderImpl extends ServiceImpl implements EbikeOrderService { +public class EbikeOrderServiceImpl extends ServiceImpl implements EbikeOrderService { @Resource private EbikeOrderMapper ebikeOrderTransactionMapper; @@ -415,14 +416,18 @@ public class EbikeOrderImpl extends ServiceImpl im BigDecimal durationFee = bikeInfo.getDurationFee(); Integer freeDurationMinutes = bikeInfo.getFreeDurationMinutes(); Integer chargeDurationMinutes = bikeInfo.getChargeDurationMinutes(); - // 骑行时长(分钟) - long totalRideMinutes = Duration.between(startTime, endTime).toMinutes(); + // 获取总骑行时长(秒) + long totalRideSeconds = Duration.between(startTime, endTime).toSeconds(); + // 免费时间(秒) + long freeDurationSeconds = freeDurationMinutes * GlobalConstants.LONG_SIXTY; // 如果骑行时长小于等于免费时长,不收费 BigDecimal baseCost; - if (totalRideMinutes <= freeDurationMinutes) { + if (totalRideSeconds <= freeDurationSeconds) { return BigDecimal.ZERO; } else { - long chargeableMinutes = totalRideMinutes - freeDurationMinutes; + long totalRoundedMinutes = (totalRideSeconds + GlobalConstants.NUMBER_FIFTY_NINE) / GlobalConstants.NUMBER_SIXTY; + // 可计费分钟数 = 向上取整后的总分钟 - 免费分钟 + long chargeableMinutes = totalRoundedMinutes - freeDurationMinutes; long chargeUnits = (chargeableMinutes + chargeDurationMinutes - 1) / chargeDurationMinutes; BigDecimal durationCost = durationFee.multiply(BigDecimal.valueOf(chargeUnits)); // 总基础费用