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 ++++++++++++++++++++----------
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java         |    2 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java                  |  151 +++++++++++++++++++++
 3 files changed, 291 insertions(+), 80 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
index ea29976..56e10d5 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
@@ -317,11 +317,11 @@
 			builder.append("&response_type=code");
 			// 搴旂敤鎺堟潈浣滅敤鍩熴��
 			// snsapi_base锛氶潤榛樻巿鏉冿紝鍙幏鍙栨垚鍛樼殑鐨勫熀纭�淇℃伅锛圲serId涓嶥eviceId锛夛紱
-			//builder.append("&scope=snsapi_base");
-			builder.append("&scope=snsapi_privateinfo"); // 鎵嬪姩鎺堟潈浣滅敤鍩�
+			builder.append("&scope=snsapi_base");//闈欓粯鎺堟潈
+			//builder.append("&scope=snsapi_privateinfo"); // 鎵嬪姩鎺堟潈浣滅敤鍩�
 			// 閲嶅畾鍚戝悗浼氬甫涓妔tate鍙傛暟锛岄暱搴︿笉鍙秴杩�128涓瓧鑺�
 			builder.append("&state=").append(state);
-			builder.append("&agentid=").append(config.getAgentId()); // 琛ュ厖AgentID
+			//builder.append("&agentid=").append(config.getAgentId()); // 琛ュ厖AgentID锛堟墜鍔ㄦ巿鏉冩椂闇�瑕侊級
 			// 缁堢浣跨敤姝ゅ弬鏁板垽鏂槸鍚﹂渶瑕佸甫涓婅韩浠戒俊鎭�
 			builder.append("#wechat_redirect");
 			url = builder.toString();
@@ -435,4 +435,149 @@
         }
     }
 
