From f980592507352cff79a2823f305b8cbf5d981325 Mon Sep 17 00:00:00 2001 From: qitz <18810291185@163.com> Date: Wed, 3 Jan 2024 13:49:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=B9=E9=87=8F=E7=BC=B4?= =?UTF-8?q?=E8=B4=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CasePaymentController.java | 24 +++ .../mapper/CasePaymentRecordMapper.java | 4 +- .../service/ICasePaymentService.java | 4 + .../service/impl/CasePaymentServiceImpl.java | 157 +++++++++++++++++- .../CasePaymentRecordMapper.xml | 11 +- 5 files changed, 188 insertions(+), 12 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CasePaymentController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CasePaymentController.java index 6b99f83..15a0cd2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CasePaymentController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wisdomarbitrate/CasePaymentController.java @@ -2,6 +2,7 @@ package com.ruoyi.web.controller.wisdomarbitrate; import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.wisdomarbitrate.domain.BatchCaseApplication; import com.ruoyi.wisdomarbitrate.domain.CaseApplication; import com.ruoyi.wisdomarbitrate.domain.dto.CaseConfirmPayDTO; @@ -46,6 +47,16 @@ public class CasePaymentController { return paymentService.confirmPay(payDTO); } + /** + * 批量缴费 + * @param casePayDTO 缴费传入参数 + * @return 统一响应结果 + */ + @PostMapping("/casePayBatch") + public AjaxResult casePayBatch(@Validated @RequestBody CasePayDTO casePayDTO) { + return paymentService.casePayBatch(casePayDTO); + } + /** * 批量缴费 * @param payDTO 缴费传入参数 @@ -83,4 +94,17 @@ public class CasePaymentController { public AjaxResult casePayListBatch(@Validated @RequestBody CasePayDTO casePayDTO) { return paymentService.casePayListBatch(casePayDTO); } + + /** + * 批量缴费确认 + * @param batchCaseApplication + * @return + */ + @PostMapping("/confirmBatch") + public AjaxResult confirmPaymentBatch(@Validated @RequestBody BatchCaseApplication batchCaseApplication) { + if(StringUtils.isEmpty(batchCaseApplication.getBatchNumber())){ + return AjaxResult.error("参数校验失败"); + } + return paymentService.confirmPaymentBatch(batchCaseApplication.getBatchNumber()); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CasePaymentRecordMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CasePaymentRecordMapper.java index d5d4616..fd5549c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CasePaymentRecordMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/mapper/CasePaymentRecordMapper.java @@ -2,10 +2,12 @@ package com.ruoyi.wisdomarbitrate.mapper; import com.ruoyi.wisdomarbitrate.domain.CasePaymentRecord; +import java.util.List; + public interface CasePaymentRecordMapper { int saveRecord(CasePaymentRecord casePaymentRecord); - CasePaymentRecord queryRecord(String orderNumber); + List queryRecord(String orderNumber); void update(CasePaymentRecord casePaymentRecord); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICasePaymentService.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICasePaymentService.java index 3396673..9b4e911 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICasePaymentService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/ICasePaymentService.java @@ -29,4 +29,8 @@ public interface ICasePaymentService { AjaxResult confirmPayBatch(CasePayDTO payDTO); AjaxResult casePayListBatch(CasePayDTO casePayDTO); + + AjaxResult confirmPaymentBatch(String batchNumber); + + AjaxResult casePayBatch(CasePayDTO casePayDTO); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CasePaymentServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CasePaymentServiceImpl.java index 1af22dd..7dfd61c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CasePaymentServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/service/impl/CasePaymentServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.wisdomarbitrate.domain.*; import com.ruoyi.wisdomarbitrate.domain.dto.CaseConfirmPayDTO; import com.ruoyi.wisdomarbitrate.domain.vo.CasePayListVO; @@ -92,17 +93,19 @@ public class CasePaymentServiceImpl implements ICasePaymentService { @Transactional public AjaxResult callback(String orderNumber) { //查询记录 - CasePaymentRecord casePaymentRecord = casePaymentRecordMapper.queryRecord(orderNumber); - if (casePaymentRecord == null) { + List casePaymentRecords = casePaymentRecordMapper.queryRecord(orderNumber); + if(casePaymentRecords!=null&&casePaymentRecords.size()>0){ + for (CasePaymentRecord casePaymentRecord:casePaymentRecords){ + Long caseId = casePaymentRecord.getCaseId(); + //更改记录表里的支付状态和支付时间 + casePaymentRecord.setPaymentStatus(1); + casePaymentRecord.setPaymentTime(new Date()); + casePaymentRecord.setUpdateTime(new Date()); + casePaymentRecordMapper.update(casePaymentRecord); + } + }else { return AjaxResult.error("未查询到相关记录"); } - Long caseId = casePaymentRecord.getCaseId(); - //更改记录表里的支付状态和支付时间 - casePaymentRecord.setPaymentStatus(1); - casePaymentRecord.setPaymentTime(new Date()); - casePaymentRecord.setUpdateTime(new Date()); - casePaymentRecordMapper.update(casePaymentRecord); - return AjaxResult.success("支付成功"); } @@ -344,5 +347,141 @@ public class CasePaymentServiceImpl implements ICasePaymentService { return AjaxResult.success(listVO); } + @Override + @Transactional + public AjaxResult confirmPaymentBatch(String batchNumber) { + CaseApplication caseApplicationsel = new CaseApplication(); + caseApplicationsel.setBatchNumber(Integer.parseInt(batchNumber)); + caseApplicationsel.setCaseStatus(CaseApplicationConstants.PENDING_PAYMENT_CONFIRM); + List caseApplications = caseApplicationMapper.listCaseApplicationByBatchNumber(caseApplicationsel); + + if (caseApplications != null && caseApplications.size() > 0) { + List caseIds = caseApplications.stream().map(CaseApplication::getId).collect(Collectors.toList()); + for (Long caseId : caseIds) { + CaseApplication caseApplication = new CaseApplication(); + caseApplication.setId(caseId); + caseApplication.setCaseStatus(CaseApplicationConstants.CASE_CROSSEXAMI); + caseApplicationMapper.submitCaseApplication(caseApplication); + //发送短信通知 + SmsUtils.SendSmsRequest request = new SmsUtils.SendSmsRequest(); + CaseAffiliate caseAffiliate = new CaseAffiliate(); + caseAffiliate.setCaseAppliId(caseApplication.getId()); + List caseAffiliates = caseAffiliateMapper.selectCaseAffiliate(caseAffiliate); //获取案件关联人信息 + if (caseAffiliates != null && caseAffiliates.size() > 0) { + for (CaseAffiliate affiliate : caseAffiliates) { + //获取身份类型 + int identityType = affiliate.getIdentityType(); + //查询案件详细信息 + CaseApplication caseApplication1 = caseApplicationMapper.selectCaseApplication(caseApplication); + if (caseApplication1 == null) { + continue; + } + String caseName = "仲裁"; //这里案件名称表里未定义,暂时写死 + String caseNum = caseApplication1.getCaseNum(); + if (identityType == 1) { //申请人 + request.setPhone(affiliate.getContactTelphone()); + request.setTemplateId("1928003"); //传入申请人模板id + // 这个值,要看你的模板中是否预留了占位符,如果没有则不需要设置 + // 模板id:1928003 普通短信 案件受理通知 + String name = affiliate.getName(); + request.setTemplateParamSet(new String[]{name, caseName, caseNum}); + Boolean aBoolean = SmsUtils.sendSms(request); + //保存短信发送记录 + SmsSendRecord smsSendRecord = new SmsSendRecord(); + smsSendRecord.setCaseId(caseApplication.getId()); + smsSendRecord.setCaseNum(caseNum); + smsSendRecord.setPhone(request.getPhone()); + smsSendRecord.setSendTime(new Date()); + String content = "尊敬的" + name + "用户,您的" + caseName + "案件" + caseNum + "已成功受理。"; + smsSendRecord.setSendContent(content); + smsSendRecord.setCreateBy(getUsername()); + if (aBoolean) { + smsSendRecord.setSendStatus(1); + } else { + smsSendRecord.setSendStatus(0); + } + smsRecordMapper.saveSmsSendRecord(smsSendRecord); + } else { //被申请人 + + request.setPhone(affiliate.getContactTelphone()); + request.setTemplateId("1952840"); + // 1952840 尊敬的{1}用户,您的{2}案件{3}已成功受理,请点击链接:https://miniapp-3gpama6l759911ef-1321289474.tcloudbaseapp.com/jump-mp.html 选择是否应诉。如非本人操作,请忽略本短信 + String name = affiliate.getName(); + request.setTemplateParamSet(new String[]{name, caseName, caseNum}); + Boolean aBoolean = SmsUtils.sendSms(request); + //保存短信发送记录 + SmsSendRecord smsSendRecord = new SmsSendRecord(); + smsSendRecord.setCaseId(caseApplication.getId()); + smsSendRecord.setCaseNum(caseNum); + smsSendRecord.setPhone(request.getPhone()); + smsSendRecord.setSendTime(new Date()); + String content = "尊敬的" + name + "用户,您的" + caseName + "案件" + caseNum + "已成功受理,请点击链接:https://miniapp-3gpama6l759911ef-1321289474.tcloudbaseapp.com/jump-mp.html 选择是否应诉。如非本人操作,请忽略本短信"; + smsSendRecord.setSendContent(content); + smsSendRecord.setCreateBy(getUsername()); + if (aBoolean) { + smsSendRecord.setSendStatus(1); + } else { + smsSendRecord.setSendStatus(0); + } + smsRecordMapper.saveSmsSendRecord(smsSendRecord); + } + } + //更改记录表里的支付状态和支付时间 + CasePaymentRecord casePaymentRecord = new CasePaymentRecord(); + casePaymentRecord.setPaymentStatus(1); + casePaymentRecord.setCaseId(caseId); + casePaymentRecord.setPaymentTime(new Date()); + casePaymentRecord.setUpdateTime(new Date()); + casePaymentRecordMapper.update(casePaymentRecord); + // 新增日志 + CaseLogUtils.insertCaseLog(caseApplication.getId(), CaseApplicationConstants.CASE_CROSSEXAMI, ""); + + + } + + } + } + return AjaxResult.success(); + } + + @Override + @Transactional + public AjaxResult casePayBatch(CasePayDTO casePayDTO) { + PayRequest payRequest = new PayRequest(); + payRequest.setBody("案件缴费"); + payRequest.setOrderSn(System.currentTimeMillis() + ""); + payRequest.setTotalFee(casePayDTO.getTotalFee()); + PayResponse response = elegentPay.requestPay(payRequest, casePayDTO.getTradeType(), casePayDTO.getPlatform()); + if (response.getCode_url() == null) { + return AjaxResult.error(); + } + String batchNumber = casePayDTO.getBatchNumber(); + if(StringUtils.isEmpty(batchNumber) ){ + return AjaxResult.error("请检查参数是否有误"); + } + CaseApplication caseApplicationsel = new CaseApplication(); + caseApplicationsel.setBatchNumber(Integer.parseInt(batchNumber)); + caseApplicationsel.setCaseStatus(CaseApplicationConstants.PENDING_PAYMENT); + List caseApplications = caseApplicationMapper.listCaseApplicationByBatchNumber(caseApplicationsel); + if(caseApplications!=null&&caseApplications.size()>0){ + List caseIds = caseApplications.stream().map(CaseApplication::getId).collect(Collectors.toList()); + for (Long caseId : caseIds) { + //缴费记录表里新增数据 + CasePaymentRecord casePaymentRecord = new CasePaymentRecord(); + casePaymentRecord.setCaseId(caseId); + casePaymentRecord.setOrderNumber(payRequest.getOrderSn()); + casePaymentRecord.setPaymentStatus(0); + casePaymentRecord.setCreateTime(new Date()); + int count = casePaymentRecordMapper.saveRecord(casePaymentRecord); + if (count < 1) { + return AjaxResult.error(); + } + } + + } + + return AjaxResult.success(response); + } + } diff --git a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CasePaymentRecordMapper.xml b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CasePaymentRecordMapper.xml index 1ecd5c6..b7ca892 100644 --- a/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CasePaymentRecordMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wisdomarbitrate/CasePaymentRecordMapper.xml @@ -27,13 +27,20 @@ update_time = #{updateTime}, pay_type = #{payType}, - where id = #{id} + + + AND case_id = #{caseId} + + + AND id = #{id} + +