From cff3c43f216c6f01f675e4821832e15f2a77c57c Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期三, 05 二月 2025 13:00:04 +0800 Subject: [PATCH] 煤矿缴费修改 --- exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java | 99 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 77 insertions(+), 22 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java index a046a22..79e19c9 100644 --- a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java +++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java @@ -3,10 +3,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.pay.dto.rep.CoalPayRepDto; import com.gkhy.exam.pay.dto.rep.CoalPayStudentRep; -import com.gkhy.exam.pay.dto.req.CoalPayDto; -import com.gkhy.exam.pay.dto.req.CoalPayReq; -import com.gkhy.exam.pay.dto.req.CoalPayStudentReq; -import com.gkhy.exam.pay.dto.req.CoalPayTypeReq; +import com.gkhy.exam.pay.dto.req.*; import com.gkhy.exam.pay.entity.*; import com.gkhy.exam.pay.mapper.CoalCategoryMapper; import com.gkhy.exam.pay.mapper.CoalPayCategoryMapper; @@ -15,6 +12,7 @@ import com.gkhy.exam.pay.service.CoalPayStudentService; import com.gkhy.exam.pay.utils.PayUtils; import com.gkhy.exam.pay.utils.ResultVo; +import com.gkhy.exam.pay.utils.Sign; import com.ruoyi.common.constant.ResultConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; @@ -23,6 +21,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.SysDeptMapper; +import org.dom4j.Element; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.BeanUtils; @@ -32,6 +31,7 @@ import javax.annotation.Resource; import java.io.IOException; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -82,7 +82,7 @@ //学员数据 List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayId(pay.getId()); List<CoalPayStudent> havePay = coalPayStudents.stream() - .filter(stu -> stu.getPayStatus() != null && stu.getPayStatus().equals(1)) + .filter(stu -> stu.getPayStatus() != null && stu.getPayStatus()==1) .collect(Collectors.toList()); coalPayRepDto.setTotalNum(coalPayStudents.size()); coalPayRepDto.setHavePayNum(havePay.size()); @@ -186,6 +186,7 @@ for (CoalPayStudent payStudent : coalPayStudents) { //封装学生基础信息 CoalPayStudentRep coalPayStudentRep = new CoalPayStudentRep(); + coalPayStudentRep.setId(payStudent.getId()); coalPayStudentRep.setName(payStudent.getName()); coalPayStudentRep.setIdCard(payStudent.getIdCard()); coalPayStudentRep.setPhone(payStudent.getPhone()); @@ -228,28 +229,34 @@ public String personPayMoney(Long coalPayId, Long studentId) { CoalPayStudent payStudent = new CoalPayStudent(); - RLock lock = redissonClient.getLock("SWSPKMAS_PAY_PERSON_" + coalPayId); + RLock lock = redissonClient.getLock("SWSPKMAS_PAY_PERSON_" + studentId); try { lock.lock(10, TimeUnit.SECONDS); - CoalPayStudent coalPayStudent = coalPayStudentService.selectbyId(studentId); + List<CoalPayStudent> coalPayStudent = coalPayStudentService.selectbyId(studentId); + CoalPayStudent student = coalPayStudent.get(0); CoalPay coalPay = coalPayMapper.selectById(coalPayId); List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(coalPayId); CoalTicket coalTicket = coalCategoryMapper.selectCoalTicket(); - if (coalPayStudent==null){ + if (CollectionUtils.isEmpty(coalPayStudent)){ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"缴费学员不存在"); } if (coalPay==null){ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"未找到相关缴费信息"); } - if (coalPayStudent.getPayStatus()==1){ + if (student.getPayStatus()==1){ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"请勿重新缴费"); } - PayReqData payReqData = fillData(coalPayStudent,coalPay,coalCategories,coalTicket); + PayReqData payReqData = fillData(coalPayStudent,coalPay,coalCategories,coalTicket,1,null); ResultVo resultVo = payUtils.sendApiPost(payReqData); if (resultVo.getRespcode().equals("BUS0000")) { + //进行票据签名并校验 + ResultVo resultVo1 = payUtils.uploadXml(resultVo.getRespdata().getOrderNo(), resultVo.getRespdata().getFileData()); + if (!resultVo1.getRespcode().equals("BUS0000")){ + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "签名验证错误"); + } payStudent.setId(studentId); payStudent.setOrderId(resultVo.getRespdata().getOrderNo()); payStudent.setGovPayStatus(1); @@ -257,7 +264,7 @@ coalPayStudentService.updateByCoalPayStudent(payStudent); return resultVo.getRespdata().getOrderId(); } else { - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "发起支付失败,请稍后重试"); + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, resultVo.getRespmsg()); } } catch (BusinessException e) { throw new RuntimeException(e); @@ -270,29 +277,77 @@ } } - private PayReqData fillData(CoalPayStudent coalPayStudent, CoalPay coalPay, List<CoalCategory> coalCategories, CoalTicket coalTicket) { + @Override + public String teamPayMoney(CoalTeamPayReq coalTeamPayReq) { + RLock lock = redissonClient.getLock("SWSPKMAS_TEAM_PAY_" + coalTeamPayReq.getCoalPayId()); + try { + lock.lock(10,TimeUnit.SECONDS); + List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayIdAndPayStatus(coalTeamPayReq.getCoalPayId(), 0); + CoalPay coalPay = coalPayMapper.selectById(coalTeamPayReq.getCoalPayId()); + List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(coalTeamPayReq.getCoalPayId()); + CoalTicket coalTicket = coalCategoryMapper.selectCoalTicket(); + if (CollectionUtils.isEmpty(coalPayStudents)){ + throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"缴费学员不存在"); + } + if (coalPay==null){ + throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"未找到相关缴费信息"); + } + + CoalPayStudent payStudent = new CoalPayStudent(); + PayReqData payReqData = fillData(coalPayStudents, coalPay, coalCategories, coalTicket,2,coalTeamPayReq); + ResultVo resultVo = payUtils.sendApiPost(payReqData); + if (resultVo.getRespcode().equals("BUS0000")) { + payStudent.setCoalPayId(coalPay.getId()); + payStudent.setOrderId(resultVo.getRespdata().getOrderNo()); + payStudent.setGovPayStatus(1); + payStudent.setPayCode(resultVo.getRespdata().getBillNo()); + coalPayStudentService.updateByCoalPayIdAndStatus(payStudent); + return resultVo.getRespdata().getOrderId(); + } else { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "发起支付失败,请稍后重试"); + } + }catch (Exception e){ + throw new RuntimeException(e); + }finally { + if (lock.isLocked()) { + lock.unlock(); + } + } + } + + private PayReqData fillData(List<CoalPayStudent> coalPayStudent, CoalPay coalPay, List<CoalCategory> coalCategories, CoalTicket coalTicket,Integer payType,CoalTeamPayReq coalTeamPayReq) { PayReqData payReqData = new PayReqData(); payReqData.setOrderNo(RandomUtil.generateOrderNumber(coalPay.getId(), "CO")); - payReqData.setMoney(coalPay.getAmount()); - payReqData.setAmount(1); - payReqData.setPayerName(coalPayStudent.getName()); - payReqData.setCertNo(coalPayStudent.getIdCard()); - payReqData.setPayerType(1); + payReqData.setMoney(coalPay.getAmount().multiply(BigDecimal.valueOf(coalPayStudent.size()))); + payReqData.setAmount(coalCategories.size()*coalPayStudent.size()); payReqData.setInvoiceSocialCode(coalTicket.getTicketCompanyCode()); payReqData.setHandlingPerson(coalTicket.getDrawer()); payReqData.setChecker(coalTicket.getCheck()); payReqData.setEnterCode(coalTicket.getCompanyCode()); payReqData.setDesc(coalPay.getBatchName()); - PayReqData.Feedata feedata = new PayReqData.Feedata(); + List<PayReqData.Feedata> feedatas = new ArrayList<>(); for (CoalCategory coalCategory : coalCategories) { - feedata.setAmount(1); - feedata.setPrice(coalCategory.getAmount()); - feedata.setBusCode(coalCategory.getBusinessCode()); - feedatas.add(feedata); + for (CoalPayStudent payStudent : coalPayStudent) { + PayReqData.Feedata feedata = new PayReqData.Feedata(); + feedata.setAmount(1); + feedata.setPrice(coalCategory.getAmount()); + feedata.setBusCode(coalCategory.getBusinessCode()); + feedatas.add(feedata); + } } payReqData.setFeeDatas(feedatas); + + if (1==payType){ + payReqData.setPayerName(coalPayStudent.get(0).getName()); + payReqData.setCertNo(coalPayStudent.get(0).getIdCard()); + payReqData.setPayerType(1); + }else if (2==payType){ + payReqData.setPayerName(coalTeamPayReq.getPayCompanyName()); + payReqData.setCertNo(coalTeamPayReq.getPayCompanyCard()); + payReqData.setPayerType(2); + } return payReqData; } -- Gitblit v1.9.2