+	//浼佷笟寰俊閫傞厤鎵嬪姩鎺堟潈鎺ュ彛璋冩暣
+	///**
+	// * 浼佷笟寰俊/閽夐拤 OAuth2鐧诲綍鍥炶皟
+	// *
+	// * @param code
+	// * @param state
+	// * @param response
+	// * @return
+	// */
+	//@ResponseBody
+	//@GetMapping("/oauth2/{source}/callback")
+	//public String oauth2LoginCallback(
+	//		@PathVariable("source") String source,
+	//		// 浼佷笟寰俊杩斿洖鐨刢ode
+	//		@RequestParam(value = "code", required = false) String code,
+	//		// 閽夐拤杩斿洖鐨刢ode
+	//		@RequestParam(value = "authCode", required = false) String authCode,
+	//		@RequestParam("state") String state,
+	//		@RequestParam(value = "is_reject", required = false) String isReject,
+	//		HttpServletResponse response) {
+	//	SysUser loginUser;
+	//	if (ThirdAppConfig.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
+	//		log.info("銆愪紒涓氬井淇°�慜Auth2鐧诲綍杩涘叆callback锛歝ode=" + code + ", state=" + state);
+	//		// 1. 鍒ゅ畾鐢ㄦ埛鎷掔粷鎺堟潈鐨�3绉嶅満鏅細
+	//		//    - 鍦烘櫙1锛歩s_reject=true锛堜紒涓氬井淇℃槑纭爣璇嗘嫆缁濓級
+	//		//    - 鍦烘櫙2锛歝ode涓簄ull锛堟湭杩斿洖鏈夋晥鎺堟潈鍑瘉锛�
+	//		//    - 鍦烘櫙3锛歝ode瀛樺湪浣嗘棤鏁堬紙璋冪敤API澶辫触锛�
+	//		boolean isUserReject = "true".equals(isReject) || code == null;
+	//		if (isUserReject) {
+	//			log.info("鐢ㄦ埛鏄庣‘鎷掔粷浼佷笟寰俊鎺堟潈锛坕s_reject={}, code={}", isReject, code);
+	//			// 鏋勯�犲惈error=access_denied鐨勯噸瀹氬悜鍦板潃锛屽墠绔嵁姝よ瘑鍒�
+	//			String errorRedirect = buildErrorRedirect(state, "access_denied");
+	//			try {
+	//				response.sendRedirect(errorRedirect);
+	//				return "鐢ㄦ埛鎷掔粷鎺堟潈锛屽凡閲嶅畾鍚�";
+	//			} catch (IOException e) {
+	//				log.error("鎷掔粷鎺堟潈閲嶅畾鍚戝け璐�", e);
+	//				return "閲嶅畾鍚戝け璐�";
+	//			}
+	//		}
+	//
+	//		// 2. 灏濊瘯鐢╟ode鑾峰彇鐢ㄦ埛淇℃伅锛坈ode瀛樺湪浣嗗彲鑳芥棤鏁堬級
+	//		loginUser = thirdAppWechatEnterpriseService.oauth2Login(code);
+	//		if (loginUser == null) {
+	//			log.info("浼佷笟寰俊鎺堟潈澶辫触锛坈ode鏃犳晥锛�");
+	//			String errorRedirect = buildErrorRedirect(state, "invalid_code");
+	//			try {
+	//				response.sendRedirect(errorRedirect);
+	//				return "鎺堟潈澶辫触锛屽凡閲嶅畾鍚�";
+	//			} catch (IOException e) {
+	//				log.error("鎺堟潈澶辫触閲嶅畾鍚戝け璐�", e);
+	//				return "閲嶅畾鍚戝け璐�";
+	//			}
+	//		}
+	//		loginUser = thirdAppWechatEnterpriseService.oauth2Login(code);
+	//		if (loginUser == null) {
+	//			return "鐧诲綍澶辫触";
+	//		}
+	//	} else if (ThirdAppConfig.DINGTALK.equalsIgnoreCase(source)) {
+	//		log.info("銆愰拤閽夈�慜Auth2鐧诲綍杩涘叆callback锛歛uthCode=" + authCode + ", state=" + state);
+	//		loginUser = thirdAppDingtalkService.oauth2Login(authCode);
+	//		if (loginUser == null) {
+	//			return "鐧诲綍澶辫触";
+	//		}
+	//	} else {
+	//		return "涓嶆敮鎸佺殑source";
+	//	}
+	//	try {
+	//
+	//		//update-begin-author:taoyan date:2022-6-30 for: 宸ヤ綔娴佸彂閫佹秷鎭� 鐐瑰嚮娑堟伅閾炬帴璺宠浆鍔炵悊椤甸潰
+	//		String redirect = "";
+	//		if (state.indexOf("?") > 0) {
+	//			String[] arr = state.split("\\?");
+	//			state = arr[0];
+	//			if(arr.length>1){
+	//				redirect = arr[1];
+	//			}
+	//		}
+	//
+	//		String token = saveToken(loginUser);
+	//		// ============ 鏂板 Shiro 鐧诲綍閫昏緫 ============
+	//		JwtToken jwtToken = new JwtToken(token);
+	//		SecurityUtils.getSubject().login(jwtToken);
+	//		state += "/h5/oauth2-app/login?oauth2LoginToken=" + URLEncoder.encode(token, "UTF-8");
+	//		//update-begin---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍------------
+	//		state += "&thirdType=" + source;
+	//		//state += "&thirdType=" + "wechat_enterprise";
+	//		if (redirect != null && redirect.length() > 0) {
+	//			state += "&" + redirect;
+	//		}
+	//		//update-end-author:taoyan date:2022-6-30 for: 宸ヤ綔娴佸彂閫佹秷鎭� 鐐瑰嚮娑堟伅閾炬帴璺宠浆鍔炵悊椤甸潰
+	//
+	//		//update-end---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍------------
+	//		log.info("OAuth2鐧诲綍閲嶅畾鍚戝湴鍧�: " + state);
+	//		try {
+	//			response.sendRedirect(state);
+	//			return "ok";
+	//		} catch (IOException e) {
+	//			e.printStackTrace();
+	//			return "閲嶅畾鍚戝け璐�";
+	//		}
+	//	} catch (UnsupportedEncodingException e) {
+	//		e.printStackTrace();
+	//		return "瑙g爜澶辫触";
+	//	}
+	//}
+	//
+	///**
+	// * 鏋勯�犱紒涓氬井淇℃巿鏉冩嫆缁濇椂鐨勯敊璇噸瀹氬悜鍦板潃
+	// * 閫傞厤瑙勫垯锛歴tate鍙傛暟闀垮害鈮�128瀛楄妭锛屼繚鐣欏師濮嬩笟鍔″弬鏁帮紝闄勫姞error鏍囪瘑
+	// */
+	//private String buildErrorRedirect(String originalState, String errorCode) {
+	//	// 1. 鎷嗗垎鍘熷state涓殑鍩虹璺緞鍜屼笟鍔″弬鏁帮紙閬垮厤鐮村潖鍘熸湁state缁撴瀯锛�
+	//	String baseState = originalState;
+	//	String businessParams = "";
+	//	if (originalState.contains("?")) {
+	//		String[] stateParts = originalState.split("\\?", 2); // 鍙媶鍒嗘垚涓ら儴鍒�
+	//		baseState = stateParts[0]; // 鍩虹璺緞锛堝https://fastwoke.cn:8087锛�
+	//		businessParams = stateParts[1]; // 鍘熷涓氬姟鍙傛暟锛堝redirect=xxx锛�
+	//	}
+	//
+	//	// 2. 鏋勯�犻敊璇弬鏁帮紙error=xxx锛夛紝骞舵嫾鎺ュ師濮嬩笟鍔″弬鏁�
+	//	StringBuilder errorParams = new StringBuilder();
+	//	errorParams.append("error=").append(errorCode); // 鏍稿績閿欒鏍囪瘑
+	//	if (!businessParams.isEmpty()) {
+	//		errorParams.append("&").append(businessParams); // 闄勫姞鍘熷涓氬姟鍙傛暟
+	//	}
+	//
+	//	// 3. 鎷兼帴瀹屾暣鐨勯噸瀹氬悜鍦板潃锛堟牸寮忥細baseState/h5/oauth2-app/login?errorParams锛�
+	//	// 娉ㄦ剰锛氫紒涓氬井淇¤姹傞噸瀹氬悜鍦板潃闇�涓庢巿鏉冮摼鎺ヤ腑鐨剅edirect_uri鍩熷悕涓�鑷�
+	//	StringBuilder errorRedirect = new StringBuilder(baseState);
+	//	errorRedirect.append("/h5/oauth2-app/login?").append(errorParams);
+	//
+	//	// 4. 鏍¢獙state闀垮害锛堜紒涓氬井淇¢檺鍒垛墹128瀛楄妭锛夛紝瓒呴暱鏃舵埅鏂潪鍏抽敭鍙傛暟
+	//	String redirectUrl = errorRedirect.toString();
+	//	if (redirectUrl.getBytes().length > 128) {
+	//		log.warn("閿欒閲嶅畾鍚戝湴鍧�瓒呴暱锛屾埅鏂鐞�: {}", redirectUrl);
+	//		// 鍙繚鐣欏熀纭�璺緞鍜宔rror鍙傛暟锛岃垗寮冨叾浠栦笟鍔″弬鏁�
+	//		redirectUrl = baseState + "/h5/oauth2-app/login?error=" + errorCode;
+	//	}
+	//
+	//	log.info("浼佷笟寰俊鎷掔粷鎺堟潈閲嶅畾鍚戝湴鍧�: {}", redirectUrl);
+	//	return redirectUrl;
+	//}
+
 }
\ No newline at end of file
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java
index 8184fb8..e1d122c 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java
@@ -827,7 +827,7 @@
             return null;
         }
         int agentId = thirdAppConfig.getDingtalk().getAgentIdInt();
-        return JdtMessageAPI.recallMessage(String.valueOf(agentId), msgTaskId, getAccessToken());
+        return JdtMessageAPI.recallMessage(agentId, msgTaskId, getAccessToken());
     }
 
     /**
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