igl 2 months ago
parent
commit
8b3bb205ee

+ 2 - 6
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/AssetController.java

@@ -38,9 +38,7 @@ public class AssetController {
      */
     @PostMapping("/asset/withdraw/notify")
     public void withdrawNotify(@RequestBody SxyNotifyParam param) {
-        DatabaseContextHolder.transactional((Executor) () -> {
-            this.assetService.withdrawNotify(param);
-        });
+        this.assetService.withdrawNotify(param);
     }
 
     /**
@@ -49,9 +47,7 @@ public class AssetController {
      */
     @PostMapping("/asset/transfer/notify")
     public void transferNotify(@RequestBody SxyNotifyParam param) {
-        DatabaseContextHolder.transactional((Executor) () -> {
-            this.assetService.transferNotify(param);
-        });
+        this.assetService.transferNotify(param);
     }
 
     /**

+ 2 - 6
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/OmsOrderController.java

@@ -173,9 +173,7 @@ public class OmsOrderController {
      */
     @PostMapping("/order/notify")
     public void orderNotify(@RequestBody SxyNotifyParam param){
-        DatabaseContextHolder.transactional((Executor) () -> {
-            omsOrderService.orderNotify(param);
-        });
+        omsOrderService.orderNotify(param);
     }
 
     /**
@@ -193,8 +191,6 @@ public class OmsOrderController {
      */
     @PostMapping("/order/refund/notify")
     public void orderRefundNotify(@RequestBody SxyNotifyParam param){
-        DatabaseContextHolder.transactional((Executor) () -> {
-            omsOrderService.orderRefundNotify(param);
-        });
+        omsOrderService.orderRefundNotify(param);
     }
 }

+ 53 - 49
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/AssetServiceImpl.java

@@ -331,8 +331,8 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
         if(withdraw == null){
             return;
         }
-        Integer transferStatus = withdraw.getStatus();
-        if(transferStatus != 0){
+        final Integer[] transferStatus = {withdraw.getStatus()};
+        if(transferStatus[0] != 0){
             return;
         }
         String withdrawAmount = responseData.getString("withdrawAmount");
@@ -342,33 +342,35 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
             return;
         }
         String withdrawStatus = responseData.getString("withdrawStatus");
-        BigDecimal procedureAmount = BigDecimal.ZERO;
+        final BigDecimal[] procedureAmount = {BigDecimal.ZERO};
         String receivedAmount = responseData.getString("receivedAmount");
         BigDecimal realAmount = new BigDecimal(receivedAmount == null ? "0" : receivedAmount)
                 .divide(new BigDecimal("100"), 2, RoundingMode.UP);
         if("SUCCESS".equals(withdrawStatus)){
-            transferStatus = 1;
-            procedureAmount = amount.subtract(realAmount);
+            transferStatus[0] = 1;
+            procedureAmount[0] = amount.subtract(realAmount);
         } else if("FAIL".equals(withdrawStatus)){
-            transferStatus = 2;
+            transferStatus[0] = 2;
         } else {
             return;
         }
         String errorMessage = responseData.getString("errorMessage");
-        //更新提现订单状态和外部订单号
-        int i = transferWithdrawService.updateByNotify(id, "", transferStatus, errorMessage, procedureAmount);
-        if(i == 1){
-            if(transferStatus == 2){
-                //失败解冻金额
-                baseMapper.backFrozen(amount, withdraw.getUserId(), withdraw.getType(), LocalDateTime.now());
-            } else {
-                baseMapper.deductFrozen(amount, withdraw.getUserId(), withdraw.getType(), LocalDateTime.now());
-                BigDecimal total = queryTotal(withdraw.getUserId(), withdraw.getType());
-                //记录平台抽成余额明细
-                balanceDetailService.recordFlow(id, withdraw.getType(), withdraw.getUserId(), amount, procedureAmount,
-                        realAmount, total, 1, 4, withdraw.getUserId());
+        DatabaseContextHolder.transactional((Executor) () -> {
+            //更新提现订单状态和外部订单号
+            int i = transferWithdrawService.updateByNotify(id, "", transferStatus[0], errorMessage, procedureAmount[0]);
+            if(i == 1){
+                if(transferStatus[0] == 2){
+                    //失败解冻金额
+                    baseMapper.backFrozen(amount, withdraw.getUserId(), withdraw.getType(), LocalDateTime.now());
+                } else {
+                    baseMapper.deductFrozen(amount, withdraw.getUserId(), withdraw.getType(), LocalDateTime.now());
+                    BigDecimal total = queryTotal(withdraw.getUserId(), withdraw.getType());
+                    //记录平台抽成余额明细
+                    balanceDetailService.recordFlow(id, withdraw.getType(), withdraw.getUserId(), amount, procedureAmount[0],
+                            realAmount, total, 1, 4, withdraw.getUserId());
+                }
             }
-        }
+        });
     }
 
     @Override
