浏览代码

人工录入新增扣款的逻辑

donglang 7 小时之前
父节点
当前提交
5aedf587c3

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtParkingWalletFeeBalance.java

@@ -41,6 +41,11 @@ public class KwtParkingWalletFeeBalance implements Serializable {
      */
     private Integer tradeType;
 
+    /**
+     * 资金类型(1-预付、 2-扣款)
+     */
+    private Integer paymentType;
+
     /**
      * 交易金额
      */

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/ParkingWalletFeeSaveParam.java

@@ -65,4 +65,11 @@ public class ParkingWalletFeeSaveParam extends PageReq implements Serializable {
     private String remark;
 
 
+    /**
+     * 资金类型(1-预付、 2-扣款)
+     */
+    @NotNull(message = "资金类型为空")
+    @Schema(description = "资金类型")
+    private Integer paymentType;
+
 }

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/ParkingWalletFeeBalanceResp.java

@@ -60,6 +60,11 @@ public class ParkingWalletFeeBalanceResp implements Serializable {
      */
     private String tradeTypeDesc;
 
+    /**
+     * 资金类型(1-预付、 2-扣款)
+     */
+    private Integer paymentType;
+
     /**
      * 交易金额
      */

+ 15 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ParkingWalletFeeService.java

@@ -220,10 +220,20 @@ public class ParkingWalletFeeService {
 
         KwtParkingWalletFee walletFee = parkingWalletFeeRepository.getById(param.getId());
         if (walletFee == null) {
-            throw new BusinessPlatfromException(ErrorCodeEnum.DRIVER_NOT_FOUND, "服务费信息不存在");
+            throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "服务费信息不存在");
         }
+
+        // 预付
+        if (Objects.equals(param.getPaymentType(), 1)) {
+            walletFee.setServiceFeeBalance(walletFee.getServiceFeeBalance().add(param.getServiceFee()));
+        }else {
+            if (walletFee.getServiceFeeBalance().compareTo(param.getServiceFee()) < 0) {
+                throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "扣款金额不能大于服务余额");
+            }
+            walletFee.setServiceFeeBalance(walletFee.getServiceFeeBalance().subtract(param.getServiceFee()));
+        }
+
         // 1. 先修改服务余额
-        walletFee.setServiceFeeBalance(walletFee.getServiceFeeBalance().add(param.getServiceFee()));
         parkingWalletFeeRepository.updateById(walletFee);
 
         // 2.新增明细
@@ -231,6 +241,7 @@ public class ParkingWalletFeeService {
         feeBalance.setSupEntId(param.getSupEntId());
         feeBalance.setProEntId(param.getProEntId());
         feeBalance.setTradeType(9);
+        feeBalance.setPaymentType(param.getPaymentType());
         feeBalance.setTradeAmount(param.getServiceFee());
         feeBalance.setServiceFeeBalance(walletFee.getServiceFeeBalance());
         feeBalance.setTradingAmount(walletFee.getTradingAmount());
@@ -298,7 +309,8 @@ public class ParkingWalletFeeService {
                     resp.setSupEntName(getEntName(feeBalance.getSupEntId()));
                     resp.setTradeType(feeBalance.getTradeType());
                     resp.setTradeTypeDesc(WalletTypEnum.getDescByCode(feeBalance.getTradeType()));
-                    resp.setTradeAmount(feeBalance.getTradeAmount());
+                    resp.setPaymentType(feeBalance.getPaymentType());
+                    resp.setTradeAmount(Objects.equals(feeBalance.getPaymentType(), 1) ? feeBalance.getTradeAmount() : feeBalance.getTradeAmount().negate());
                     resp.setServiceFeeBalance(feeBalance.getServiceFeeBalance());
                     resp.setTradingAmount(feeBalance.getTradingAmount());
                     resp.setVoucherUrl(feeBalance.getVoucherUrl());

+ 1 - 0
sql/2026/01/2026_01_06_donglang_create.sql

@@ -148,6 +148,7 @@ CREATE TABLE `kwt_parking_wallet_fee_balance` (
                                           `pro_ent_id`                    bigint          NOT NULL DEFAULT '-1' COMMENT '采购商企业id',
                                           `sup_ent_id`                    bigint          NOT NULL DEFAULT '-1' COMMENT '供应商企业id',
                                           `trade_type`                    int             NOT NULL DEFAULT '0' COMMENT '交易类型 2-预付 3-收益 4-冻结 5-解冻 6-消费 9-人工录入',
+                                          `payment_type` int NOT NULL DEFAULT '0' COMMENT '交易类型 1-预付、 2-扣款',
                                           `trade_amount`                  decimal(16,2)   NOT NULL DEFAULT '0.00' COMMENT '交易金额',
                                           `service_fee_balance`           decimal(16,2)   NOT NULL DEFAULT '0.00' COMMENT '服务费余额',
                                           `trading_amount`                decimal(16,2)   NOT NULL DEFAULT '0.00' COMMENT '履约中金额',