浏览代码

feat(order): 新增订单支付后店铺余额变更记录

- 在订单支付成功后插入店铺余额变动记录
- 查询并更新店铺余额信息
- 记录订单号、金额变化及变更类型
- 处理首次无余额记录的情况- 保证余额计算的准确性与一致性
- 完善支付流程中的财务追踪机制
SheepHy 4 天之前
父节点
当前提交
e1424d88ff

+ 21 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -137,7 +137,8 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
     private SeparateAccountsMapper separateAccountsMapper;
     private SeparateAccountsMapper separateAccountsMapper;
     @Resource
     @Resource
     private DelayedMessageService delayedMessageService;
     private DelayedMessageService delayedMessageService;
-
+    @Resource
+    private ShopMoneyMapper shopMoneyMapper;
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -2027,7 +2028,25 @@ public class OrderServiceImpl extends ServiceImpl<AppOrderMapper, AppOrder> impl
         String s = res == null ? null : res.getString("trade_state");
         String s = res == null ? null : res.getString("trade_state");
 //        String s = "SUCCESS";
 //        String s = "SUCCESS";
         if ("SUCCESS".equals(s) || appOrder.getOriginalPrice().compareTo(BigDecimal.ZERO) == 0) {
         if ("SUCCESS".equals(s) || appOrder.getOriginalPrice().compareTo(BigDecimal.ZERO) == 0) {
-
+            ShopMoney shopMoney = shopMoneyMapper.selectOne(Wrappers.<ShopMoney>lambdaQuery()
+                    .eq(ShopMoney::getOrgCode, appOrder.getOrgCode())
+                    .last("limit 1")
+                    .orderByDesc(ShopMoney::getCreateTime));
+            if(null == shopMoney){
+                shopMoney = new ShopMoney()
+                        .setBeforeChange(BigDecimal.ZERO)
+                        .setAfterChange(BigDecimal.ZERO);
+            }
+            shopMoneyMapper.insert(new ShopMoney()
+                    .setOrgCode(appOrder.getOrgCode())
+                    .setIncomeType(2)
+                    .setMoneyType(2)
+                    .setOrderCode(appOrder.getOrderCode())
+                    .setBeforeChange(shopMoney.getAfterChange())
+                    .setAfterChange(shopMoney.getAfterChange().add(appOrder.getPrice()))
+                    .setMoneyChange(appOrder.getPrice())
+                    .setChangeInfo(1)
+                    .setCreateTime(new Date()));
             if (ObjectUtil.isNotEmpty(appOrder) && Objects.equals(appOrder.getOrderStatus(), CommonConstant.ORDER_STATUS_0)) {
             if (ObjectUtil.isNotEmpty(appOrder) && Objects.equals(appOrder.getOrderStatus(), CommonConstant.ORDER_STATUS_0)) {
                 appOrder.setOrderStatus(1);
                 appOrder.setOrderStatus(1);
                 appOrder.setPayTime(new Date());
                 appOrder.setPayTime(new Date());