Просмотр исходного кода

登录与支付接口合并完成

Zhangbw 2 месяцев назад
Родитель
Сommit
442b4acb36

+ 8 - 1
.claude/settings.local.json

@@ -16,7 +16,14 @@
       "Bash(npm run build:h5:*)",
       "Bash(npm install:*)",
       "Bash(find:*)",
-      "Bash(git checkout:*)"
+      "Bash(git checkout:*)",
+      "Bash(git add:*)",
+      "Bash(git commit -m \"$\\(cat <<''EOF''\n支持小程序和H5双端配置切换\n\n修改内容:\n- 更新WxConfig类,支持读取miniapp和h5的嵌套配置\n- 在User实体类中添加miniOpenid字段,支持同一用户在小程序和H5登录\n- 修改H5AuthServiceImpl使用H5专用的appid和secret\n- 修改WxPayServiceImpl支持根据openid类型自动选择对应的appid进行支付\n\n现在系统可以:\n- 小程序用户使用mini_openid和小程序appid\n- H5用户使用openid和H5公众号appid\n- 支付时自动根据用户的openid类型选择正确的appid\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
+      "Bash(git merge:*)",
+      "Bash(git stash push:*)",
+      "Bash(for file in src/pages/index/index.vue src/pages/mine/mine.vue src/pages/rank/rank.vue src/pages/strong/strong.vue)",
+      "Bash(do echo \"=== $file ===\")",
+      "Bash(done)"
     ]
   }
 }

+ 18 - 6
src/main/java/com/yingpai/gupiao/controller/OrderController.java

@@ -53,11 +53,17 @@ public class OrderController {
             Long userId = jwtUtil.getUserIdFromToken(token);
             
             User user = userMapper.selectById(userId);
-            if (user == null || user.getOpenid() == null) {
+            if (user == null) {
+                return Result.error("用户不存在");
+            }
+
+            // 根据用户类型选择正确的openid:小程序用户使用miniOpenid,H5用户使用openid
+            String openid = user.getMiniOpenid() != null ? user.getMiniOpenid() : user.getOpenid();
+            if (openid == null) {
                 return Result.error("用户信息不完整");
             }
-            
-            WxPayVO payVO = orderService.createOrder(userId, user.getOpenid(), dto);
+
+            WxPayVO payVO = orderService.createOrder(userId, openid, dto);
             return Result.success(payVO);
         } catch (Exception e) {
             log.error("创建订单失败", e);
@@ -188,11 +194,17 @@ public class OrderController {
             Long userId = jwtUtil.getUserIdFromToken(token);
             
             User user = userMapper.selectById(userId);
-            if (user == null || user.getOpenid() == null) {
+            if (user == null) {
+                return Result.error("用户不存在");
+            }
+
+            // 根据用户类型选择正确的openid:小程序用户使用miniOpenid,H5用户使用openid
+            String openid = user.getMiniOpenid() != null ? user.getMiniOpenid() : user.getOpenid();
+            if (openid == null) {
                 return Result.error("用户信息不完整");
             }
-            
-            WxPayVO payVO = orderService.repayOrder(userId, user.getOpenid(), orderNo);
+
+            WxPayVO payVO = orderService.repayOrder(userId, openid, orderNo);
             return Result.success(payVO);
         } catch (Exception e) {
             log.error("继续支付失败", e);

+ 14 - 14
src/main/java/com/yingpai/gupiao/service/impl/AuthServiceImpl.java

@@ -57,9 +57,9 @@ public class AuthServiceImpl implements AuthService {
             
             log.info("获取微信信息成功,openid: {}, unionid: {}", openid, unionid);
             
-            // 2. 根据openid查询用户
+            // 2. 根据miniOpenid查询用户(小程序使用miniOpenid字段)
             LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(User::getOpenid, openid);
+            wrapper.eq(User::getMiniOpenid, openid);
             User user = userMapper.selectOne(wrapper);
             
             // 3. 判断用户是否存在
@@ -147,14 +147,14 @@ public class AuthServiceImpl implements AuthService {
                         .build();
             }
             
-            // 5. 已注册用户,更新openid和unionid(如果没有)
+            // 5. 已注册用户,更新miniOpenid和unionid(如果没有)
             boolean needUpdate = false;
-            
-            if (user.getOpenid() == null || user.getOpenid().isEmpty()) {
-                user.setOpenid(openid);
+
+            if (user.getMiniOpenid() == null || user.getMiniOpenid().isEmpty()) {
+                user.setMiniOpenid(openid);
                 needUpdate = true;
             }
-            
+
             if (unionid != null && (user.getUnionid() == null || user.getUnionid().isEmpty())) {
                 user.setUnionid(unionid);
                 needUpdate = true;
@@ -205,19 +205,19 @@ public class AuthServiceImpl implements AuthService {
                 throw new RuntimeException("该手机号已被注册");
             }
             
-            // 2. 检查openid是否已存在
+            // 2. 检查miniOpenid是否已存在(小程序使用miniOpenid字段)
             LambdaQueryWrapper<User> openidWrapper = new LambdaQueryWrapper<>();
-            openidWrapper.eq(User::getOpenid, dto.getOpenid());
+            openidWrapper.eq(User::getMiniOpenid, dto.getOpenid());
             existUser = userMapper.selectOne(openidWrapper);
-            
+
             if (existUser != null) {
-                log.warn("openid已存在,openid: {}, userId: {}", dto.getOpenid(), existUser.getId());
+                log.warn("miniOpenid已存在,openid: {}, userId: {}", dto.getOpenid(), existUser.getId());
                 throw new RuntimeException("该微信账号已注册");
             }
-            
-            // 3. 创建新用户
+
+            // 3. 创建新用户(小程序使用miniOpenid字段)
             User newUser = User.builder()
-                    .openid(dto.getOpenid())
+                    .miniOpenid(dto.getOpenid())
                     .unionid(dto.getUnionid())
                     .phone(dto.getPhoneNumber())
                     .nickname(dto.getNickname())