@@ -389,8 +391,8 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
         if(transfer == null){
             return;
         }
-        Integer transferStatus = transfer.getStatus();
-        if(transferStatus != 0){
+        final Integer[] transferStatus = {transfer.getStatus()};
+        if(transferStatus[0] != 0){
             return;
         }
         String transferAmount = responseData.getString("amount");
@@ -401,41 +403,43 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
         }
         String transferResultStatus = responseData.getString("status");
         if("SUCCESS".equals(transferResultStatus)){
-            transferStatus = 1;
+            transferStatus[0] = 1;
         } else if("CANCEL".equals(transferResultStatus)){
-            transferStatus = 3;
+            transferStatus[0] = 3;
         } else if("FAILED".equals(transferResultStatus)){
-            transferStatus = 2;
+            transferStatus[0] = 2;
         } else {
             return;
         }
         String errorMessage = responseData.getString("errorMessage");
-        //更新转账订单状态和外部订单号
-        int i = transferWithdrawService.updateByNotify(id, null, transferStatus, errorMessage, BigDecimal.ZERO);
-        if(i == 1){
-            if(transferStatus == 2){
-                //失败平台解冻金额
-                baseMapper.backFrozen(amount, 0L, 0, LocalDateTime.now());
-            } else {
-                Integer type = transfer.getType();
-                //平台扣除冻结金额
-                baseMapper.deductFrozen(amount, 0L, 0, LocalDateTime.now());
-                BigDecimal platformTotal = queryTotal(0L, 0);
-                //记录平台转账余额明细
-                balanceDetailService.recordFlow(id, 0, 0L, amount, BigDecimal.ZERO,
-                        amount, platformTotal, 1, 7, transfer.getUserId());
-                String remark = responseData.getString("remark");
-                if(type == 1 && "0".equals(remark)){
-                    //用户第一次转账
-                    return;
+        DatabaseContextHolder.transactional((Executor) () -> {
+            //更新转账订单状态和外部订单号
+            int i = transferWithdrawService.updateByNotify(id, null, transferStatus[0], errorMessage, BigDecimal.ZERO);
+            if(i == 1){
+                if(transferStatus[0] == 2){
+                    //失败平台解冻金额
+                    baseMapper.backFrozen(amount, 0L, 0, LocalDateTime.now());
+                } else {
+                    Integer type = transfer.getType();
+                    //平台扣除冻结金额
+                    baseMapper.deductFrozen(amount, 0L, 0, LocalDateTime.now());
+                    BigDecimal platformTotal = queryTotal(0L, 0);
+                    //记录平台转账余额明细
+                    balanceDetailService.recordFlow(id, 0, 0L, amount, BigDecimal.ZERO,
+                            amount, platformTotal, 1, 7, transfer.getUserId());
+                    String remark = responseData.getString("remark");
+                    if(type == 1 && "0".equals(remark)){
+                        //用户第一次转账
+                        return;
+                    }
+                    //转账-更新余额
+                    baseMapper.addAmount(transfer.getUserId(), type, amount, LocalDateTime.now());
+                    BigDecimal merchantTotal = queryTotal(transfer.getUserId(), transfer.getType());
+                    //记录余额明细
+                    balanceDetailService.recordFlow(id, type, transfer.getUserId(), amount, BigDecimal.ZERO,
+                            amount, merchantTotal, 0, 7, 0L);
                 }
-                //转账-更新余额
-                baseMapper.addAmount(transfer.getUserId(), type, amount, LocalDateTime.now());
-                BigDecimal merchantTotal = queryTotal(transfer.getUserId(), transfer.getType());
-                //记录余额明细
-                balanceDetailService.recordFlow(id, type, transfer.getUserId(), amount, BigDecimal.ZERO,
-                        amount, merchantTotal, 0, 7, 0L);
             }
-        }
+        });
     }
 }

+ 20 - 16
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantApplyRecordServiceImpl.java

