From 5a88c770debe086dd82ab5ce8a4c957a3debdae7 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Fri, 24 Jan 2025 17:07:09 +0800
Subject: [PATCH] 煤矿缴费修改
---
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java | 89 +++++++++++++++++-----
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java | 7 -
exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java | 40 ++++++++++
exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml | 17 +++
exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalTeamPayReq.java | 12 +++
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java | 2
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java | 11 ++
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java | 4
exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java | 14 ++-
ruoyi-admin/src/main/resources/application-pro.yml | 3
exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java | 1
ruoyi-admin/src/main/resources/application-dev.yml | 1
12 files changed, 164 insertions(+), 37 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java
index 833df8d..882c968 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java
@@ -2,10 +2,7 @@
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.CoalPayStudent;
import com.gkhy.exam.pay.service.CoalPayService;
import com.ruoyi.common.annotation.Anonymous;
@@ -97,13 +94,20 @@
return success(coalPayStudentReps);
}
- @PostMapping("/personPay")
+ @GetMapping("/personPay")
@ApiOperation(value = "个人缴费接口")
@Anonymous
public AjaxResult payMoney(@RequestParam("coalPayId") Long coalPayId,@RequestParam("studentId") Long studentId){
return success(coalPayService.personPayMoney(coalPayId,studentId));
}
+ @PostMapping("/teamPay")
+ @Anonymous
+ @ApiOperation(value = "批量缴费")
+ public AjaxResult teamMoney(@RequestBody CoalTeamPayReq coalTeamPayReq){
+ return success(coalPayService.teamPayMoney(coalTeamPayReq));
+ }
+
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalTeamPayReq.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalTeamPayReq.java
new file mode 100644
index 0000000..af77ef9
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalTeamPayReq.java
@@ -0,0 +1,12 @@
+package com.gkhy.exam.pay.dto.req;
+
+import lombok.Data;
+
+@Data
+public class CoalTeamPayReq {
+
+ private Long coalPayId;
+ private Integer payPersonType;
+ private String payCompanyName;
+ private String payCompanyCard;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java
index 650cceb..0e4e791 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java
@@ -83,7 +83,7 @@
* 缴款单位名称
*/
@Excel(name = "缴款单位名称")
- @ApiModelProperty("缴款单位证件号")
+ @ApiModelProperty("缴款单位名称")
private String payCompanyName;
/**
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java
index 14715ab..cf49ffd 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java
@@ -25,4 +25,5 @@
void updateByCoalPayId(CoalPayStudent coalPayStudent);
+ void updateByCoalPayIdAndStatus(CoalPayStudent payStudent);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java
index 74d3a12..cbe4e99 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java
@@ -3,10 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
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.CoalPay;
import com.gkhy.exam.pay.entity.CoalPayStudent;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -29,4 +26,6 @@
int updateCoalPayType(CoalPayTypeReq coalPayDto);
String personPayMoney(Long coalPayId, Long studentId);
+
+ String teamPayMoney(CoalTeamPayReq coalTeamPayReq);
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java
index e7a10b1..8162510 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java
@@ -27,7 +27,9 @@
List<CoalPayStudent> selectbyIdcard(CoalPayStudentReq coalPayStudent);
- CoalPayStudent selectbyId(Long studentId);
+ List<CoalPayStudent> selectbyId(Long studentId);
void updateByCoalPayId(CoalPayStudent coalPayStudent);
+
+ void updateByCoalPayIdAndStatus(CoalPayStudent payStudent);
}
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..2c86c26 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;
@@ -32,6 +29,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;
@@ -228,25 +226,26 @@
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")) {
@@ -257,7 +256,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 +269,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;
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java
index e06c0fc..f85e3a9 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java
@@ -143,12 +143,19 @@
}
@Override
- public CoalPayStudent selectbyId(Long studentId) {
- return coalPayStudentMapper.selectById(studentId);
+ public List<CoalPayStudent> selectbyId(Long studentId) {
+ List<Long> longs = new ArrayList<>();
+ longs.add(studentId);
+ return coalPayStudentMapper.selectBatchIds(longs);
}
@Override
public void updateByCoalPayId(CoalPayStudent coalPayStudent) {
coalPayStudentMapper.updateByCoalPayId(coalPayStudent);
}
+
+ @Override
+ public void updateByCoalPayIdAndStatus(CoalPayStudent payStudent) {
+ coalPayStudentMapper.updateByCoalPayIdAndStatus(payStudent);
+ }
}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
index 36580a6..8c94e73 100644
--- a/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
@@ -30,6 +30,7 @@
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import javax.net.ssl.SSLContext;
@@ -63,6 +64,15 @@
@Value("${finance.apiId}")
private String appId;
+ @Value("${finance.queryUrl}")
+ private String queryUrl;
+
+ /**
+ * 请求开票,发起支付
+ * @param payReqData
+ * @return
+ * @throws IOException
+ */
public ResultVo sendApiPost(PayReqData payReqData) throws IOException {
Map<String, String> param = new HashMap<>();
@@ -85,6 +95,7 @@
return resultVo;
}
+ //组装请求体
private static UrlEncodedFormEntity assemblyFormEntity(Map<String, String> parameters, String charset) {
List<NameValuePair> formParameters = assemblyParameter(parameters);
UrlEncodedFormEntity formEntity = null;
@@ -120,6 +131,7 @@
}
+ //在调用SSL之前需要重写验证方法,取消检测SSL 创建ConnectionManager,添加Connection配置信息
private static HttpClient sslClient() {
try {
// 在调用SSL之前需要重写验证方法,取消检测SSL
@@ -162,6 +174,7 @@
}
+ //获取响应结果处理器,将响应结果封装为HttpResult对象
private static ResponseHandler<HttpResultVo> getResponseHandler() {
ResponseHandler<HttpResultVo> responseHandler = new ResponseHandler<HttpResultVo>() {
@Override
@@ -202,6 +215,7 @@
return responseHandler;
}
+ //判断相应内容是否为文本类型
private static boolean isTextType(ContentType contentType) {
if (contentType == null) {
throw new RuntimeException("ContentType is null");
@@ -297,4 +311,30 @@
log.info("请求结果json为:" + result);
return result;
}
+
+
+ //票据查询
+ public ResponseEntity<String> findBill(String billNO) throws IOException {
+ Map<String, String> params = new HashMap<>();
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("billNo",billNO);
+ String reqdata = Base64.getEncoder().encodeToString(jsonObject.toJSONString().getBytes());
+ String mac = appId+"||"+reqdata;
+ mac = DigestUtils.md5Hex(mac.getBytes());
+ params.put("appid",appId);
+ params.put("reqdata",reqdata);
+ params.put("mac",mac);
+
+ HttpPost httpPost = new HttpPost(queryUrl);
+ httpPost.setEntity(assemblyFormEntity(params,"utf-8"));
+ HttpClient httpClient = getHttpClient(queryUrl);
+ HttpResultVo execute = httpClient.execute(httpPost, getResponseHandler());
+ String stringContent = execute.getStringContent();
+ JSONObject jsonObject1 = JSONObject.parseObject(stringContent);
+ log.info("请求结果转json后为:"+jsonObject1);
+ String result = (String) jsonObject1.get("reqdata");
+ return ResponseEntity.ok(result);
+
+ }
}
diff --git a/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml b/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml
index 0e3f2f9..7078ba9 100644
--- a/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml
+++ b/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml
@@ -83,6 +83,13 @@
</trim>
where coal_pay_id = #{coalPayId} and pay_status = 0
</update>
+ <update id="updateByCoalPayIdAndStatus">
+ update coal_pay_student
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="payType != null">pay_type = #{payType},</if>
+ </trim>
+ where coal_pay_id = #{coalPayId} and pay_status = 0
+ </update>
<select id="selectByCoalPayId" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
<include refid="selectCoalPayStudentVo"></include>
@@ -92,8 +99,14 @@
<select id="selectByCoalPayIdAndPayStatus" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
<include refid="selectCoalPayStudentVo"></include>
- where coal_pay_id = #{id} and pay_status = #{status}
- and del_flag =0
+ <where>
+ <if test="status == 0">
+ and pay_type = 2
+ </if>
+ and coal_pay_id = #{id}
+ and pay_status = #{status}
+ and del_flag =0
+ </where>
</select>
<select id="selectByIds" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index a687cfe..3c1d886 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -137,3 +137,4 @@
orderUrl: http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/invoice.do
payNotifyUrl: http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/notifyConfirm.do
payQueryUrl: http://finpt.xjcz.gov.cn/fs-service/fs-pay/query.do
+ queryUrl: http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/queryFile.do
diff --git a/ruoyi-admin/src/main/resources/application-pro.yml b/ruoyi-admin/src/main/resources/application-pro.yml
index 20fc39e..c48b982 100644
--- a/ruoyi-admin/src/main/resources/application-pro.yml
+++ b/ruoyi-admin/src/main/resources/application-pro.yml
@@ -135,4 +135,5 @@
apiId: ED76A5F1703540BE977D34780B371FEB
orderUrl: http://finpt.xjcz.gov.cn/fs-service/fs-pay/invoice.do
payNotifyUrl: http://finpt.xjcz.gov.cn/fs-service/fs-pay/notifyConfirm.do
- payQueryUrl: http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/query.do
\ No newline at end of file
+ payQueryUrl: http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/query.do
+ queryUrl: http://finpt.xjcz.gov.cn/fs-service/fs-pay/queryFile.do
\ No newline at end of file
--
Gitblit v1.9.2