From 5b16e50ef283a1ccdd6408ee2ccf41726f349923 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 24 Sep 2025 00:12:19 +0800
Subject: [PATCH] 1

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsurancePositionController.java       |    2 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java              |   10 ++++-
 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsurancePositionDto.java                  |    2 +
 ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java                                       |    6 ++
 ruoyi-system/src/main/java/com/ruoyi/system/domain/InsurancePosition.java                         |    2 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/MedicalInsuranceAccountController.java |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java                 |    8 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserWalletControlkler.java             |   67 +++++++++++++++++++++++++++++++++
 ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/ImApiServcieImpl.java                         |    4 +-
 ruoyi-system/src/main/java/com/ruoyi/system/domain/InsuranceProduct.java                          |    2 
 10 files changed, 97 insertions(+), 8 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 5aa4951..b6b67df 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
@@ -322,7 +322,11 @@
                 .eq(UserAccount::getInvitationAccount, userAccount.getAccount())
         );
         UserTeamAndPositionOut userTeamAndPositionOut = new UserTeamAndPositionOut();
+
+        List<InsurancePosition> positions = insurancePositionService.list();
+
         if(CollectionUtils.isEmpty(userAccountList)){
+            userTeamAndPositionOut.setInsurancePosition(positions);
             return Result.success(userTeamAndPositionOut);
         }
         List<Integer> idList = userAccountList.stream()
@@ -346,7 +350,7 @@
 
         long activeNumber = UserPolicyUtils.countActivePolicies(userPolicyList);
         userTeamAndPositionOut.setInsureNumber(activeNumber);