@@ -10,6 +10,8 @@ import com.chelvc.cloud.vehicle.server.dao.MerchantApplyRecordMapper;
 import com.chelvc.cloud.vehicle.server.entity.MerchantApplyRecord;
 import com.chelvc.cloud.vehicle.server.handle.TradeHandle;
 import com.chelvc.cloud.vehicle.server.service.*;
+import com.chelvc.framework.common.function.Executor;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
 import com.upay.sdk.Constants;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -64,22 +66,24 @@ public class MerchantApplyRecordServiceImpl extends
         record.setPostReviewStatus(responseData.getString("postReviewStatus"));
         record.setSubMerchantId(subMerchantId);
         record.setUpdateTime(new Date());
-        baseMapper.updateById(record);
-        if(type == 1){
-            //更改个人认证状态
-            userAuthService.updateStatus(record.getUserId(), resultStatus);
-        }
-        if(type == 2){
-            //更改个人认证状态
-            merchantAuthService.updateStatus(record.getUserId(), resultStatus);
-        }
-        if("SUCCESS".equals(status)){
-            int i = merchantRelationService.insert(record.getUserId(), record.getType(), subMerchantId);
-            if(i == 1 && record.getType() == 1){
-                //用户申请商户号成功,平台转账给用户
-                BigDecimal total = assetService.queryTotal(record.getUserId(), 1);
-                assetService.transfer(0L, record.getUserId(), 1, total, "0");
+        DatabaseContextHolder.transactional((Executor) () -> {
+            baseMapper.updateById(record);
+            if(type == 1){
+                //更改个人认证状态
+                userAuthService.updateStatus(record.getUserId(), resultStatus);
             }
-        }
+            if(type == 2){
+                //更改商家认证状态
+                merchantAuthService.updateStatus(record.getUserId(), resultStatus);
+            }
+            if("SUCCESS".equals(status)){
+                int i = merchantRelationService.insert(record.getUserId(), record.getType(), subMerchantId);
+                if(i == 1 && record.getType() == 1){
+                    //用户申请商户号成功,平台转账给用户
+                    BigDecimal total = assetService.queryTotal(record.getUserId(), 1);
+                    assetService.transfer(0L, record.getUserId(), 1, total, "0");
+                }
+            }
+        });
     }
 }

+ 1 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -561,9 +561,7 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
 
     @Override
     public void merchantApplyNotify(SxyNotifyParam param) {
-        DatabaseContextHolder.transactional((Executor) () -> {
-            merchantApplyRecordService.updateSxyMerchantIdByNotify(param);
-        });
+        merchantApplyRecordService.updateSxyMerchantIdByNotify(param);
     }
 
     @Override

+ 52 - 48
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -1028,8 +1028,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             //订单不存在
             return;
         }
-        Integer orderStatus = omsOrder.getStatus();
-        if(orderStatus != 0){
+        final Integer[] orderStatus = {omsOrder.getStatus()};
+        if(orderStatus[0] != 0){
             return;
         }
         BigDecimal payAmount = omsOrder.getPayAmount();
@@ -1040,26 +1040,28 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         }
         String status = responseData.getString("status");
         String serialNumber = responseData.getString("serialNumber");
-        BigDecimal feeAmount = BigDecimal.ZERO;
-        if("SUCCESS".equals(status)){
-            orderStatus = 1;
-            String fee = responseData.getString("feeAmount");
-            if(StringUtils.isBlank(fee)){
-                fee = "0";
+        final BigDecimal[] feeAmount = {BigDecimal.ZERO};
+        DatabaseContextHolder.transactional((Executor) () -> {
+            if("SUCCESS".equals(status)){
+                orderStatus[0] = 1;
+                String fee = responseData.getString("feeAmount");
+                if(StringUtils.isBlank(fee)){
+                    fee = "0";
+                }
+                feeAmount[0] = new BigDecimal(fee).divide(new BigDecimal("100"), 2, RoundingMode.UP);
+                BigDecimal realityAmount = payAmount.subtract(feeAmount[0]);
+                //平台资产变更-添加冻结金额
+                BigDecimal totalAmount = assetService.updateAsset(0, realityAmount, 0L, 0, 1);
+                balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L, payAmount, feeAmount[0],
+                        realityAmount, totalAmount, 0, 5, omsOrder.getUserId());
+            } else if("FAILED".equals(status)){
+                orderStatus[0] = 8;
+            } else if("CANCEL".equals(status)){
+                orderStatus[0] = 7;
             }
-            feeAmount = new BigDecimal(fee).divide(new BigDecimal("100"), 2, RoundingMode.UP);
-            BigDecimal realityAmount = payAmount.subtract(feeAmount);
-            //平台资产变更-添加冻结金额
-            BigDecimal totalAmount = assetService.updateAsset(0, realityAmount, 0L, 0, 1);
-            balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L, payAmount, feeAmount,
-                    realityAmount, totalAmount, 0, 5, omsOrder.getUserId());
-        } else if("FAILED".equals(status)){
-            orderStatus = 8;
-        } else if("CANCEL".equals(status)){
-            orderStatus = 7;
-        }
-        baseMapper.updateStatus(omsOrder.getId(), orderStatus, feeAmount, serialNumber, new Date());
-        omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), omsOrder.getUserId(), omsOrder.getStatus());
+            baseMapper.updateStatus(omsOrder.getId(), orderStatus[0], feeAmount[0], serialNumber, new Date());
+            omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), omsOrder.getUserId(), omsOrder.getStatus());
+        });
     }
 
     @Override
