From 3a3b5bc665f526269bd622a70812bead173fbdf2 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期五, 18 七月 2025 15:59:02 +0800
Subject: [PATCH] 企业微信H5登录改回静默授权方式

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java |  218 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 142 insertions(+), 76 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java
index f25dc67..9e46d10 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java
@@ -1038,17 +1038,7 @@
         if (accessToken == null) {
             return null;
         }
-
-        // 閫氳繃code鑾峰彇鐢ㄦ埛淇℃伅锛堝寘鍚玼ser_ticket锛�
-        JSONObject userInfoResult = this.getUserInfoByCode(code, accessToken);
-        if (userInfoResult == null || userInfoResult.getInteger("errcode") != 0) {
-            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛淇℃伅澶辫触锛宑ode: {}", code);
-            return null;
-        }
-
-        String appUserId = userInfoResult.getString("UserId");
-        String userTicket = userInfoResult.getString("user_ticket"); // 鎵嬪姩鎺堟潈杩斿洖鐨勭敤鎴风エ鎹�
-
+        String appUserId = this.getUserIdByThirdCode(code, accessToken);
         if (appUserId != null) {
             // 鍒ゆ柇绗笁鏂圭敤鎴疯〃鏈夋病鏈夎繖涓汉
             LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
@@ -1056,63 +1046,18 @@
             queryWrapper.or().eq(SysThirdAccount::getThirdUserId, appUserId);
             queryWrapper.eq(SysThirdAccount::getThirdType, THIRD_TYPE);
             SysThirdAccount thirdAccount = sysThirdAccountService.getOne(queryWrapper);
-
-            // 閫氳繃user_ticket鑾峰彇鐢ㄦ埛璇︾粏淇℃伅锛堝寘鍚墜鏈哄彿绛夋晱鎰熶俊鎭級
-            JSONObject userDetail = this.getUserDetailByTicket(userTicket, accessToken);
-            String mobile = userDetail.getString("mobile");
-
             if (thirdAccount != null) {
-                // 鏇存柊鎵嬫満鍙凤紙濡傛灉鏈夛級
-                if (mobile != null && !mobile.isEmpty()) {
-                    thirdAccount.setPhone(mobile);
-                    sysThirdAccountService.updateById(thirdAccount);
-                }
                 return this.getSysUserByThird(thirdAccount, null, appUserId, accessToken);
             } else {
-                // 鐩存帴鍒涘缓鏂拌处鍙凤紝鍖呭惈鎵嬫満鍙蜂俊鎭�
+                // 鐩存帴鍒涘缓鏂拌处鍙�
                 User appUser = JwUserAPI.getUserByUserid(appUserId, accessToken);
-                ThirdLoginModel tlm = new ThirdLoginModel(THIRD_TYPE, appUser.getUserid(), appUser.getName(), appUser.getAvatar(), mobile);
+                ThirdLoginModel tlm = new ThirdLoginModel(THIRD_TYPE, appUser.getUserid(), appUser.getName(), appUser.getAvatar());
                 thirdAccount = sysThirdAccountService.saveThirdUser(tlm);
                 return this.getSysUserByThird(thirdAccount, appUser, null, null);
             }
         }
         return null;
     }