-        List<InsurancePosition> positions = insurancePositionService.list();
+
         positions.forEach(f->{
             if(userPolicyList.size() >= f.getNumberPeople()){
                 userTeamAndPositionOut.setPosition(f.getPosition());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/ImApiServcieImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/ImApiServcieImpl.java
index fb95e3b..8dc2ec6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/ImApiServcieImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/ImApiServcieImpl.java
@@ -127,7 +127,7 @@
 
         String invitationCode = getInvitationCode();
         UserAccount user = new UserAccount();
-        if(dto.getAccountType() == 0 && StringUtils.isNotEmpty(dto.getInvitationCode()) &&  !dto.getInvitationCode().equals("000000")){
+        if(dto.getAccountType() == 0 && StringUtils.isNotEmpty(dto.getInvitationCode()) &&  !dto.getInvitationCode().equals("00000000")){
             user = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>()
                     .eq(UserAccount::getInvitationCode, dto.getInvitationCode()).last(" limit 1"));
             if(ObjectUtil.isEmpty(user)){
@@ -231,7 +231,7 @@
      */
     public static String generateInvitationCode() {
         Random random = new Random();
-        int code = 100000 + random.nextInt(900000);
+        int code = 10000000 + random.nextInt(90000000);
         return String.valueOf(code);
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsurancePositionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsurancePositionController.java
index 7b75a59..58fbe02 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsurancePositionController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsurancePositionController.java
@@ -33,6 +33,7 @@
             insurancePosition.setNumberPeople(dto.getNumberPeople());
             insurancePosition.setRank(dto.getRank());
             insurancePosition.setSalary(dto.getSalary());
+            insurancePosition.setSort(dto.getSort());
             insurancePosition.setCreatedAt(new Date());
             insurancePosition.setUpdatedAt(new Date());
             service.save(insurancePosition);
@@ -86,6 +87,7 @@
             position.setNumberPeople(dto.getNumberPeople());
             position.setRank(dto.getRank());
             position.setSalary(dto.getSalary());
+            position.setSort(dto.getSort());
             position.setUpdatedAt(new Date());
             service.updateById(position);
             return AjaxResult.success("修改成功");
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/MedicalInsuranceAccountController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/MedicalInsuranceAccountController.java
index 7c2fef0..2164758 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/MedicalInsuranceAccountController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/MedicalInsuranceAccountController.java
@@ -41,7 +41,7 @@
             return medicalInsuranceAccountService.getReceiveStatus(account);
         }catch (Exception e){
             e.printStackTrace();
-            return Result.error("购买失败!");
+            return Result.error("获取失败!");
         }
     }
 }
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 db582f5..9f10557 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
@@ -121,12 +121,18 @@
      * 什么认证列表
      */
     @GetMapping("/list")
-    public TableDataInfo list(@RequestParam(value = "account",required = false) String account) {
+    public TableDataInfo list(@RequestParam(value = "account",required = false) String account,
+                              @RequestParam(value = "state",required = false) Integer state
+
+    ) {
         startPage();
         LambdaQueryWrapper<UserKyc> wrapper = new LambdaQueryWrapper<>();
         if(StringUtils.isNotEmpty(account)){
             wrapper.eq(UserKyc::getAccount,account);
         }
+        if(state != null){
+            wrapper.eq(UserKyc::getState,state);
+        }
         // 按创建时间倒序排列
         wrapper.orderByDesc(UserKyc::getCreatedAt);
         List<UserKyc> list = userKycService.list(wrapper);
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 a128a55..193c723 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
@@ -78,7 +78,8 @@
     @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) {
+                              @RequestParam(value = "productName",required = false) String productName,
+                              @RequestParam(value = "policyStatus",required = false) String policyStatus) {
         startPage();
 
         LambdaQueryWrapper<UserPolicy> wrapper = new LambdaQueryWrapper<>();
@@ -93,11 +94,16 @@
             wrapper.like(UserPolicy::getProductName, productName);
         }
 
-        // 产品状态精确查询
+        // 审批状态
         if (approvalStatus != null) {
             wrapper.eq(UserPolicy::getApprovalStatus, approvalStatus);
         }
 
+        // 保单状态
+        if (StringUtils.isNotEmpty(policyStatus)) {
+            wrapper.eq(UserPolicy::getPolicyStatus, policyStatus);
+        }
+
         // 按创建时间倒序排列
         wrapper.orderByDesc(UserPolicy::getCreatedAt);
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserWalletControlkler.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserWalletControlkler.java
new file mode 100644
index 0000000..f582b18
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserWalletControlkler.java
@@ -0,0 +1,67 @@
+package com.ruoyi.web.controller.product;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.UserAccount;
+import com.ruoyi.system.domain.UserKyc;
+import com.ruoyi.system.service.UserAccountService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@RestController
+@RequestMapping("/wallet")
+public class UserWalletControlkler {
+
+    @Autowired
+    UserAccountService userAccountService;
+
+    /**
+     * 用户资金操作
+     * @param userId  用户id
+     * @param type  账变类型  1:充值  2:扣款
+     * @param money 账变金额
+     * @return
+     */
+    @GetMapping("/topUp")
+    @Transactional
+    public AjaxResult topUp(@RequestParam(value = "userId") Integer userId,
+                              @RequestParam(value = "type") Integer type,
+                              @RequestParam(value = "money") BigDecimal money) {
+        if(userId == null || type == null || money.compareTo(BigDecimal.ZERO) <= 0) {
+            return AjaxResult.error("参数不正确");
+        }
+        try {
+            UserAccount userAccount = userAccountService.getById(userId);
+            if(ObjectUtil.isEmpty(userAccount)){
+                 return AjaxResult.error("用户不存在");
+            }
+            if(type == 1){
+                userAccount.setBalance(userAccount.getBalance().add(money));
+            }else if(type == 2){
+                BigDecimal balance = userAccount.getBalance().subtract(money);
+                if(balance.compareTo(BigDecimal.ZERO) < 0){
+                    return AjaxResult.success("扣款金额超过用户余额,操作失败!");
+                }
+                userAccount.setBalance(balance);
+            }else {
+                return AjaxResult.success("充值类型错误");
+            }
+            userAccountService.updateById(userAccount);
+            return AjaxResult.success("充值成功");
+        }catch (Exception e){
+            e.printStackTrace();
+            // 手动设置回滚
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("充值失败!");
+        }
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsurancePosition.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsurancePosition.java
index d4740a8..0fb6542 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsurancePosition.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsurancePosition.java
@@ -23,6 +23,8 @@
     private String rank;
     //工资
     private BigDecimal salary;
+    //排序
+    private Integer sort;
     //创建时间
     private Date createdAt;
     //更新时间
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsuranceProduct.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsuranceProduct.java
index f96446b..dca466a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsuranceProduct.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/InsuranceProduct.java
@@ -75,7 +75,7 @@
 
     // 枚举类型  产品状态(ACTIVE  上架,INACTIVE  下架)
     public enum ProductStatus {
-        ACTIVE, INACTIVE
+        ACTIVE, INACTIVE ,SOLDOUT
     }
 
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsurancePositionDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsurancePositionDto.java
index aa621f3..af315a4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsurancePositionDto.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsurancePositionDto.java
@@ -16,4 +16,6 @@
     private String rank;
     //工资
     private BigDecimal salary;
+    //排序
+    private Integer sort;
 }

--
Gitblit v1.9.3