From 75b742855cba8106732b561a015a87bd711963ed Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期四, 23 一月 2025 17:02:16 +0800 Subject: [PATCH] 煤矿缴费个人缴费 --- exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java | 130 ++++++++++++++++++++++++------------------- 1 files changed, 73 insertions(+), 57 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 4043ca1..a046a22 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 @@ -23,7 +23,6 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.SysDeptMapper; -import org.aspectj.lang.reflect.UnlockSignature; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.BeanUtils; @@ -37,7 +36,6 @@ import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.Lock; import java.util.stream.Collectors; @Service @@ -58,11 +56,13 @@ @Autowired private RedissonClient redissonClient; - + @Autowired + private PayUtils payUtils; /** * 缴费管理列表 + * * @param coalPay * @return */ @@ -72,7 +72,7 @@ List<CoalPay> coalPays = coalPayMapper.selectCoalPayList(coalPay); for (CoalPay pay : coalPays) { CoalPayRepDto coalPayRepDto = new CoalPayRepDto(); - BeanUtils.copyProperties(pay,coalPayRepDto); + BeanUtils.copyProperties(pay, coalPayRepDto); //部门数据 SysDept sysDept = sysDeptMapper.selectDeptById(pay.getDeptId()); coalPayRepDto.setDeptName(sysDept.getDeptName()); @@ -98,7 +98,7 @@ //基本数据 CoalPay coalPay = coalPayMapper.selectById(id); - BeanUtils.copyProperties(coalPay,coalPayRepDto); + BeanUtils.copyProperties(coalPay, coalPayRepDto); //考点名称 SysDept sysDept = sysDeptMapper.selectDeptById(coalPay.getDeptId()); coalPayRepDto.setDeptName(sysDept.getDeptName()); @@ -120,12 +120,12 @@ @Override public int insertCoalPay(CoalPayDto coalPayDto) { CoalPay coalPay = new CoalPay(); - BeanUtils.copyProperties(coalPayDto,coalPay); + BeanUtils.copyProperties(coalPayDto, coalPay); coalPay.setCreateBy(SecurityUtils.getUsername()); coalPay.setCreateTime(new Date()); int insert = coalPayMapper.insertBath(coalPay); - if (CollectionUtils.isEmpty(coalPayDto.getCoalPayCategoryies())){ - throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"工种类别不能为空"); + if (CollectionUtils.isEmpty(coalPayDto.getCoalPayCategoryies())) { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "工种类别不能为空"); } List<CoalPayCategory> coalPayCategories = coalPayDto.getCoalPayCategoryies(); for (CoalPayCategory coalPayCategory : coalPayCategories) { @@ -137,18 +137,19 @@ /** * 修改缴费信息 + * * @param coalPayDto * @return */ @Override public int updateCoalPay(CoalPayDto coalPayDto) { CoalPay coalPay = new CoalPay(); - BeanUtils.copyProperties(coalPayDto,coalPay); + BeanUtils.copyProperties(coalPayDto, coalPay); coalPay.setUpdateBy(SecurityUtils.getUsername()); coalPay.setUpdateTime(new Date()); int i = coalPayMapper.updateCoalPayById(coalPay); int update = coalPayCategoryMapper.deleteByCoalPayId(coalPayDto.getId()); - if (update>0){ + if (update > 0) { List<CoalPayCategory> coalPayCategories = coalPayDto.getCoalPayCategoryies(); for (CoalPayCategory coalPayCategory : coalPayCategories) { coalPayCategory.setCoalPayId(coalPay.getId()); @@ -161,13 +162,13 @@ @Override public AjaxResult deleteCoalPayByIds(Long[] ids) { for (Long id : ids) { - List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayIdAndPayStatus(id,1); - if (!CollectionUtils.isEmpty(coalPayStudents)){ - throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR,"已有学员完成缴费,请勿删除"); + List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayIdAndPayStatus(id, 1); + if (!CollectionUtils.isEmpty(coalPayStudents)) { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已有学员完成缴费,请勿删除"); } } int i = coalPayMapper.updateByIds(ids); - if (i>0){ + if (i > 0) { return AjaxResult.success(); } return AjaxResult.error(); @@ -175,7 +176,7 @@ //个人查询缴费 @Override - public List<CoalPayStudentRep> selectCoalPay(String idcard,String phone) { + public List<CoalPayStudentRep> selectCoalPay(String idcard, String phone) { CoalPayStudentReq coalPayStudentReq = new CoalPayStudentReq(); coalPayStudentReq.setIdCard(idcard); coalPayStudentReq.setPhone(phone); @@ -194,7 +195,7 @@ //查询对应批次以及批次包含工种类别 CoalPay coalPay = coalPayMapper.selectById(payStudent.getCoalPayId()); CoalPayRepDto coalPayRepDto = new CoalPayRepDto(); - BeanUtils.copyProperties(coalPay,coalPayRepDto); + BeanUtils.copyProperties(coalPay, coalPayRepDto); //考点名称 SysDept sysDept = sysDeptMapper.selectDeptById(coalPay.getDeptId()); coalPayRepDto.setDeptName(sysDept.getDeptName()); @@ -210,21 +211,68 @@ @Override public int updateCoalPayType(CoalPayTypeReq coalPayTypeReq) { CoalPay byId = coalPayMapper.selectById(coalPayTypeReq.getCoalPayId()); - if (coalPayTypeReq.getPayPersonType() != null && byId.getPayPersonType() == 2){ - throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"已为团体缴费,不可更改"); + if (coalPayTypeReq.getPayPersonType() != null && byId.getPayPersonType() == 2) { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "已为团体缴费,不可更改"); } - return coalPayMapper.updateByPayId(coalPayTypeReq); + int i = coalPayMapper.updateByPayId(coalPayTypeReq); + if (i>0){ + CoalPayStudent coalPayStudent = new CoalPayStudent(); + coalPayStudent.setCoalPayId(coalPayTypeReq.getCoalPayId()); + coalPayStudent.setPayType(2); + coalPayStudentService.updateByCoalPayId(coalPayStudent); + } + return i; } @Override public String personPayMoney(Long coalPayId, Long studentId) { - CoalPayStudent coalPayStudent = coalPayStudentService.selectbyId(studentId); - CoalPay coalPay = coalPayMapper.selectById(coalPayId); - List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(coalPayId); - CoalTicket coalTicket = coalCategoryMapper.selectCoalTicket(); + CoalPayStudent payStudent = new CoalPayStudent(); + RLock lock = redissonClient.getLock("SWSPKMAS_PAY_PERSON_" + coalPayId); + try { + lock.lock(10, TimeUnit.SECONDS); + + CoalPayStudent coalPayStudent = coalPayStudentService.selectbyId(studentId); + CoalPay coalPay = coalPayMapper.selectById(coalPayId); + List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(coalPayId); + CoalTicket coalTicket = coalCategoryMapper.selectCoalTicket(); + if (coalPayStudent==null){ + throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"缴费学员不存在"); + } + if (coalPay==null){ + throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"未找到相关缴费信息"); + } + if (coalPayStudent.getPayStatus()==1){ + throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"请勿重新缴费"); + } + + PayReqData payReqData = fillData(coalPayStudent,coalPay,coalCategories,coalTicket); + + ResultVo resultVo = payUtils.sendApiPost(payReqData); + if (resultVo.getRespcode().equals("BUS0000")) { + payStudent.setId(studentId); + payStudent.setOrderId(resultVo.getRespdata().getOrderNo()); + payStudent.setGovPayStatus(1); + payStudent.setPayCode(resultVo.getRespdata().getBillNo()); + coalPayStudentService.updateByCoalPayStudent(payStudent); + return resultVo.getRespdata().getOrderId(); + } else { + throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR, "发起支付失败,请稍后重试"); + } + } catch (BusinessException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (lock.isLocked()) { + lock.unlock(); + } + } + } + + private PayReqData fillData(CoalPayStudent coalPayStudent, CoalPay coalPay, List<CoalCategory> coalCategories, CoalTicket coalTicket) { PayReqData payReqData = new PayReqData(); - payReqData.setOrderNo(RandomUtil.generateOrderNumber()); + payReqData.setOrderNo(RandomUtil.generateOrderNumber(coalPay.getId(), "CO")); payReqData.setMoney(coalPay.getAmount()); payReqData.setAmount(1); payReqData.setPayerName(coalPayStudent.getName()); @@ -245,39 +293,7 @@ feedatas.add(feedata); } payReqData.setFeeDatas(feedatas); + return payReqData; - CoalPayStudent payStudent = new CoalPayStudent(); - - RLock lock = redissonClient.getLock("SWSPKMAS_PAY_PERSON"); - try { - lock.lock(10, TimeUnit.SECONDS); - if (coalPayStudent.getGovPayStatus()!=0){ - throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"请勿重复发起支付"); - } - if (StringUtils.isEmpty(coalPayStudent.getPayCode())){ - - } - - - ResultVo resultVo = PayUtils.sendApiPost(payReqData); - if (resultVo.getRespcode().equals("BUS0000")){ - payStudent.setId(studentId); - payStudent.setOrderId(resultVo.getRespdata().getOrderNo()); - payStudent.setGovPayStatus(1); - payStudent.setPayCode(resultVo.getRespdata().getBillNo()); - coalPayStudentService.updateByCoalPayStudent(payStudent); - return resultVo.getRespdata().getBillNo(); - }else { - throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"发起支付失败,请稍后重试"); - } - }catch (BusinessException e){ - throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"请稍后重试"); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - if(lock.isLocked()){ - lock.unlock(); - } - } } } -- Gitblit v1.9.2