-
-    /**
-     * 閫氳繃code鑾峰彇鐢ㄦ埛淇℃伅锛堝寘鍚玼ser_ticket锛�
-     */
-    private JSONObject getUserInfoByCode(String code, String accessToken) {
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo" +
-                "?access_token=" + accessToken +
-                "&code=" + code;
-        try {
-            String result = String.valueOf(RestUtil.get(url));
-            return JSONObject.parseObject(result);
-        } catch (Exception e) {
-            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛淇℃伅寮傚父", e);
-            return null;
-        }
-    }
-
-    /**
-     * 閫氳繃user_ticket鑾峰彇鐢ㄦ埛璇︾粏淇℃伅锛堝寘鍚墜鏈哄彿绛夋晱鎰熶俊鎭級
-     */
-    private JSONObject getUserDetailByTicket(String userTicket, String accessToken) {
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail";
-        JSONObject params = new JSONObject();
-        params.put("user_ticket", userTicket);
-
-        try {
-            String result = String.valueOf(RestUtil.post(url + "?access_token=" + accessToken, JSONObject.parseObject(params.toJSONString())));
-//            String result = String.valueOf(RestUtil.post(url + "?access_token=" + accessToken, params.toJSONString()));
-            return JSONObject.parseObject(result);
-        } catch (Exception e) {
-            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛璇︾粏淇℃伅寮傚父", e);
-            return new JSONObject(); // 杩斿洖绌哄璞¢伩鍏峃PE
-        }
-    }
-
 
     /**
      * 鏍规嵁绗笁鏂硅处鍙疯幏鍙栨湰鍦拌处鍙凤紝濡傛灉涓嶅瓨鍦ㄥ氨鍒涘缓
@@ -1126,24 +1071,14 @@
     private SysUser getSysUserByThird(SysThirdAccount thirdAccount, User appUser, String appUserId, String accessToken) {
         String sysUserId = thirdAccount.getSysUserId();
         if (oConvertUtils.isNotEmpty(sysUserId)) {
-            SysUser sysUser = userMapper.selectById(sysUserId);
-            if (sysUser != null && StringUtils.isBlank(sysUser.getPhone())) {
-                //濡傛灉鏈夌敤鎴凤紝骞朵笖娌℃湁鐢佃瘽淇℃伅锛屾洿鏂拌繘鐢佃瘽鍙风爜
-                SysUser user = new SysUser()
-                        .setId(sysUser.getId())
-                        .setPhone(thirdAccount.getPhone());
-                userMapper.updateById(user);
-            }
-            return sysUser;
+            return userMapper.selectById(sysUserId);
         } else {
             // 濡傛灉娌℃湁 sysUserId 锛岃鏄庢病鏈夌粦瀹氳处鍙凤紝鑾峰彇鍒版墜鏈哄彿涔嬪悗杩涜缁戝畾
             if (appUser == null) {
                 appUser = JwUserAPI.getUserByUserid(appUserId, accessToken);
             }
-            appUser.setMobile(thirdAccount.getPhone());
             // 鍒ゆ柇绯荤粺閲屾槸鍚︽湁杩欎釜鐢ㄦ埛锛屾牴鎹伐鍙峰尮閰�
             SysUser sysUser = userMapper.getUserByWorkNo(thirdAccount.getThirdUserId());
-            //SysUser sysUser = userMapper.getUserByPhone(appUser.getMobile());
             if (sysUser != null) {
                 thirdAccount.setAvatar(appUser.getAvatar());
                 thirdAccount.setRealname(appUser.getName());
@@ -1151,13 +1086,6 @@
                 thirdAccount.setThirdUserUuid(appUser.getUserid());
                 thirdAccount.setSysUserId(sysUser.getId());
                 sysThirdAccountService.updateById(thirdAccount);
-                if (StringUtils.isBlank(sysUser.getPhone())) {
-                    //濡傛灉娌℃湁鎵嬫満鍙风爜锛屾洿鏂�
-                    SysUser user = new SysUser()
-                            .setId(sysUser.getId())
-                            .setPhone(appUser.getMobile());
-                    userMapper.updateById(user);
-                }
                 return sysUser;
             } else {
                 // 娌℃湁灏辫蛋鍒涘缓閫昏緫
@@ -1167,4 +1095,142 @@
         }
     }
 
+    //閫傞厤鎵嬪姩鎺堟潈鐧诲綍锛岃幏鍙栫敤鎴锋墜鏈哄彿鐮佽皟鏁翠慨鏀�
+//    /**
+//     * OAuth2鐧诲綍锛屾垚鍔熻繑鍥炵櫥褰曠殑SysUser锛屽け璐ヨ繑鍥瀗ull
+//     */
+//    public SysUser oauth2Login(String code) {
+//        String accessToken = this.getAppAccessToken();
+//        if (accessToken == null) {
+//            return null;
+//        }
+//
+//        // 閫氳繃code鑾峰彇鐢ㄦ埛淇℃伅锛堝寘鍚玼ser_ticket锛�
+//        JSONObject userInfoResult = this.getUserInfoByCode(code, accessToken);
+//        if (userInfoResult == null || userInfoResult.getInteger("errcode") != 0) {
+//            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛淇℃伅澶辫触锛宑ode: {}", code);
+//            return null;
+//        }
+//
+//        String appUserId = userInfoResult.getString("UserId");
+//        String userTicket = userInfoResult.getString("user_ticket"); // 鎵嬪姩鎺堟潈杩斿洖鐨勭敤鎴风エ鎹�
+//
+//        if (appUserId != null) {
+//            // 鍒ゆ柇绗笁鏂圭敤鎴疯〃鏈夋病鏈夎繖涓汉
+//            LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
+//            queryWrapper.eq(SysThirdAccount::getThirdUserUuid, appUserId);
+//            queryWrapper.or().eq(SysThirdAccount::getThirdUserId, appUserId);
+//            queryWrapper.eq(SysThirdAccount::getThirdType, THIRD_TYPE);
+//            SysThirdAccount thirdAccount = sysThirdAccountService.getOne(queryWrapper);
+//
+//            // 閫氳繃user_ticket鑾峰彇鐢ㄦ埛璇︾粏淇℃伅锛堝寘鍚墜鏈哄彿绛夋晱鎰熶俊鎭級
+//            JSONObject userDetail = this.getUserDetailByTicket(userTicket, accessToken);
+//            String mobile = userDetail.getString("mobile");
+//
+//            if (thirdAccount != null) {
+//                // 鏇存柊鎵嬫満鍙凤紙濡傛灉鏈夛級
+//                if (mobile != null && !mobile.isEmpty()) {
+//                    thirdAccount.setPhone(mobile);
+//                    sysThirdAccountService.updateById(thirdAccount);
+//                }
+//                return this.getSysUserByThird(thirdAccount, null, appUserId, accessToken);
+//            } else {
+//                // 鐩存帴鍒涘缓鏂拌处鍙凤紝鍖呭惈鎵嬫満鍙蜂俊鎭�
+//                User appUser = JwUserAPI.getUserByUserid(appUserId, accessToken);
+//                ThirdLoginModel tlm = new ThirdLoginModel(THIRD_TYPE, appUser.getUserid(), appUser.getName(), appUser.getAvatar(), mobile);
+//                thirdAccount = sysThirdAccountService.saveThirdUser(tlm);
+//                return this.getSysUserByThird(thirdAccount, appUser, null, null);
+//            }
+//        }
+//        return null;
+//    }
+//
+//    /**
+//     * 閫氳繃code鑾峰彇鐢ㄦ埛淇℃伅锛堝寘鍚玼ser_ticket锛�
+//     */
+//    private JSONObject getUserInfoByCode(String code, String accessToken) {
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo" +
+//                "?access_token=" + accessToken +
+//                "&code=" + code;
+//        try {
+//            String result = String.valueOf(RestUtil.get(url));
+//            return JSONObject.parseObject(result);
+//        } catch (Exception e) {
+//            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛淇℃伅寮傚父", e);
+//            return null;
+//        }
+//    }
+//
+//    /**
+//     * 閫氳繃user_ticket鑾峰彇鐢ㄦ埛璇︾粏淇℃伅锛堝寘鍚墜鏈哄彿绛夋晱鎰熶俊鎭級
+//     */
+//    private JSONObject getUserDetailByTicket(String userTicket, String accessToken) {
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail";
+//        JSONObject params = new JSONObject();
+//        params.put("user_ticket", userTicket);
+//
+//        try {
+//            String result = String.valueOf(RestUtil.post(url + "?access_token=" + accessToken, JSONObject.parseObject(params.toJSONString())));
+////            String result = String.valueOf(RestUtil.post(url + "?access_token=" + accessToken, params.toJSONString()));
+//            return JSONObject.parseObject(result);
+//        } catch (Exception e) {
+//            log.error("鑾峰彇浼佷笟寰俊鐢ㄦ埛璇︾粏淇℃伅寮傚父", e);
+//            return new JSONObject(); // 杩斿洖绌哄璞¢伩鍏峃PE
+//        }
+//    }
+
+    //閫傞厤鎵嬪姩鎺堟潈鐧诲綍锛岃幏鍙栫敤鎴锋墜鏈哄彿鐮佸苟瀛樺叆鎴栨洿鏂�
+    ///**
+    // * 鏍规嵁绗笁鏂硅处鍙疯幏鍙栨湰鍦拌处鍙凤紝濡傛灉涓嶅瓨鍦ㄥ氨鍒涘缓
+    // *
+    // * @param thirdAccount
+    // * @param appUser
+    // * @param appUserId
+    // * @param accessToken
+    // * @return
+    // */
+    //private SysUser getSysUserByThird(SysThirdAccount thirdAccount, User appUser, String appUserId, String accessToken) {
+    //    String sysUserId = thirdAccount.getSysUserId();
+    //    if (oConvertUtils.isNotEmpty(sysUserId)) {
+    //        SysUser sysUser = userMapper.selectById(sysUserId);
+    //        if (sysUser != null && StringUtils.isBlank(sysUser.getPhone())) {
+    //            //濡傛灉鏈夌敤鎴凤紝骞朵笖娌℃湁鐢佃瘽淇℃伅锛屾洿鏂拌繘鐢佃瘽鍙风爜
+    //            SysUser user = new SysUser()
+    //                    .setId(sysUser.getId())
+    //                    .setPhone(thirdAccount.getPhone());
+    //            userMapper.updateById(user);
+    //        }
+    //        return sysUser;
+    //    } else {
+    //        // 濡傛灉娌℃湁 sysUserId 锛岃鏄庢病鏈夌粦瀹氳处鍙凤紝鑾峰彇鍒版墜鏈哄彿涔嬪悗杩涜缁戝畾
+    //        if (appUser == null) {
+    //            appUser = JwUserAPI.getUserByUserid(appUserId, accessToken);
+    //        }
+    //        appUser.setMobile(thirdAccount.getPhone());
+    //        // 鍒ゆ柇绯荤粺閲屾槸鍚︽湁杩欎釜鐢ㄦ埛锛屾牴鎹伐鍙峰尮閰�
+    //        SysUser sysUser = userMapper.getUserByWorkNo(thirdAccount.getThirdUserId());
+    //        //SysUser sysUser = userMapper.getUserByPhone(appUser.getMobile());
+    //        if (sysUser != null) {
+    //            thirdAccount.setAvatar(appUser.getAvatar());
+    //            thirdAccount.setRealname(appUser.getName());
+    //            thirdAccount.setThirdUserId(appUser.getUserid());
+    //            thirdAccount.setThirdUserUuid(appUser.getUserid());
+    //            thirdAccount.setSysUserId(sysUser.getId());
+    //            sysThirdAccountService.updateById(thirdAccount);
+    //            if (StringUtils.isBlank(sysUser.getPhone())) {
+    //                //濡傛灉娌℃湁鎵嬫満鍙风爜锛屾洿鏂�
+    //                SysUser user = new SysUser()
+    //                        .setId(sysUser.getId())
+    //                        .setPhone(appUser.getMobile());
+    //                userMapper.updateById(user);
+    //            }
+    //            return sysUser;
+    //        } else {
+    //            // 娌℃湁灏辫蛋鍒涘缓閫昏緫
+    //            return sysThirdAccountService.createUser(appUser.getMobile(), appUser.getUserid());
+    //        }
+    //
+    //    }
+    //}
+
 }

--
Gitblit v1.9.3