From 5ca511582fec57e162e1783777a032e8e1ff4f77 Mon Sep 17 00:00:00 2001
From: wzx <2271174149@qq.com>
Date: 星期五, 21 三月 2025 12:00:34 +0800
Subject: [PATCH] 小程序登录接口修改

---
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java |   44 ++++++++++++++++++++++++--------------------
 ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java                     |   15 ++++++++++++++-
 2 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
index e78d09c..9fdc93a 100644
--- a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
+++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java
@@ -2,6 +2,9 @@
 
 import cn.dev33.satoken.annotation.SaIgnore;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
+import cn.hutool.json.ObjectMapper;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.ruoyi.common.core.constant.Constants;
 import org.ruoyi.common.core.domain.R;
 import org.ruoyi.common.core.domain.model.EmailLoginBody;
@@ -48,6 +51,15 @@
     private final SysRegisterService registerService;
     private final ISysTenantService tenantService;
 
+
+    @PostMapping("/xcxLogin")
+    public R<LoginVo> login(@Validated @RequestBody String xcxCode) throws WxErrorException {
+
+        String openidFromCode = loginService.getOpenidFromCode((String) JSONUtil.parseObj(xcxCode).get("xcxCode"));
+        LoginVo loginVo = loginService.mpLogin(openidFromCode);
+            return R.ok(loginVo);
+    }
+
     /**
      * 鐧诲綍鏂规硶
      *
@@ -85,6 +97,7 @@
 
     /**
      * 璁垮鐧诲綍
+     *
      * @param loginBody 鐧诲綍淇℃伅
      * @return token淇℃伅
      */
@@ -123,7 +136,7 @@
      */
     @PostMapping("/register")
     public R<Void> register(@Validated @RequestBody RegisterBody user, HttpServletRequest request) {
-        String domainName =  request.getServerName();
+        String domainName = request.getServerName();
         user.setDomainName(domainName);
         registerService.register(user);
         return R.ok();
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java
index 29f9616..639feaf 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java
@@ -1,6 +1,7 @@
 package org.ruoyi.system.service;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.WxMaUserService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
 import cn.dev33.satoken.exception.NotLoginException;
@@ -69,6 +70,19 @@
     private Integer lockTime;
 
     /**
+     * 鑾峰彇寰俊
+     * @param xcxCode 鑾峰彇xcxCode
+    */
+    public String getOpenidFromCode(String xcxCode) {
+        try {
+            WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(xcxCode);
+            return sessionInfo.getOpenid();
+        } catch (WxErrorException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+    /**
      * 鐧诲綍楠岃瘉
      *
      * @param username 鐢ㄦ埛鍚�
@@ -135,15 +149,14 @@
     public void visitorLogin(VisitorLoginBody loginBody) {
         String openid = "";
         // PC绔父瀹㈢櫥褰�
-        if(LoginUserType.PC.getCode().equals(loginBody.getType())){
+        if (LoginUserType.PC.getCode().equals(loginBody.getType())) {
             openid = loginBody.getCode();
-        }else {
+        } else {
             // 灏忕▼搴忓尶鍚嶇櫥褰�
             try {
                 WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(loginBody.getCode());
                 openid = session.getOpenid();
-            } catch (
-                WxErrorException e) {
+            } catch (WxErrorException e) {
                 log.error(e.getMessage(), e);
             } finally {
                 // 娓呯悊ThreadLocal
@@ -159,7 +172,8 @@
         if (ObjectUtil.isNull(user)) {
             SysUserBo sysUser = new SysUserBo();
             // 鏀逛负鑷
-            String name = "鐢ㄦ埛" + UUIDShortUtil.generateShortUuid();;
+            String name = "鐢ㄦ埛" + UUIDShortUtil.generateShortUuid();
+            ;
             // 璁剧疆榛樿鐢ㄦ埛鍚�
             sysUser.setUserName(name);
             // 璁剧疆榛樿鏄电О
@@ -170,7 +184,7 @@
             sysUser.setOpenId(openid);
             String configValue = configService.getConfigValue("mail", "amount");
             // 璁剧疆榛樿浣欓
-            sysUser.setUserBalance(NumberUtils.toDouble(configValue,1));
+            sysUser.setUserBalance(NumberUtils.toDouble(configValue, 1));
             // 娉ㄥ唽鐢ㄦ埛,璁剧疆榛樿绉熸埛涓�0
             SysUser registerUser = userService.registerUser(sysUser, "0");
 
@@ -284,10 +298,7 @@
 
     private SysUserVo loadUserByUsername(String tenantId, String username) {
 
-        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
-            .select(SysUser::getUserName, SysUser::getStatus)
-            .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
-            .eq(SysUser::getUserName, username));
+        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getUserName, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getUserName, username));
         if (ObjectUtil.isNull(user)) {
             log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", username);
             throw new UserException("user.not.exists", username);
@@ -302,10 +313,7 @@
     }
 
     private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) {
-        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
-            .select(SysUser::getPhonenumber, SysUser::getStatus)
-            .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
-            .eq(SysUser::getPhonenumber, phonenumber));
+        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getPhonenumber, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getPhonenumber, phonenumber));
         if (ObjectUtil.isNull(user)) {
             log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", phonenumber);
             throw new UserException("user.not.exists", phonenumber);
@@ -320,10 +328,7 @@
     }
 
     private SysUserVo loadUserByEmail(String tenantId, String email) {
-        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
-            .select(SysUser::getPhonenumber, SysUser::getStatus)
-            .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
-            .eq(SysUser::getEmail, email));
+        SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getPhonenumber, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getEmail, email));
         if (ObjectUtil.isNull(user)) {
             log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", email);
             throw new UserException("user.not.exists", email);
@@ -419,8 +424,7 @@
         } else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) {
             log.info("鐧诲綍绉熸埛锛歿} 宸茶鍋滅敤.", tenantId);
             throw new TenantException("tenant.blocked");
-        } else if (ObjectUtil.isNotNull(tenant.getExpireTime())
-            && new Date().after(tenant.getExpireTime())) {
+        } else if (ObjectUtil.isNotNull(tenant.getExpireTime()) && new Date().after(tenant.getExpireTime())) {
             log.info("鐧诲綍绉熸埛锛歿} 宸茶秴杩囨湁鏁堟湡.", tenantId);
             throw new TenantException("tenant.expired");
         }

--
Gitblit v1.9.3