From d626a586ef08f348552cbd02499f9033eebba064 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 23 Sep 2025 03:00:10 +0800
Subject: [PATCH] 1

---
 ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java |   43 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 36 insertions(+), 7 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 10c667e..a20c520 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
@@ -1,7 +1,9 @@
 package com.ruoyi.im.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.im.comm.Result;
 import com.ruoyi.im.service.InsuranceProductService;
 import com.ruoyi.im.service.UserPolicyService;
@@ -16,6 +18,10 @@
 import org.springframework.stereotype.Service;
 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;
@@ -31,26 +37,47 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Result purchaseApplication(UserPolicyDto dto) {
-        UserAccount userAccount = userAccountService.getById(dto.getUserId());
+    public Result purchaseApplication(UserPolicyDto dto) throws ParseException {
+        UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>()
+                .eq(UserAccount::getAccount,dto.getAccount()));
         if(ObjectUtil.isEmpty(userAccount)){
             return Result.error("请重新登录,未查询到你的信息!");
         }
+
+        if(userAccount.getKycStatus() == 2){
+            return Result.error("请先实名认证");
+        }else if(userAccount.getKycStatus() == 0){
+            return Result.error("实名认证审核中,请耐心等等");
+        }
+
         // 验证手机号
         boolean isPhoneValid = ValidatorUtil.isValidPhone(dto.getPhone());
         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)
+                .and(a-> a.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());
@@ -58,7 +85,9 @@
         userPolicy.setTerm(insuranceProduct.getTerm());
         userPolicy.setName(dto.getName());
         userPolicy.setGender(dto.getGender());
-        userPolicy.setBirthDate(dto.getBirthDate());
+
+        userPolicy.setBirthDate(LocalDate.parse(dto.getBirthDate()));
+
         userPolicy.setOccupation(dto.getOccupation());
         userPolicy.setIdCard(dto.getIdCard());
         userPolicy.setPhone(dto.getPhone());

--
Gitblit v1.9.3