From ee09665193c0e91997a9eb880aefbaa5c7342b24 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 22 Sep 2025 02:12:26 +0800
Subject: [PATCH] 1
---
ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java | 8 +++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java | 40 +++++++++++++++++++
ruoyi-admin/src/main/resources/application-druid.yml | 6 +-
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java | 35 ++++++++++++++---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java | 20 +++++++---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java | 2
ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java | 2
7 files changed, 94 insertions(+), 19 deletions(-)
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 18b9678..ddc3209 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
@@ -19,6 +19,9 @@
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
@@ -40,8 +43,11 @@
if(ObjectUtil.isEmpty(userAccount)){
return Result.error("请重新登录,未查询到你的信息!");
}
- if(userAccount.getKycStatus() == 0){
+
+ if(userAccount.getKycStatus() == 2){
return Result.error("请先实名认证");
+ }else if(userAccount.getKycStatus() == 0){
+ return Result.error("实名认证审核中,请耐心等等");
}
// 验证手机号
@@ -49,16 +55,29 @@
if(!isPhoneValid){
return Result.error("手机号格式不正确!");
}
- // 验证身份证
- boolean isIdCardValid = ValidatorUtil.isValidIdCard(dto.getIdCard());
- if(!isIdCardValid){
- return Result.error("身份证格式不正确!");
+// // 验证身份证
+// boolean isIdCardValid = ValidatorUtil.isValidIdCard(dto.getIdCard());
+// if(!isIdCardValid){
+// return Result.error("身份证格式不正确!");
+// }
+ long count = count(new LambdaQueryWrapper<UserPolicy>()
+ .eq(UserPolicy::getUserId, userAccount.getId())
+ .eq(UserPolicy::getPolicyStatus, UserPolicy.PolicyStatus.ACTIVE)
+ .or()
+ .eq(UserPolicy::getApprovalStatus, 0)
+ .or()
+ .eq(UserPolicy::getApprovalStatus, 1)
+ );
+ if(count > 0){
+ return Result.error("你已申购此保险,请勿重复申购");
}
InsuranceProduct insuranceProduct = insuranceProductService.getById(dto.getProductId());
if(ObjectUtil.isEmpty(insuranceProduct)){
return Result.error("该产品停止购买或已下架!");
}
UserPolicy userPolicy = new UserPolicy();
+ userPolicy.setAccount(userAccount.getAccount());
+ userPolicy.setProductName(insuranceProduct.getProductName());
userPolicy.setUserId(userAccount.getId());
userPolicy.setProductId(insuranceProduct.getId());
userPolicy.setCoverageAmount(insuranceProduct.getCoverageAmount());
@@ -66,7 +85,11 @@
userPolicy.setTerm(insuranceProduct.getTerm());
userPolicy.setName(dto.getName());
userPolicy.setGender(dto.getGender());
- userPolicy.setBirthDate(DateUtils.parseDate(dto.getBirthDate(),"yyyy-MM-dd HH:mm:ss"));
+
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ LocalDateTime dateTime = LocalDateTime.parse(dto.getBirthDate(), formatter);
+ userPolicy.setBirthDate(dateTime.toLocalDate());
+
userPolicy.setOccupation(dto.getOccupation());
userPolicy.setIdCard(dto.getIdCard());
userPolicy.setPhone(dto.getPhone());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java
index 2c9b1c8..1f838bf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java
@@ -43,7 +43,7 @@
*/
@PostMapping("/update")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult update(InsuranceProductUpdateDTO dto) {
+ public AjaxResult update(@RequestBody InsuranceProductUpdateDTO dto) {
// 1. 查询产品是否存在
InsuranceProduct insuranceProduct = insuranceProductService.getById(dto.getId());
if (insuranceProduct == null) {
@@ -84,13 +84,13 @@
}
// 4. 处理产品特色
- if (dto.getFeatureDtoList() != null && !dto.getFeatureDtoList().isEmpty()) {
+ if (dto.getProductFeature() != null && !dto.getProductFeature().isEmpty()) {
try {
// 先删除该产品原有的所有特色
deleteByProductId(insuranceProduct.getId());
// 转换DTO为实体并设置产品ID
- List<InsuranceFeature> features = dto.getFeatureDtoList().stream()
+ List<InsuranceFeature> features = dto.getProductFeature().stream()
.map(f -> {
InsuranceFeature insuranceFeature = new InsuranceFeature();
insuranceFeature.setProductId(insuranceProduct.getId());
@@ -132,6 +132,9 @@
@GetMapping("/get")
public AjaxResult get(@RequestParam(value = "id") Integer id) {
InsuranceProduct insuranceProduct = insuranceProductService.getById(id);
+ List<InsuranceFeature> features = insuranceFeatureService.list(new LambdaQueryWrapper<InsuranceFeature>()
+ .eq(InsuranceFeature::getProductId, insuranceProduct.getId()));
+ insuranceProduct.setProductFeature(features);
return AjaxResult.success(insuranceProduct);
}
@@ -165,6 +168,11 @@
wrapper.orderByDesc(InsuranceProduct::getCreatedAt);
List<InsuranceProduct> list = insuranceProductService.list(wrapper);
+ list.forEach(f->{
+ List<InsuranceFeature> features = insuranceFeatureService.list(new LambdaQueryWrapper<InsuranceFeature>()
+ .eq(InsuranceFeature::getProductId, f.getId()));
+ f.setProductFeature(features);
+ });
return getDataTable(list);
}
@@ -173,7 +181,7 @@
*/
@PostMapping("/create")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult create(InsuranceProductUpdateDTO dto) {
+ public AjaxResult create(@RequestBody InsuranceProductUpdateDTO dto) {
// 1. 检查产品代码是否已存在
long count = insuranceProductService.count(new LambdaQueryWrapper<InsuranceProduct>().eq(InsuranceProduct::getProductCode, dto.getProductCode()));
if (count > 0) {
@@ -222,10 +230,10 @@
}
// 4. 处理产品特色
- if (dto.getFeatureDtoList() != null && !dto.getFeatureDtoList().isEmpty()) {
+ if (dto.getProductFeature() != null && !dto.getProductFeature().isEmpty()) {
try {
// 转换DTO为实体并设置产品ID
- List<InsuranceFeature> features = dto.getFeatureDtoList().stream()
+ List<InsuranceFeature> features = dto.getProductFeature().stream()
.map(f -> {
InsuranceFeature insuranceFeature = new InsuranceFeature();
insuranceFeature.setProductId(product.getId());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
index 3bc0d78..df1efdc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
@@ -90,7 +90,7 @@
userKyc.setState(approvalStatus);
userKyc.setMessage(message);
userKyc.setUpdatedAt(new Date());
-
+ userKycService.updateById(userKyc);
UserAccount userAccount = userAccountService.getById(userKyc.getUserId());
userAccount.setKycStatus(approvalStatus);
userAccountService.updateById(userAccount);
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 bcdc83c..a128a55 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
@@ -1,12 +1,16 @@
package com.ruoyi.web.controller.product;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.im.comm.Result;
import com.ruoyi.im.service.MedicalInsuranceAccountService;
+import com.ruoyi.system.domain.InsuranceProduct;
import com.ruoyi.system.domain.MedicalInsuranceAccount;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.UserPolicy;
@@ -28,7 +32,7 @@
@RestController
@RequestMapping("/userPolicy")
-public class UserPolicyController {
+public class UserPolicyController extends BaseController {
@Autowired
UserPolicyService userPolicyService;
@@ -69,6 +73,40 @@
}
/**
+ * 保单列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(@RequestParam(value = "account",required = false) String account,
+ @RequestParam(value = "approvalStatus",required = false) Integer approvalStatus,
+ @RequestParam(value = "productName",required = false) String productName) {
+ startPage();
+
+ LambdaQueryWrapper<UserPolicy> wrapper = new LambdaQueryWrapper<>();
+
+ // 产品名称模糊查询
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(account)) {
+ wrapper.like(UserPolicy::getUserId, account);
+ }
+
+ // 产品代码模糊查询
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(productName)) {
+ wrapper.like(UserPolicy::getProductName, productName);
+ }
+
+ // 产品状态精确查询
+ if (approvalStatus != null) {
+ wrapper.eq(UserPolicy::getApprovalStatus, approvalStatus);
+ }
+
+ // 按创建时间倒序排列
+ wrapper.orderByDesc(UserPolicy::getCreatedAt);
+
+ List<UserPolicy> list = userPolicyService.list(wrapper);
+ return getDataTable(list);
+ }
+
+
+ /**
* 保单审批
*/
@GetMapping("/examine")
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 1b00ade..1fb4c8a 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,9 +6,9 @@
druid:
# 主库数据源
master:
- url: jdbc:mysql://127.0.0.12:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
- username: root
- password: ad8214f321db6415
+ url: jdbc:mysql://156.240.108.70:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: ruoyi
+ password: M6MhYJi6zACSR7nf
# 从库数据源
slave:
# 从数据源开关/默认关闭
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 c47ecdb..898c50e 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
@@ -23,8 +23,14 @@
// 系统生成的用户ID
private Integer userId;
+ // 账号(唯一)
+ private String account;
+
// 保险产品ID
private Integer productId;
+
+ // 产品名称
+ private String productName;
// 保额
private BigDecimal coverageAmount;
@@ -42,7 +48,7 @@
private Gender gender;
// 出生日期
- private Date birthDate;
+ private LocalDate birthDate;
// 职业
private String occupation;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java
index 448943a..155e6c7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java
@@ -50,7 +50,7 @@
private String liabilityExemption;
//产品特色
- private List<InsuranceFeatureDto> featureDtoList;
+ private List<InsuranceFeatureDto> productFeature;
// 图片1
private String img1;
--
Gitblit v1.9.3