From 84d42b6997ae87fa64b75ae085fce11d05a6ca5a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sun, 12 Oct 2025 02:17:49 +0800
Subject: [PATCH] 1
---
ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java | 3 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java | 38 +++++++++++++++++-
ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java | 2
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java | 41 ++++++++++++++++----
ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java | 2
ruoyi-admin/src/main/java/com/ruoyi/imenum/PaymentMode.java | 28 ++++++++++++++
ruoyi-system/src/main/java/com/ruoyi/system/domain/PaymentRecord.java | 3 +
7 files changed, 103 insertions(+), 14 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
index 30859d4..bc0dc43 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
@@ -404,7 +404,7 @@
long count = userPolicyService.count(new LambdaQueryWrapper<>(UserPolicy.class)
.eq(UserPolicy::getUserId, userAccount.getId())
.eq(UserPolicy::getProductId,f.getId())
- .eq(UserPolicy::getPayStatus,2)
+ .and(a->a.ne(UserPolicy::getPayStatus,2).or().ne(UserPolicy::getPayStatus,1))
.ne(UserPolicy::getApprovalStatus,2)
);
if(count > 0){
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java
index 7ecf00c..7a406e4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.im.service.UserPolicyService;
import com.ruoyi.im.util.PayService;
import com.ruoyi.im.util.ValidatorUtil;
+import com.ruoyi.imenum.PaymentMode;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.system.mapper.UserPolicyMapper;
@@ -75,7 +76,7 @@
.eq(UserPolicy::getPolicyStatus, UserPolicy.PolicyStatus.PENDING)
.and(a-> a.eq(UserPolicy::getApprovalStatus, 0)
.or()
- .eq(UserPolicy::getApprovalStatus, 1))
+ .eq(UserPolicy::getPayStatus, 1))
);
if(count > 0){
@@ -85,7 +86,7 @@
if(ObjectUtil.isEmpty(insuranceProduct)){
return Result.error("该产品停止购买或已下架!");
}
- if(userAccount.getBalance().compareTo(insuranceProduct.getPremium()) < 0){
+ if(!dto.getPayProductId().equals("0")){
String orderNo = generateOrderNo();
String payOrder = payService.createOrder(
insuranceProduct.getPremium(),
@@ -128,24 +129,32 @@
userPolicy.setCreatedAt(new Date());
userPolicy.setUpdatedAt(new Date());
userPolicy.setApprovalStatus(0);
+ PaymentMode payment = PaymentMode.getByCode(dto.getPayProductId());
+ if (payment != null) {
+ userPolicy.setModePayment(payment.getMode());
+ } else {
+ // 处理未知支付方式
+ userPolicy.setModePayment(0);
+ }
userPolicy.setIsLifelong(insuranceProduct.getTerm() == 0 ? 0 : 1);
save(userPolicy);
+ extracted(userAccount, userPolicy.getId(), orderNo,PaymentRecord.PaymentStatus.PENDING.getCode(),userPolicy.getProductId(),userPolicy.getProductName(),userPolicy.getModePayment());
return Result.success(payUrl);
case 401:
- extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败");
+ extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败",0);
return Result.error("未授权访问支付系统");
case 403:
- extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败");
+ extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败",0);
return Result.error("禁止访问支付系统");
case 404:
- extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败");
+ extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败",0);
return Result.error("支付接口不存在");
case 0014: // 注意:0014可能是字符串,需要根据实际情况处理
- extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败");
+ extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败",0);
return Result.error("当前支付不可用,请更换其他支付方式!");
default:
- extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败");
+ extracted(userAccount, null, orderNo,PaymentRecord.PaymentStatus.FAILED.getCode(),null,"获取支付通道失败",0);
// 其他错误码
String message = (String) parse.get("message");
if (message != null && !message.isEmpty()) {
@@ -155,6 +164,9 @@
}
}
}else{
+ if(userAccount.getBalance().compareTo(insuranceProduct.getPremium()) < 0){
+ return Result.error("余额不足!");
+ }
userAccount.setBalance(userAccount.getBalance().subtract(insuranceProduct.getPremium()));
userAccountService.updateById(userAccount);
@@ -183,6 +195,7 @@
userPolicy.setCreatedAt(new Date());
userPolicy.setUpdatedAt(new Date());
userPolicy.setApprovalStatus(0);
+ userPolicy.setModePayment(3);
userPolicy.setIsLifelong(insuranceProduct.getTerm() == 0 ? 0 : 1);
save(userPolicy);
@@ -200,12 +213,15 @@
paymentRecord.setName(userKyc.getName());
paymentRecord.setInvitationCode(userAccount.getInvitationCode());
paymentRecord.setProductName(insuranceProduct.getProductName());
+ paymentRecord.setModePayment(3);
paymentRecordService.save(paymentRecord);
return Result.success();
}
}
- private void extracted(UserAccount userAccount, Integer userPolicyId, String orderNo,Integer payCode,Integer productId,String productName) {
+
+ private void extracted(UserAccount userAccount, Integer userPolicyId,
+ String orderNo,Integer payCode,Integer productId,String productName,Integer modePayment) {
UserKyc userKyc = userKycService.getOne(new LambdaQueryWrapper<UserKyc>()
.eq(UserKyc::getAccount, userAccount.getAccount())
);
@@ -216,9 +232,16 @@
paymentRecord.setInvitationCode(userAccount.getInvitationCode());
paymentRecord.setProductName(productName);
paymentRecord.setPaymentStatus(payCode);
+ if(userPolicyId != null){
+ paymentRecord.setOrderId(userPolicyId);
+ }
+ if(userPolicyId != null){
+ paymentRecord.setOrderId(userPolicyId);
+ }
paymentRecord.setProductId(productId);
- paymentRecord.setOrderId(userPolicyId);
+
paymentRecord.setPayOrdeNo(orderNo);
+ paymentRecord.setModePayment(modePayment);
paymentRecordService.save(paymentRecord);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java b/ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java
index 851e29e..13f487b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java
@@ -131,7 +131,7 @@
userPolicyService.removeByIds(records);
}
if(!CollectionUtils.isEmpty(list)){
- userPolicyService.removeByIds(list);
+ paymentRecordService.removeByIds(list);
}
}
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/imenum/PaymentMode.java b/ruoyi-admin/src/main/java/com/ruoyi/imenum/PaymentMode.java
new file mode 100644
index 0000000..ba2892f
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/imenum/PaymentMode.java
@@ -0,0 +1,28 @@
+package com.ruoyi.imenum;
+
+// 定义支付方式枚举
+public enum PaymentMode {
+ ALIPAY("0006", 1),
+ WECHAT("0007", 2);
+
+ private final String code;
+ private final int mode;
+
+ PaymentMode(String code, int mode) {
+ this.code = code;
+ this.mode = mode;
+ }
+
+ public static PaymentMode getByCode(String code) {
+ for (PaymentMode payment : values()) {
+ if (payment.code.equals(code)) {
+ return payment;
+ }
+ }
+ return null;
+ }
+
+ public int getMode() {
+ return mode;
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
index 2d398ab..c7e9d4a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
@@ -115,6 +115,7 @@
List<UserPolicy> list = userPolicyService.list(new LambdaQueryWrapper<UserPolicy>()
.eq(UserPolicy::getUserId, userAccount.getId())
.eq(UserPolicy::getPayStatus,2)
+ .eq(UserPolicy::getApprovalStatus,1)
);
return Result.success(list);
}catch (Exception e){
@@ -161,15 +162,19 @@
/**
- * 保单列表
+ * 支付记录列表
*/
@GetMapping("/PaymentRecordList")
- public TableDataInfo PaymentRecordList(@RequestParam(value = "payOrdeNo",required = false) String payOrdeNo,
+ public TableDataInfo PaymentRecordList( @RequestParam(value = "account",required = false) String account,
+ @RequestParam(value = "payOrdeNo",required = false) String payOrdeNo,
@RequestParam(value = "paymentStatus",required = false) Integer paymentStatus) {
startPage();
LambdaQueryWrapper<PaymentRecord> wrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotEmpty(account)) {
+ wrapper.eq(PaymentRecord::getAccount, account);
+ }
// 产品名称模糊查询
if (StringUtils.isNotEmpty(payOrdeNo)) {
wrapper.eq(PaymentRecord::getPayOrdeNo, payOrdeNo);
@@ -226,7 +231,7 @@
userPolicy.setApprovalStatus(approvalStatus);
userPolicy.setMessage(message);
userPolicy.setStartDate(LocalDate.now());
- userPolicy.setEndDate(expirationTime);
+ userPolicy.setEndDate(expirationTime.minusDays(1));
userPolicy.setInsuranceBenefitExpiryDate(insuranceBenefitExpiryDate);
userPolicy.setPolicyStatus(UserPolicy.PolicyStatus.ACTIVE);
userPolicy.setUpdatedAt(new Date());
@@ -514,4 +519,31 @@
throw new RuntimeException("MD5加密失败", e);
}
}
+
+ /**
+ * 保单列表
+ */
+ @GetMapping("/deleteRecordById")
+ public AjaxResult PaymentRecordList(@RequestParam(value = "id",required = false) Integer id) {
+ // 查询所有创建时间超过5分钟且状态为待支付的订单
+ PaymentRecord byId = paymentRecordService.getById(id);
+ if(ObjectUtil.isEmpty(byId)){
+ return AjaxResult.error("订单不存在!");
+ }
+ if(byId.getPaymentStatus() == 2){
+ return AjaxResult.error("订单已支付,禁止删除");
+ }
+ UserPolicy userPolicy = userPolicyService.getById(byId.getOrderId());
+ if(ObjectUtil.isEmpty(userPolicy)){
+ return AjaxResult.error("保单不存在!");
+ }
+ if(userPolicy.getPayStatus() == 2){
+ return AjaxResult.error("订单已支付,禁止删除");
+ }
+
+ paymentRecordService.removeById(byId);
+ userPolicyService.removeById(userPolicy);
+ return AjaxResult.success("删除成功");
+ }
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/PaymentRecord.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PaymentRecord.java
index efcbc20..35e9351 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/PaymentRecord.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PaymentRecord.java
@@ -55,6 +55,9 @@
*/
private String payOrdeNo;
+ //支付方式 1 支付宝 2微信 3余额
+ private Integer modePayment;
+
/**
* 新增时间
*/
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java
index 31bfc00..c8debd5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java
@@ -100,6 +100,9 @@
//支付失败原因
private String payMsg;
+ //支付方式 1 支付宝 2微信 3余额
+ private Integer modePayment;
+
// 性别枚举 M:男 F:女 OTHER:其他
public enum Gender {
M, F, OTHER
--
Gitblit v1.9.3