From 70dcf4e610a0ec5fd6ca2c3daf9edf4957b30529 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期二, 25 二月 2025 16:34:46 +0800 Subject: [PATCH] 考试制证修改 --- exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java | 118 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 66 insertions(+), 52 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java index 6703e96..1a58a26 100644 --- a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java +++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayStudentServiceImpl.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.gkhy.exam.institutionalaccess.enums.StudentSex; import com.gkhy.exam.pay.dto.rep.NonCoalCateRep; import com.gkhy.exam.pay.dto.rep.NonCoalPayOrder; import com.gkhy.exam.pay.dto.rep.NonCoalStuRep; @@ -16,8 +15,10 @@ import com.gkhy.exam.pay.mapper.NonCoalPayMapper; import com.gkhy.exam.pay.mapper.NonCoalPayStudentMapper; import com.gkhy.exam.pay.service.NonCoalPayStudentService; +import com.gkhy.exam.pay.utils.CaiZhengConstans; import com.gkhy.exam.pay.utils.PayUtils; import com.gkhy.exam.pay.utils.ResultVo; +import com.gkhy.exam.pay.utils.SexUtils; import com.ruoyi.common.constant.ResultConstants; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.exception.ServiceException; @@ -54,19 +55,17 @@ @Autowired private RedisLock redisLock; - private static final String NON_COAL_PAY_STUDENT_LOCK = "NON_COAL_PAY_STUDENT_LOCK_"; - @Override public String sendOrder(Long dataId, String payType) { - String lockKey = NON_COAL_PAY_STUDENT_LOCK + dataId + "_PAY_TYPE_" + payType; + String lockKey = CaiZhengConstans.NON_COAL_PAY_STUDENT_LOCK + dataId + CaiZhengConstans.UN_COAL_ORDER_KEY_1 + payType; - Boolean b = redisLock.tryLock(lockKey, 10, 20, TimeUnit.SECONDS); + Boolean b = redisLock.tryLock(lockKey, 30, 40, TimeUnit.SECONDS); if (b) { - String orderNo = RandomUtil.generateOrderNumber(dataId, "NC"); - List<NonCoalPayOrder> nonCoalPayOrders = nonCoalPayMapper.selectNonCoalPayOrderByParam(dataId, Long.valueOf(payType)); + String orderNo = RandomUtil.generateOrderNumber(dataId, CaiZhengConstans.UN_COAL_ORDER_PERFIX); + List<NonCoalPayOrder> nonCoalPayOrders = nonCoalPayMapper.selectNonCoalPayOrderByParam(dataId, Long.valueOf(payType), 1L); if (StringUtils.isEmpty(nonCoalPayOrders)) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "未找到相关缴费信息"); } @@ -86,25 +85,29 @@ if (nonCoalStuRep.getGovPayStatus() == 2) { return nonCoalStuRep.getOrderId(); } - //财政缴款码未生成 - if (nonCoalStuRep.getPayStatus() == 0) { - if ("1".equals(payType)) { - baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() - .set(NonCoalPayStudent::getOrderNo, orderNo) - .set(NonCoalPayStudent::getGovPayStatus, 1) - .eq(NonCoalPayStudent::getId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) - .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); - } else { - //团体缴费 - baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() - .set(NonCoalPayStudent::getOrderNo, orderNo) - .set(NonCoalPayStudent::getGovPayStatus, 1) - .eq(NonCoalPayStudent::getNonCoalPayId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) - .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); - } - } else { - orderNo = nonCoalStuRep.getOrderNo(); + //todo 验证缴款类型 + if (!nonCoalStuRep.getPayType().toString().equals(payType)) { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "缴费类型不一致,请核对类型"); } + //财政缴款码未生成 +// if (nonCoalStuRep.getPayStatus() == 0) { +// if ("1".equals(payType)) { +// baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() +// .set(NonCoalPayStudent::getOrderNo, orderNo) +// .set(NonCoalPayStudent::getGovPayStatus, 1) +// .eq(NonCoalPayStudent::getId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) +// .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); +// } else { +// //团体缴费 +// baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() +// .set(NonCoalPayStudent::getOrderNo, orderNo) +// .set(NonCoalPayStudent::getGovPayStatus, 1) +// .eq(NonCoalPayStudent::getNonCoalPayId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) +// .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); +// } +// } else { +// orderNo = nonCoalStuRep.getOrderNo(); +// } List<NonCoalCateRep> nonCoalPayCategoryList = nonCoalPayOrder.getNonCoalPayCategoryList(); if (StringUtils.isEmpty(nonCoalPayCategoryList)) { @@ -115,9 +118,9 @@ PayReqData payReqData = dealData(nonCoalPayOrder, orderNo, payType); try { - ResultVo resultVo = payUtils.sendApiPost(payReqData); + ResultVo resultVo = payUtils.faqiV2(payReqData); log.info("调用接口返回结果:" + resultVo); - if (resultVo.getRespcode().equals("BUS0000")) { + if (resultVo.getRespcode().equals(CaiZhengConstans.CAI_ZHENG_SUCCESS)) { String orderId = resultVo.getRespdata().getOrderId(); String billNo = resultVo.getRespdata().getBillNo(); if (StringUtils.isNotEmpty(orderId)) { @@ -125,16 +128,18 @@ if ("1".equals(payType)) { baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderId, orderId) -// .set(NonCoalPayStudent::getOrderNo, orderNo) + .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getPayCode, billNo) + .set(NonCoalPayStudent::getGovPayStatus, 2) .eq(NonCoalPayStudent::getId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); } else { //团体缴费 baseMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() .set(NonCoalPayStudent::getOrderId, orderId) -// .set(NonCoalPayStudent::getOrderNo, orderNo) + .set(NonCoalPayStudent::getOrderNo, orderNo) .set(NonCoalPayStudent::getPayCode, billNo) + .set(NonCoalPayStudent::getGovPayStatus, 2) .eq(NonCoalPayStudent::getNonCoalPayId, dataId).eq(NonCoalPayStudent::getDelFlag, 0) .eq(NonCoalPayStudent::getPayType, payType).eq(NonCoalPayStudent::getPayStatus, 0)); } @@ -142,12 +147,12 @@ return orderId; } else { log.error("生成订单失败:" + resultVo.getRespmsg() + ",请稍后重试,错误编码:" + resultVo.getRespcode() + "参数如下:" + payReqData); - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "发起支付失败,请稍后重试"); + throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR, "发起支付失败,请稍后重试"); } } catch (Exception e) { log.error("发起支付调用接口失败:" + e); - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, e.getMessage()); + throw new BusinessException(this.getClass(), ResultConstants.SYSTEM_ERROR, e.getMessage()); } finally { redisLock.unlock(lockKey); } @@ -159,7 +164,7 @@ @Override public NonCoalStuRep queryOrder(Long dataId, String payType) { - List<NonCoalPayOrder> nonCoalPayOrders = nonCoalPayMapper.selectNonCoalPayOrderByParam(dataId, Long.valueOf(payType)); + List<NonCoalPayOrder> nonCoalPayOrders = nonCoalPayMapper.selectNonCoalPayOrderByParam(dataId, Long.valueOf(payType), 2L); if (StringUtils.isEmpty(nonCoalPayOrders)) { throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "未找到相关缴费信息"); } @@ -172,22 +177,30 @@ } NonCoalStuRep nonCoalStuRep = nonCoalStuList.get(0); - if (nonCoalStuRep.getPayStatus() == 1) { - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已缴费请勿重复缴费"); - } +// if (nonCoalStuRep.getPayStatus() == 1) { +// throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已缴费请勿重复缴费"); +// } + if (nonCoalStuRep.getGovPayStatus() == 2 && nonCoalStuRep.getPayStatus() == 0) { try { JSONObject result = payUtils.query(nonCoalStuRep.getOrderNo()); - String status = result.getString("status"); - if (("1").equals(status)) { + log.info("查询财政订单返回结果:" + result); + String respcode = result.getString("respcode"); + if (CaiZhengConstans.CAI_ZHENG_SUCCESS.equals(respcode)) { + JSONObject respdata = result.getJSONObject("respdata"); + if (respdata != null && "1".equals(respdata.getString("status"))) { + nonCoalPayStudentMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() + .set(NonCoalPayStudent::getPayStatus, 1) + .set(NonCoalPayStudent::getPayTime, respdata.getDate("payTime")) + .eq(NonCoalPayStudent::getOrderNo, nonCoalStuRep.getOrderNo()).eq(NonCoalPayStudent::getDelFlag, 0) + .eq(NonCoalPayStudent::getPayStatus, 0)); + // 回调确认支付 + nonCoalStuRep.setPayStatus(1L); + payUtils.affirmPost(nonCoalStuRep.getOrderNo()); + } else { + log.error("查询财政订单失败:" + result.getString("respmsg") + ",错误编码:" + result.getString("respcode")); + } - nonCoalPayStudentMapper.update(null, Wrappers.<NonCoalPayStudent>lambdaUpdate() - .set(NonCoalPayStudent::getPayStatus, 1) - .set(NonCoalPayStudent::getPayTime, result.getDate("payTime")) - .eq(NonCoalPayStudent::getOrderNo, nonCoalStuRep.getOrderNo()).eq(NonCoalPayStudent::getDelFlag, 0) - .eq(NonCoalPayStudent::getPayStatus, 0)); - } else if (status == null) { - log.error("查询财政订单失败:" + result.getString("respmsg") + ",错误编码:" + result.getString("respcode")); } } catch (Exception e) { log.error("查询财政订单失败:" + e.getMessage()); @@ -205,7 +218,7 @@ payReqData.setOrderNo(orderNo); payReqData.setPayerType(Integer.valueOf(payType)); payReqData.setMoney(nonCoalPayOrder.getAmount().multiply(BigDecimal.valueOf(nonCoalStuList.size()))); - payReqData.setAmount(nonCoalStuList.size()); + payReqData.setAmount(nonCoalPayCategoryList.size()); payReqData.setDesc(nonCoalPayOrder.getBatchName()); @@ -220,7 +233,7 @@ PayReqData.Feedata feedatas = new PayReqData.Feedata(); feedatas.setAmount(nonCoalStuList.size()); feedatas.setBusCode(nonCoalCateRep.getBusinessCode()); - feedatas.setPrice(nonCoalCateRep.getCategoryAmount()); + feedatas.setPrice(nonCoalCateRep.getCategoryAmount().multiply(BigDecimal.valueOf(nonCoalStuList.size()))); feedatas1.add(feedatas); } payReqData.setFeeDatas(feedatas1); @@ -234,8 +247,8 @@ payReqData.setPayerName(nonCoalPayOrder.getPayCompanyName()); payReqData.setCertNo(nonCoalPayOrder.getPayCompanyCard()); //todo 待确认 - payReqData.setInvoiceSocialCode(nonCoalPayOrder.getPayCompanyCard()); - payReqData.setEnterCode(nonCoalPayOrder.getPayCompanyCard()); +// payReqData.setInvoiceSocialCode(nonCoalPayOrder.getPayCompanyCard()); +// payReqData.setEnterCode(nonCoalPayOrder.getPayCompanyCard()); } return payReqData; @@ -403,7 +416,7 @@ StringBuilder failureMsg = new StringBuilder(); for (NonCoalPayStuImport stu : nonCoalPayStudents) { try { - if (StringUtils.isEmpty(stu.getIdCard()) || StringUtils.isEmpty(stu.getName()) || StringUtils.isEmpty(stu.getPhone()) || stu.getSex() == null) { + if (StringUtils.isEmpty(stu.getIdCard()) || StringUtils.isEmpty(stu.getName()) || StringUtils.isEmpty(stu.getPhone())) { failureMsg.append("<br/>" + failureNum + "、导入数据为空: " + stu.getIdCard() + " 数据错误"); } else if (idCardToNameMap.get(stu.getIdCard().trim()) != null) { failureMsg.append("<br/>" + failureNum + "、身份证号: " + stu.getIdCard() + " 数据已存在"); @@ -416,9 +429,10 @@ stu1.setName(stu.getName()); stu1.setIdCard(stu.getIdCard()); stu1.setPhone(stu.getPhone()); - -// stu1.setOrderNo(RandomUtil.generateOrderNumber()); - stu1.setSex(StudentSex.BOY.getStatus().equals(stu.getSex().trim()) ? 0L : 1L); + if (StringUtils.isNotEmpty(stu.getTrain())) { + stu1.setTrain(stu.getTrain()); + } + stu1.setSex(SexUtils.sexType(stu.getIdCard())); nonCoalPayStudentMapper.insertNonCoalPayStudent(stu1); successNum++; successMsg.append("<br/>" + successNum + "、身份证号 " + stu.getIdCard() + " 导入成功"); -- Gitblit v1.9.2