@@ -1098,33 +1100,35 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         }
         OmsOrder omsOrder = baseMapper.selectById(refund.getOrderId());
         BigDecimal refundAmount = refund.getRefundAmount();
-        if(refundAmount.multiply(new BigDecimal("100")).compareTo(new BigDecimal(amount)) != 0){
-            //订单金额不一样
-            orderRefundService.updateStatus(Long.valueOf(requestId), 3, "退款金额不一致");
-            return;
-        }
-        String status = responseData.getString("status");
-        String serialNumber = responseData.getString("serialNumber");
-        BigDecimal payAmount = omsOrder.getPayAmount();
-        BigDecimal feeAmount = omsOrder.getFeeAmount();
-        BigDecimal realAmount = payAmount.subtract(feeAmount);
-        if("SUCCESS".equals(status)){
-            orderRefundService.updateStatus(Long.valueOf(requestId), 2, "", serialNumber);
-            //减掉平台冻结金额
-            assetService.reduceFrozenAsset(payAmount, 0L, 0);
-            BigDecimal totalAmount = assetService.queryTotal(0L, 0);
-            //记录余额明细
-            balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L,
-                    payAmount, feeAmount, realAmount, totalAmount, 1, 8, omsOrder.getUserId());
-            //更改订单状态
-            updateStatusById(omsOrder.getId(), 9);
-            omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), omsOrder.getUserId(), omsOrder.getStatus());
-        } else if("FAILED".equals(status)){
-            String errorMessage = responseData.getString("errorMessage");
-            orderRefundService.updateStatus(Long.valueOf(requestId), 3, errorMessage, serialNumber);
-            //解除冻结
-            assetService.reduceFrozenAsset(realAmount, 0L, 0);
-        }
+        DatabaseContextHolder.transactional((Executor) () -> {
+            if(refundAmount.multiply(new BigDecimal("100")).compareTo(new BigDecimal(amount)) != 0){
+                //订单金额不一样
+                orderRefundService.updateStatus(Long.valueOf(requestId), 3, "退款金额不一致");
+                return;
+            }
+            String status = responseData.getString("status");
+            String serialNumber = responseData.getString("serialNumber");
+            BigDecimal payAmount = omsOrder.getPayAmount();
+            BigDecimal feeAmount = omsOrder.getFeeAmount();
+            BigDecimal realAmount = payAmount.subtract(feeAmount);
+            if("SUCCESS".equals(status)){
+                orderRefundService.updateStatus(Long.valueOf(requestId), 2, "", serialNumber);
+                //减掉平台冻结金额
+                assetService.reduceFrozenAsset(payAmount, 0L, 0);
+                BigDecimal totalAmount = assetService.queryTotal(0L, 0);
+                //记录余额明细
+                balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L,
+                        payAmount, feeAmount, realAmount, totalAmount, 1, 8, omsOrder.getUserId());
+                //更改订单状态
+                updateStatusById(omsOrder.getId(), 9);
+                omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), omsOrder.getUserId(), omsOrder.getStatus());
+            } else if("FAILED".equals(status)){
+                String errorMessage = responseData.getString("errorMessage");
+                orderRefundService.updateStatus(Long.valueOf(requestId), 3, errorMessage, serialNumber);
+                //解除冻结
+                assetService.reduceFrozenAsset(realAmount, 0L, 0);
+            }
+        });
     }
 
     private int updateStatusById(Long id, Integer status) {