From 7de1396e315896dbc72a9d54e44f77434ea90f18 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 14 十二月 2025 23:47:34 +0800
Subject: [PATCH] feat:增加企业微信自动登录

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
index 5dcdf90..02bf836 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -37,7 +37,38 @@
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
     {
-        SysUser user = userService.selectUserByUserName(username);
+
+        // 灏濊瘯鍒ゆ柇鏄墜鏈哄彿銆乷penId杩樻槸鐢ㄦ埛鍚�
+        SysUser user = null;
+        //qywechat__
+        if (username.startsWith("qywechat__"))
+        {
+            //浼佷笟寰俊鐧诲綍
+            //qywechat__qyUserId
+            String qyUserId =StringUtils.substringAfter(username, "qywechat__");
+            user = userService.selectUserByQyWechatUserId(qyUserId);
+        }
+        // 鍒ゆ柇鏄惁涓哄井淇penID锛堥�氬父浠�"o"寮�澶达紝28浣嶅瓧绗︼級
+        else if (username.startsWith("o") && username.length() == 28)
+        {
+            // 寰俊OpenID鐧诲綍
+            log.info("灏濊瘯浣跨敤寰俊OpenID鐧诲綍锛歿}", username);
+            user = userService.selectUserByOpenId(username);
+        }
+        // 鍒ゆ柇鏄惁涓烘墜鏈哄彿锛堢畝鍗曞垽鏂細鍏ㄦ槸鏁板瓧涓�11浣嶏級
+        else if (username.matches("^1[3-9]\\d{9}$"))
+        {
+            // 鎵嬫満鍙风櫥褰�
+            log.info("灏濊瘯浣跨敤鎵嬫満鍙风櫥褰曪細{}", username);
+            user = userService.selectUserByPhonenumber(username);
+        }
+        else
+        {
+            // 鐢ㄦ埛鍚嶇櫥褰�
+            log.info("灏濊瘯浣跨敤鐢ㄦ埛鍚嶇櫥褰曪細{}", username);
+            user = userService.selectUserByUserName(username);
+        }
+        
         if (StringUtils.isNull(user))
         {
             log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", username);

--
Gitblit v1.9.1