From ce86bb5f9566ad39cd59923988ea4f57dcfff7bb Mon Sep 17 00:00:00 2001 From: ljw Date: Mon, 22 Dec 2025 14:35:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E9=A9=B3=E5=85=A5=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=90=A5=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../money/contant/MoneyChangeCategory.java | 1 + .../pojo/result/PaymentContextResult.java | 4 + .../order/service/OrderInfoService.java | 97 ++++++++++++------- .../mapper/order/OrderInfoMapper.xml | 1 + 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/money/contant/MoneyChangeCategory.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/money/contant/MoneyChangeCategory.java index 558c976..a4d9327 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/money/contant/MoneyChangeCategory.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/money/contant/MoneyChangeCategory.java @@ -16,6 +16,7 @@ public enum MoneyChangeCategory implements DictStr { DingDanTiaoZhang("DingDanTiaoZhang", "订单调账"), DingDanKouKuan("DingDanKouKuan", "订单扣款"), DingDanTuiKuan("DingDanTuiKuan", "订单退款"), + DuanBoYingShou("DuanBoYingShou", "短驳营收"), ; private final String val; private final String txt; diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/result/PaymentContextResult.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/result/PaymentContextResult.java index 7b94165..b4ed5f9 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/result/PaymentContextResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/result/PaymentContextResult.java @@ -7,6 +7,9 @@ import lombok.experimental.Accessors; import java.math.BigDecimal; +/** + * @author ljw + */ @Getter @Setter @ToString @@ -20,6 +23,7 @@ public class PaymentContextResult { private Long companyUserId; private Long companyAccountId; private BigDecimal companyBalance; + private BigDecimal revenue; private String settlementWay; diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java index 3829ff2..08d1f44 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java @@ -881,7 +881,7 @@ public class OrderInfoService extends ServiceImpl Exceptions.clierr("产品不存在")); - if (MoneyWay.IN.getVal().equals(entity.getMoneyWay())) { + if (MoneyWay.IN.getVal().equals(entity.getMoneyWay()) && OrderCategory.PuTong.equals(orderInfo.getOrderCategory())) { // 入场付费无称重,不需要更新付费项 // 处理公司支付 handleCompanyPay(orderInfo, Boolean.TRUE, new BigDecimal("0"), Boolean.FALSE); @@ -937,15 +937,43 @@ public class OrderInfoService extends ServiceImpl 0) { - if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) { - String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ? - SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt(); - BigDecimal oldBalance = ctx.getCompanyBalance(); - BigDecimal newBalance = oldBalance.subtract(payMoney); - // 更新账户余额(支持负数余额) + if (OrderCategory.PuTong.equals(orderInfo.getOrderCategory())) { + if (!SettlementWay.CASH.getVal().equals(ctx.getSettlementWay())) { + String way = SettlementWay.BALANCE.getVal().equals(ctx.getSettlementWay()) ? + SettlementWay.BALANCE.getTxt() : SettlementWay.MONTH.getTxt(); + BigDecimal oldBalance = ctx.getCompanyBalance(); + BigDecimal newBalance = oldBalance.subtract(payMoney); + // 更新账户余额(支持负数余额) + MoneyAccountEntity companyAccount = new MoneyAccountEntity() + .setId(ctx.getCompanyAccountId()) + .setMoney(newBalance); + moneyAccountService.updateById(companyAccount); + + // 记录资金变动明细 + MoneyChangeDetailEntity changeDetail = new MoneyChangeDetailEntity() + .setCompanyId(ctx.getTransCompanyId()) + .setOrderId(orderInfo.getId()) + .setMoneyAccountId(companyAccount.getId()) + .setOldMoney(oldBalance) + // 扣减为负数 + .setDelta(payMoney.negate()) + .setNewMoney(newBalance) + .setMoneyChangeCategory(MoneyChangeCategory.DingDanKouKuan) + .setMemo("订单支付扣款,订单号:" + orderInfo.getSn() + ",结算方式:" + way); + + moneyChangeDetailService.save(changeDetail); + + log.info("公司账户扣减成功,用户ID:{},扣减金额:{},余额:{} -> {},结算方式:{}", + ctx.getCompanyUserId(), payMoney, oldBalance, newBalance, ctx.getSettlementWay()); + } + } else if (OrderCategory.DuanBoRu.equals(orderInfo.getOrderCategory())) { + // 短驳入订单,增加营收 + BigDecimal oldRevenue = ctx.getRevenue(); + BigDecimal newRevenue = oldRevenue.add(payMoney); + // 更新账户营收 MoneyAccountEntity companyAccount = new MoneyAccountEntity() .setId(ctx.getCompanyAccountId()) - .setMoney(newBalance); + .setRevenue(newRevenue); moneyAccountService.updateById(companyAccount); // 记录资金变动明细 @@ -953,31 +981,30 @@ public class OrderInfoService extends ServiceImpl {},结算方式:{}", - ctx.getCompanyUserId(), payMoney, oldBalance, newBalance, ctx.getSettlementWay()); - - // 更新订单支付状态为已支付 - OrderInfoEntity entity = new OrderInfoEntity(); - entity.setId(orderInfo.getId()); - entity.setPaymentStatus(PaymentStatus.YiZhiFu); - entity.setSettlementWay(ctx.getSettlementWay()); - entity.setPayTime(LocalDateTime.now()); - if (!isIn) { - entity.setOrderStatus(OrderStatus.YiWanCheng); - this.updateById(entity); - return true; - } else { - this.updateById(entity); - } - + log.info("公司营收增加成功,用户ID:{},扣减金额:{},余额:{} -> {}", + ctx.getCompanyUserId(), payMoney, oldRevenue, newRevenue); + } + // 更新订单支付状态为已支付 + OrderInfoEntity entity = new OrderInfoEntity(); + entity.setId(orderInfo.getId()); + entity.setPaymentStatus(PaymentStatus.YiZhiFu); + entity.setSettlementWay(ctx.getSettlementWay()); + entity.setPayTime(LocalDateTime.now()); + if (!isIn) { + entity.setOrderStatus(OrderStatus.YiWanCheng); + this.updateById(entity); + return true; + } else { + this.updateById(entity); } } else { // 如果支付金额为0,则直接改状态 @@ -1250,11 +1277,6 @@ public class OrderInfoService extends ServiceImpl