From 8e1c5b13e9dd4a88f17dfe4569d4a51b3495d83a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 14 Oct 2025 03:36:28 +0800
Subject: [PATCH] 1

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java |   57 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 39 insertions(+), 18 deletions(-)

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 c527cf7..33b8258 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,28 +78,30 @@
      */
     @PostMapping("/purchaseApplication")
     public Result purchaseApplication(UserPolicyDto dto) {
-        // 生成锁的key:基于用户ID和产品ID,防止同一用户同时购买同一产品
-        String lockKey = redisDistributedLock.generateLockKey(dto.getAccount(), dto.getProductId());
+        synchronized (dto.getAccount()) {
+            // 生成锁的key:基于用户ID和产品ID,防止同一用户同时购买同一产品
+            String lockKey = redisDistributedLock.generateLockKey(dto.getAccount(), dto.getProductId());
 
-        boolean lockAcquired = false;
-        try {
-            // 尝试获取分布式锁:等待10秒,锁过期30秒
-            lockAcquired = redisDistributedLock.tryLock(lockKey, 30L, 10L);
+            boolean lockAcquired = false;
+            try {
+                // 尝试获取分布式锁:等待10秒,锁过期30秒
+                lockAcquired = redisDistributedLock.tryLock(lockKey, 30L, 10L);
 
-            if (!lockAcquired) {
-                return Result.error("操作过于频繁,请稍后重试");
-            }
+                if (!lockAcquired) {
+                    return Result.error("操作过于频繁,请稍后重试");
+                }
 
-            // 执行购买逻辑
-            return userPolicyService.purchaseApplication(dto);
+                // 执行购买逻辑
+                return userPolicyService.purchaseApplication(dto);
 
-        } catch (Exception e) {
-            e.printStackTrace();
-            return Result.error("购买失败");
-        } finally {
-            // 释放锁
-            if (lockAcquired) {
-                redisDistributedLock.releaseLock(lockKey);
+            } catch (Exception e) {
+                e.printStackTrace();
+                return Result.error("购买失败");
+            } finally {
+                // 释放锁
+                if (lockAcquired) {
+                    redisDistributedLock.releaseLock(lockKey);
+                }
             }
         }
     }
@@ -109,6 +111,25 @@
     /**
      * 根据用户id查询保单
      */
+    @GetMapping("/updateGender")
+    public AjaxResult updateGender(@RequestParam(value = "id") Integer id,@RequestParam(value = "gender") UserPolicy.Gender gender) {
+        try {
+            UserPolicy userPolicy = userPolicyService.getById(id);
+            if(ObjectUtil.isEmpty(userPolicy)){
+                AjaxResult.error("保单不存在!");
+            }
+            userPolicy.setGender(gender);
+            userPolicyService.updateById(userPolicy);
+            return AjaxResult.success("修改成功");
+        }catch (Exception e){
+            e.printStackTrace();
+            return AjaxResult.error("修改失败!");
+        }
+    }
+
+    /**
+     * 根据用户id查询保单
+     */
     @GetMapping("/getPolicyById")
     public Result getPolicyById(@RequestParam(value = "account") String account) {
         try {

--
Gitblit v1.9.3