소스 검색

确认付款判断是否超出日限额月限额

LiFei 3 년 전
부모
커밋
1d3910cbc8

+ 44 - 9
happy-cloud-wisdom/happy-cloud-wisdom-biz/src/main/java/org/jeecg/modules/hlwpayment/service/impl/HlwPaymentDetailServiceImpl.java

@@ -388,7 +388,11 @@ public class HlwPaymentDetailServiceImpl extends ServiceImpl<HlwPaymentDetailMap
          * 1、付款单状态
          */
         if (hlwPayment.getStatus() != null) {
-            return Result.error("该付款单状态已变更,请刷新后重试!");
+            Result result = new Result();
+            result.setSuccess(false);
+            result.setCode(610);
+            result.setMessage("该付款单状态已变更,请刷新后重试!");
+            return result;
         }
         // 服务商
         HlwSubcontractor hlwSubcontractor = hlwSubcontractorService.getById(hlwPayment.getSubcontractorId());
@@ -464,6 +468,11 @@ public class HlwPaymentDetailServiceImpl extends ServiceImpl<HlwPaymentDetailMap
     @Transactional(rollbackFor = Exception.class)
     public Result<?> confirmPayment(JSONObject jsonObject) {
         Integer paymentId = jsonObject.getInteger("paymentId");
+        // 付款单
+        HlwPayment hlwPayment = hlwPaymentService.getById(paymentId);
+        if (hlwPayment.getStatus() != null) {
+            return Result.error("该付款单状态已变更,请刷新后重试!");
+        }
         Double totalPayment = jsonObject.getDouble("totalPayment");
         //判断付款账户金额是否够支付
         Integer applicationId = jsonObject.getInteger("applicationId");
@@ -485,18 +494,44 @@ public class HlwPaymentDetailServiceImpl extends ServiceImpl<HlwPaymentDetailMap
         if (hlwCompanyAccount.getBalance().compareTo(totalPayment) == -1) {
             return Result.error("当前余额不足,请充值后再试,如果已经充值可刷新余额显示!");
         }
-
-        // 付款单
-        HlwPayment hlwPayment = hlwPaymentService.getById(paymentId);
-        if (hlwPayment.getStatus() != null) {
-            return Result.error("该付款单状态已变更,请刷新后重试!");
-        }
-        hlwPayment.setStatus(1);
-        hlwPaymentService.updateById(hlwPayment);
+        // 服务商
+        HlwSubcontractor hlwSubcontractor = hlwSubcontractorService.getById(hlwPayment.getSubcontractorId());
+        Double dailyLimit = hlwSubcontractor.getDailyLimit();
+        Double monthlyLimit = hlwSubcontractor.getMonthlyLimit();
+        BigDecimal bigDailyLimit = BigDecimal.valueOf(dailyLimit);
+        BigDecimal bigMonthlyLimit = BigDecimal.valueOf(monthlyLimit);
         // 付款明细
         QueryWrapper<HlwPaymentDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("payment_id", paymentId);
         List<HlwPaymentDetail> list = this.list(queryWrapper);
+        /**
+         * 2、拦截日限额
+         */
+        for (HlwPaymentDetail hlwPaymentDetail : list) {
+            // 查询用户当日付款金额总和
+            Double currentUserDailyAmount = baseMapper.getCurrentUserDailyAmount(hlwPaymentDetail.getIdcardNumber());
+            currentUserDailyAmount = businessAccountUtils.add(currentUserDailyAmount, hlwPaymentDetail.getNetPayment());
+            // 比较double大小
+            BigDecimal data = BigDecimal.valueOf(currentUserDailyAmount);
+            if (bigDailyLimit.compareTo(data) == -1) {
+                return Result.error("超出日限额");
+            }
+            /**
+             * 3、拦截月限额
+             */
+            // 查询用户当月付款金额总和
+            Double currentUserMonthlyAmount = baseMapper.getCurrentUserMonthlyAmount(hlwPaymentDetail.getIdcardNumber());
+            currentUserMonthlyAmount = businessAccountUtils.add(currentUserMonthlyAmount, hlwPaymentDetail.getNetPayment());
+            // 比较double大小
+            BigDecimal data1 = BigDecimal.valueOf(currentUserMonthlyAmount);
+            if (bigMonthlyLimit.compareTo(data1) == -1) {
+                return Result.error("超出月限额");
+            }
+        }
+
+        hlwPayment.setStatus(1);
+        hlwPaymentService.updateById(hlwPayment);
+        // 付款明细
         for (HlwPaymentDetail hlwPaymentDetail : list) {
             hlwPaymentDetail.setStatus(1);
         }