From 596ccfdfa75d70096edcc18db33a48e711bd3dc3 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Mon, 21 Apr 2025 11:55:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E8=B4=B9=E7=94=A8=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/ResFeignEbikeSysRcostsetDto.java | 5 - .../orders/enums/TimeDivisionCharging.java | 22 +++++ .../service/impl/UserOrdersServiceImpl.java | 92 ++++++++++++++++--- 3 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 ebike-orders/src/main/java/com/cdzy/orders/enums/TimeDivisionCharging.java diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/res/ResFeignEbikeSysRcostsetDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/res/ResFeignEbikeSysRcostsetDto.java index 69f4e014..70425215 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/model/res/ResFeignEbikeSysRcostsetDto.java +++ b/ebike-feign/src/main/java/com/ebike/feign/model/res/ResFeignEbikeSysRcostsetDto.java @@ -28,11 +28,6 @@ public class ResFeignEbikeSysRcostsetDto { */ private Character chargingMode; - /** - * 免费时长模式 - */ - private Character freeDurationMode; - /** * 免费时长 */ diff --git a/ebike-orders/src/main/java/com/cdzy/orders/enums/TimeDivisionCharging.java b/ebike-orders/src/main/java/com/cdzy/orders/enums/TimeDivisionCharging.java new file mode 100644 index 00000000..8d47ff06 --- /dev/null +++ b/ebike-orders/src/main/java/com/cdzy/orders/enums/TimeDivisionCharging.java @@ -0,0 +1,22 @@ +package com.cdzy.orders.enums; + +/** + * @author attiya + * @since 2025-04-21 + */ +public interface TimeDivisionCharging { + /** + * 关闭 + */ + char CLOSE = '1'; + + /** + * 时间段 + */ + char TIME_SLOT = '2'; + + /** + * 周计费 + */ + char WEEK = '3'; +} diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index cf06561d..4d24f1d8 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -5,10 +5,7 @@ import com.cdzy.common.enums.Code; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.ResGPSDto; import com.cdzy.orders.component.EbikeCoreHandler; -import com.cdzy.orders.enums.CmdCode; -import com.cdzy.orders.enums.EbikeRegionInOperation; -import com.cdzy.orders.enums.OrderStatus; -import com.cdzy.orders.enums.OrderType; +import com.cdzy.orders.enums.*; import com.cdzy.orders.mapper.UserOrdersMapper; import com.cdzy.orders.model.dto.req.ReqBikeDto; import com.cdzy.orders.model.dto.req.ReqOrderDto; @@ -36,6 +33,7 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; +import static com.cdzy.orders.enums.TimeDivisionCharging.*; import static com.cdzy.orders.model.entity.table.UserOrdersTableDef.USER_ORDERS; /** @@ -144,14 +142,8 @@ public class UserOrdersServiceImpl extends ServiceImpl stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.LOCK, Long.valueOf(bikeInfoDto.getBikeId()), userId); @@ -201,4 +193,80 @@ public class UserOrdersServiceImpl extends ServiceImpl timeSlotCostCalculation(totalAmount, minutes, userOrders, feignEbikeSysRcostsetDto); + case WEEK -> weekCostCalculation(totalAmount, minutes, userOrders, feignEbikeSysRcostsetDto); + default -> defaultCostCalculation(totalAmount, minutes, feignEbikeSysRcostsetDto); + }; + userOrders.setStatus(OrderStatus.PENDING_PAYMENT); + userOrders.setTotalAmount(totalAmount); + } + + /** + * 按照特殊时间段计费 + * @param totalAmount 当前金额(时间段计费前 + * @param minutes (骑行总分钟 + * @param userOrders 订单信息 + * @param feignEbikeSysRcostsetDto 计费规则 + * @return 计费后总金额 + */ + BigDecimal timeSlotCostCalculation(BigDecimal totalAmount,long minutes,UserOrders userOrders,ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto){ + return totalAmount; + } + + /** + * 按照时间段计费 + * @param totalAmount 当前金额(时间段计费前 + * @param minutes (骑行总分钟 + * @param userOrders 订单信息 + * @param feignEbikeSysRcostsetDto 计费规则 + * @return 计费后总金额 + */ + BigDecimal weekCostCalculation(BigDecimal totalAmount,long minutes,UserOrders userOrders,ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto){ + return totalAmount; + } + + /** + * 按照时间段计费(默认 + * @param totalAmount 当前金额(时间段计费前 + * @param minutes (骑行总分钟 + * @param feignEbikeSysRcostsetDto 计费规则 + * @return 计费后总金额 + */ + BigDecimal defaultCostCalculation(BigDecimal totalAmount,long minutes,ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto){ + return totalAmount; + } }