From c34fc83655b146b40802e1fce22db37b7367c83d Mon Sep 17 00:00:00 2001
From: Houjie <714924425@qq.com>
Date: 星期一, 30 六月 2025 09:23:12 +0800
Subject: [PATCH] 企业微信登录

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java          |    2 
 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          |  611 +++++++++++++++++++++++++++---------------------------
 3 files changed, 309 insertions(+), 306 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 19fa754..4177e41 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
@@ -45,26 +45,26 @@
 @RequestMapping("/sys/thirdLogin")
 @Slf4j
 public class ThirdLoginController {
-	@Autowired
-	private ISysUserService sysUserService;
-	@Autowired
-	private ISysThirdAccountService sysThirdAccountService;
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private ISysThirdAccountService sysThirdAccountService;
 
-	@Autowired
-	private BaseCommonService baseCommonService;
-	@Autowired
+    @Autowired
+    private BaseCommonService baseCommonService;
+    @Autowired
     private RedisUtil redisUtil;
-	@Autowired
-	private AuthRequestFactory factory;
+    @Autowired
+    private AuthRequestFactory factory;
 
-	@Autowired
-	ThirdAppConfig thirdAppConfig;
-	@Autowired
-	private ThirdAppWechatEnterpriseServiceImpl thirdAppWechatEnterpriseService;
-	@Autowired
-	private ThirdAppDingtalkServiceImpl thirdAppDingtalkService;
+    @Autowired
+    ThirdAppConfig thirdAppConfig;
+    @Autowired
+    private ThirdAppWechatEnterpriseServiceImpl thirdAppWechatEnterpriseService;
+    @Autowired
+    private ThirdAppDingtalkServiceImpl thirdAppDingtalkService;
 
-	@RequestMapping("/render/{source}")
+    @RequestMapping("/render/{source}")
     public void render(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
         log.info("绗笁鏂圭櫥褰曡繘鍏ender锛�" + source);
         AuthRequest authRequest = factory.get(source);
@@ -73,279 +73,283 @@
         response.sendRedirect(authorizeUrl);
     }
 
-	@RequestMapping("/{source}/callback")
-    public String loginThird(@PathVariable("source") String source, AuthCallback callback,ModelMap modelMap) {
-		log.info("绗笁鏂圭櫥褰曡繘鍏allback锛�" + source + " params锛�" + JSONObject.toJSONString(callback));
+    @RequestMapping("/{source}/callback")
+    public String loginThird(@PathVariable("source") String source, AuthCallback callback, ModelMap modelMap) {
+        log.info("绗笁鏂圭櫥褰曡繘鍏allback锛�" + source + " params锛�" + JSONObject.toJSONString(callback));
         AuthRequest authRequest = factory.get(source);
         AuthResponse response = authRequest.login(callback);
         log.info(JSONObject.toJSONString(response));
         Result<JSONObject> result = new Result<JSONObject>();
-        if(response.getCode()==2000) {
+        if (response.getCode() == 2000) {
 
-        	JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(response.getData()));
-        	String username = data.getString("username");
-        	String avatar = data.getString("avatar");
-        	String uuid = data.getString("uuid");
-        	//鏋勯�犵涓夋柟鐧诲綍淇℃伅瀛樺偍瀵硅薄
-			ThirdLoginModel tlm = new ThirdLoginModel(source, uuid, username, avatar);
-        	//鍒ゆ柇鏈夋病鏈夎繖涓汉
-			//update-begin-author:wangshuai date:20201118 for:淇敼鎴愭煡璇㈢涓夋柟璐︽埛琛�
-        	LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<SysThirdAccount>();
-        	query.eq(SysThirdAccount::getThirdUserUuid, uuid);
-        	query.eq(SysThirdAccount::getThirdType, source);
-        	List<SysThirdAccount> thridList = sysThirdAccountService.list(query);
-			SysThirdAccount user = null;
-        	if(thridList==null || thridList.size()==0) {
-				//鍚﹀垯鐩存帴鍒涘缓鏂拌处鍙�
-				user = sysThirdAccountService.saveThirdUser(tlm);
-        	}else {
-        		//宸插瓨鍦� 鍙缃敤鎴峰悕 涓嶈缃ご鍍�
-        		user = thridList.get(0);
-        	}
-        	// 鐢熸垚token
-			//update-begin-author:wangshuai date:20201118 for:浠庣涓夋柟鐧诲綍鏌ヨ鏄惁瀛樺湪鐢ㄦ埛id锛屼笉瀛樺湪缁戝畾鎵嬫満鍙�
-			if(oConvertUtils.isNotEmpty(user.getSysUserId())) {
-				String sysUserId = user.getSysUserId();
-				SysUser sysUser = sysUserService.getById(sysUserId);
-				String token = saveToken(sysUser);
-    			modelMap.addAttribute("token", token);
-			}else{
-				modelMap.addAttribute("token", "缁戝畾鎵嬫満鍙�,"+""+uuid);
-			}
-			//update-end-author:wangshuai date:20201118 for:浠庣涓夋柟鐧诲綍鏌ヨ鏄惁瀛樺湪鐢ㄦ埛id锛屼笉瀛樺湪缁戝畾鎵嬫満鍙�
-		//update-begin--Author:wangshuai  Date:20200729 for锛氭帴鍙e湪绛惧悕鏍¢獙澶辫触鏃惰繑鍥炲け璐ョ殑鏍囪瘑鐮� issues#1441--------------------
-        }else{
-			modelMap.addAttribute("token", "鐧诲綍澶辫触");
-		}
-		//update-end--Author:wangshuai  Date:20200729 for锛氭帴鍙e湪绛惧悕鏍¢獙澶辫触鏃惰繑鍥炲け璐ョ殑鏍囪瘑鐮� issues#1441--------------------
+            JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(response.getData()));
+            String username = data.getString("username");
+            String avatar = data.getString("avatar");
+            String uuid = data.getString("uuid");
+            //鏋勯�犵涓夋柟鐧诲綍淇℃伅瀛樺偍瀵硅薄
+            ThirdLoginModel tlm = new ThirdLoginModel(source, uuid, username, avatar);
+            //鍒ゆ柇鏈夋病鏈夎繖涓汉
+            //update-begin-author:wangshuai date:20201118 for:淇敼鎴愭煡璇㈢涓夋柟璐︽埛琛�
+            LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<SysThirdAccount>();
+            query.eq(SysThirdAccount::getThirdUserUuid, uuid);
+            query.eq(SysThirdAccount::getThirdType, source);
+            List<SysThirdAccount> thridList = sysThirdAccountService.list(query);
+            SysThirdAccount user = null;
+            if (thridList == null || thridList.size() == 0) {
+                //鍚﹀垯鐩存帴鍒涘缓鏂拌处鍙�
+                user = sysThirdAccountService.saveThirdUser(tlm);
+            } else {
+                //宸插瓨鍦� 鍙缃敤鎴峰悕 涓嶈缃ご鍍�
+                user = thridList.get(0);
+            }
+            // 鐢熸垚token
+            //update-begin-author:wangshuai date:20201118 for:浠庣涓夋柟鐧诲綍鏌ヨ鏄惁瀛樺湪鐢ㄦ埛id锛屼笉瀛樺湪缁戝畾鎵嬫満鍙�
+            if (oConvertUtils.isNotEmpty(user.getSysUserId())) {
+                String sysUserId = user.getSysUserId();
+                SysUser sysUser = sysUserService.getById(sysUserId);
+                String token = saveToken(sysUser);
+                modelMap.addAttribute("token", token);
+            } else {
+                modelMap.addAttribute("token", "缁戝畾鎵嬫満鍙�," + "" + uuid);
+            }
+            //update-end-author:wangshuai date:20201118 for:浠庣涓夋柟鐧诲綍鏌ヨ鏄惁瀛樺湪鐢ㄦ埛id锛屼笉瀛樺湪缁戝畾鎵嬫満鍙�
+            //update-begin--Author:wangshuai  Date:20200729 for锛氭帴鍙e湪绛惧悕鏍¢獙澶辫触鏃惰繑鍥炲け璐ョ殑鏍囪瘑鐮� issues#1441--------------------
+        } else {
+            modelMap.addAttribute("token", "鐧诲綍澶辫触");
+        }
+        //update-end--Author:wangshuai  Date:20200729 for锛氭帴鍙e湪绛惧悕鏍¢獙澶辫触鏃惰繑鍥炲け璐ョ殑鏍囪瘑鐮� issues#1441--------------------
         result.setSuccess(false);
         result.setMessage("绗笁鏂圭櫥褰曞紓甯�,璇疯仈绯荤鐞嗗憳");
         return "thirdLogin";
     }
 
-	/**
-	 * 鍒涘缓鏂拌处鍙�
-	 * @param model
-	 * @return
-	 */
-	@PostMapping("/user/create")
-	@ResponseBody
-	public Result<String> thirdUserCreate(@RequestBody ThirdLoginModel model) {
-		log.info("绗笁鏂圭櫥褰曞垱寤烘柊璐﹀彿锛�" );
-		Result<String> res = new Result<>();
-		Object operateCode = redisUtil.get(CommonConstant.THIRD_LOGIN_CODE);
-		if(operateCode==null || !operateCode.toString().equals(model.getOperateCode())){
-			res.setSuccess(false);
-			res.setMessage("鏍¢獙澶辫触");
-			return res;
-		}
-		//鍒涘缓鏂拌处鍙�
-		//update-begin-author:wangshuai date:20201118 for:淇敼鎴愪粠绗笁鏂圭櫥褰曟煡鍑烘潵鐨剈ser_id锛屽湪鏌ヨ鐢ㄦ埛琛ㄥ敖琛宼oken
-		SysThirdAccount user = sysThirdAccountService.saveThirdUser(model);
-		if(oConvertUtils.isNotEmpty(user.getSysUserId())){
-			String sysUserId = user.getSysUserId();
-			SysUser sysUser = sysUserService.getById(sysUserId);
-			// 鐢熸垚token
-			String token = saveToken(sysUser);
-			//update-end-author:wangshuai date:20201118 for:淇敼鎴愪粠绗笁鏂圭櫥褰曟煡鍑烘潵鐨剈ser_id锛屽湪鏌ヨ鐢ㄦ埛琛ㄥ敖琛宼oken
-			res.setResult(token);
-			res.setSuccess(true);
-		}
-		return res;
-	}
+    /**
+     * 鍒涘缓鏂拌处鍙�
+     *
+     * @param model
+     * @return
+     */
+    @PostMapping("/user/create")
+    @ResponseBody
+    public Result<String> thirdUserCreate(@RequestBody ThirdLoginModel model) {
+        log.info("绗笁鏂圭櫥褰曞垱寤烘柊璐﹀彿锛�");
+        Result<String> res = new Result<>();
+        Object operateCode = redisUtil.get(CommonConstant.THIRD_LOGIN_CODE);
+        if (operateCode == null || !operateCode.toString().equals(model.getOperateCode())) {
+            res.setSuccess(false);
+            res.setMessage("鏍¢獙澶辫触");
+            return res;
+        }
+        //鍒涘缓鏂拌处鍙�
+        //update-begin-author:wangshuai date:20201118 for:淇敼鎴愪粠绗笁鏂圭櫥褰曟煡鍑烘潵鐨剈ser_id锛屽湪鏌ヨ鐢ㄦ埛琛ㄥ敖琛宼oken
+        SysThirdAccount user = sysThirdAccountService.saveThirdUser(model);
+        if (oConvertUtils.isNotEmpty(user.getSysUserId())) {
+            String sysUserId = user.getSysUserId();
+            SysUser sysUser = sysUserService.getById(sysUserId);
+            // 鐢熸垚token
+            String token = saveToken(sysUser);
+            //update-end-author:wangshuai date:20201118 for:淇敼鎴愪粠绗笁鏂圭櫥褰曟煡鍑烘潵鐨剈ser_id锛屽湪鏌ヨ鐢ㄦ埛琛ㄥ敖琛宼oken
+            res.setResult(token);
+            res.setSuccess(true);
+        }
+        return res;
+    }
 
-	/**
-	 * 缁戝畾璐﹀彿 闇�瑕佽缃瘑鐮� 闇�瑕佽蛋涓�閬嶆牎楠�
-	 * @param json
-	 * @return
-	 */
-	@PostMapping("/user/checkPassword")
-	@ResponseBody
-	public Result<String> checkPassword(@RequestBody JSONObject json) {
-		Result<String> result = new Result<>();
-		Object operateCode = redisUtil.get(CommonConstant.THIRD_LOGIN_CODE);
-		if(operateCode==null || !operateCode.toString().equals(json.getString("operateCode"))){
-			result.setSuccess(false);
-			result.setMessage("鏍¢獙澶辫触");
-			return result;
-		}
-		String username = json.getString("uuid");
-		SysUser user = this.sysUserService.getUserByName(username);
-		if(user==null){
-			result.setMessage("鐢ㄦ埛鏈壘鍒�");
-			result.setSuccess(false);
-			return result;
-		}
-		String password = json.getString("password");
-		String salt = user.getSalt();
-		String passwordEncode = PasswordUtil.encrypt(user.getUsername(), password, salt);
-		if(!passwordEncode.equals(user.getPassword())){
-			result.setMessage("瀵嗙爜涓嶆纭�");
-			result.setSuccess(false);
-			return result;
-		}
+    /**
+     * 缁戝畾璐﹀彿 闇�瑕佽缃瘑鐮� 闇�瑕佽蛋涓�閬嶆牎楠�
+     *
+     * @param json
+     * @return
+     */
+    @PostMapping("/user/checkPassword")
+    @ResponseBody
+    public Result<String> checkPassword(@RequestBody JSONObject json) {
+        Result<String> result = new Result<>();
+        Object operateCode = redisUtil.get(CommonConstant.THIRD_LOGIN_CODE);
+        if (operateCode == null || !operateCode.toString().equals(json.getString("operateCode"))) {
+            result.setSuccess(false);
+            result.setMessage("鏍¢獙澶辫触");
+            return result;
+        }
+        String username = json.getString("uuid");
+        SysUser user = this.sysUserService.getUserByName(username);
+        if (user == null) {
+            result.setMessage("鐢ㄦ埛鏈壘鍒�");
+            result.setSuccess(false);
+            return result;
+        }
+        String password = json.getString("password");
+        String salt = user.getSalt();
+        String passwordEncode = PasswordUtil.encrypt(user.getUsername(), password, salt);
+        if (!passwordEncode.equals(user.getPassword())) {
+            result.setMessage("瀵嗙爜涓嶆纭�");
+            result.setSuccess(false);
+            return result;
+        }
 
-		sysUserService.updateById(user);
-		result.setSuccess(true);
-		// 鐢熸垚token
-		String token = saveToken(user);
-		result.setResult(token);
-		return result;
-	}
+        sysUserService.updateById(user);
+        result.setSuccess(true);
+        // 鐢熸垚token
+        String token = saveToken(user);
+        result.setResult(token);
+        return result;
+    }
 
-	private String saveToken(SysUser user) {
-		// 鐢熸垚token
-		String token = JwtUtil.sign(user.getUsername(), user.getPassword());
-		redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
-		// 璁剧疆瓒呮椂鏃堕棿
-		redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000);
-		return token;
-	}
+    private String saveToken(SysUser user) {
+        // 鐢熸垚token
+        String token = JwtUtil.sign(user.getUsername(), user.getPassword());
+        redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
+        // 璁剧疆瓒呮椂鏃堕棿
+        redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000);
+        return token;
+    }
 
-	/**
-	 * 绗笁鏂圭櫥褰曞洖璋冩帴鍙�
-	 * @param token
-	 * @param thirdType
-	 * @return
-	 * @throws Exception
-	 */
-	@SuppressWarnings("unchecked")
-	@RequestMapping(value = "/getLoginUser/{token}/{thirdType}", method = RequestMethod.GET)
-	@ResponseBody
-	public Result<JSONObject> getThirdLoginUser(@PathVariable("token") String token,@PathVariable("thirdType") String thirdType) throws Exception {
-		Result<JSONObject> result = new Result<JSONObject>();
-		String username = JwtUtil.getUsername(token);
+    /**
+     * 绗笁鏂圭櫥褰曞洖璋冩帴鍙�
+     *
+     * @param token
+     * @param thirdType
+     * @return
+     * @throws Exception
+     */
+    @SuppressWarnings("unchecked")
+    @RequestMapping(value = "/getLoginUser/{token}/{thirdType}", method = RequestMethod.GET)
+    @ResponseBody
+    public Result<JSONObject> getThirdLoginUser(@PathVariable("token") String token, @PathVariable("thirdType") String thirdType) throws Exception {
+        Result<JSONObject> result = new Result<JSONObject>();
+        String username = JwtUtil.getUsername(token);
 
-		//1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥
-		SysUser sysUser = sysUserService.getUserByName(username);
-		result = sysUserService.checkUserIsEffective(sysUser);
-		if(!result.isSuccess()) {
-			return result;
-		}
-		//update-begin-author:wangshuai date:20201118 for:濡傛灉鐪熷疄濮撳悕鍜屽ご鍍忎笉瀛樺湪灏卞彇绗笁鏂圭櫥褰曠殑
-		LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
-		query.eq(SysThirdAccount::getSysUserId,sysUser.getId());
-		query.eq(SysThirdAccount::getThirdType,thirdType);
-		SysThirdAccount account = sysThirdAccountService.getOne(query);
-		if(oConvertUtils.isEmpty(sysUser.getRealname())){
-			sysUser.setRealname(account.getRealname());
-		}
-		if(oConvertUtils.isEmpty(sysUser.getAvatar())){
-			sysUser.setAvatar(account.getAvatar());
-		}
-		//update-end-author:wangshuai date:20201118 for:濡傛灉鐪熷疄濮撳悕鍜屽ご鍍忎笉瀛樺湪灏卞彇绗笁鏂圭櫥褰曠殑
-		JSONObject obj = new JSONObject();
-		//鐢ㄦ埛鐧诲綍淇℃伅
-		obj.put("userInfo", sysUser);
-		//token 淇℃伅
-		obj.put("token", token);
-		result.setResult(obj);
-		result.setSuccess(true);
-		result.setCode(200);
-		baseCommonService.addLog("鐢ㄦ埛鍚�: " + username + ",鐧诲綍鎴愬姛[绗笁鏂圭敤鎴穄锛�", CommonConstant.LOG_TYPE_1, null);
-		return result;
-	}
-	/**
-	 * 绗笁鏂圭粦瀹氭墜鏈哄彿杩斿洖token
-	 *
-	 * @param jsonObject
-	 * @return
-	 */
-	@ApiOperation("鎵嬫満鍙风櫥褰曟帴鍙�")
-	@PostMapping("/bindingThirdPhone")
-	@ResponseBody
-	public Result<String> bindingThirdPhone(@RequestBody JSONObject jsonObject) {
-		Result<String> result = new Result<String>();
-		String phone = jsonObject.getString("mobile");
-		String thirdUserUuid = jsonObject.getString("thirdUserUuid");
-		// 鏍¢獙楠岃瘉鐮�
-		String captcha = jsonObject.getString("captcha");
-		//update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906
-		String redisKey = CommonConstant.PHONE_REDIS_KEY_PRE+phone;
-		Object captchaCache = redisUtil.get(redisKey);
-		//update-end-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906
-		if (oConvertUtils.isEmpty(captcha) || !captcha.equals(captchaCache)) {
-			result.setMessage("楠岃瘉鐮侀敊璇�");
-			result.setSuccess(false);
-			return result;
-		}
-		//鏍¢獙鐢ㄦ埛鏈夋晥鎬�
-		SysUser sysUser = sysUserService.getUserByPhone(phone);
-		if(sysUser != null){
-			// 瀛樺湪鐢ㄦ埛锛岀洿鎺ョ粦瀹�
-			sysThirdAccountService.updateThirdUserId(sysUser,thirdUserUuid);
-		}else{
-			// 涓嶅瓨鍦ㄦ墜鏈哄彿锛屽垱寤虹敤鎴�
-			sysUser = sysThirdAccountService.createUser(phone,thirdUserUuid);
-		}
-		String token = saveToken(sysUser);
-		result.setSuccess(true);
-		result.setResult(token);
-		return result;
-	}
+        //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥
+        SysUser sysUser = sysUserService.getUserByName(username);
+        result = sysUserService.checkUserIsEffective(sysUser);
+        if (!result.isSuccess()) {
+            return result;
+        }
+        //update-begin-author:wangshuai date:20201118 for:濡傛灉鐪熷疄濮撳悕鍜屽ご鍍忎笉瀛樺湪灏卞彇绗笁鏂圭櫥褰曠殑
+        LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
+        query.eq(SysThirdAccount::getSysUserId, sysUser.getId());
+        query.eq(SysThirdAccount::getThirdType, thirdType);
+        SysThirdAccount account = sysThirdAccountService.getOne(query);
+        if (oConvertUtils.isEmpty(sysUser.getRealname())) {
+            sysUser.setRealname(account.getRealname());
+        }
+        if (oConvertUtils.isEmpty(sysUser.getAvatar())) {
+            sysUser.setAvatar(account.getAvatar());
+        }
+        //update-end-author:wangshuai date:20201118 for:濡傛灉鐪熷疄濮撳悕鍜屽ご鍍忎笉瀛樺湪灏卞彇绗笁鏂圭櫥褰曠殑
+        JSONObject obj = new JSONObject();
+        //鐢ㄦ埛鐧诲綍淇℃伅
+        obj.put("userInfo", sysUser);
+        //token 淇℃伅
+        obj.put("token", token);
+        result.setResult(obj);
+        result.setSuccess(true);
+        result.setCode(200);
+        baseCommonService.addLog("鐢ㄦ埛鍚�: " + username + ",鐧诲綍鎴愬姛[绗笁鏂圭敤鎴穄锛�", CommonConstant.LOG_TYPE_1, null);
+        return result;
+    }
 
-	/**
-	 * 浼佷笟寰俊/閽夐拤 OAuth2鐧诲綍
-	 *
-	 * @param source
-	 * @param state
-	 * @return
-	 */
-	@ResponseBody
-	@GetMapping("/oauth2/{source}/login")
-	public String oauth2LoginCallback(@PathVariable("source") String source, @RequestParam("state") String state, HttpServletResponse response) throws Exception {
-		String url;
-		if (ThirdAppConfig.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
-			ThirdAppTypeItemVo config = thirdAppConfig.getWechatEnterprise();
-			StringBuilder builder = new StringBuilder();
-			// 鏋勯�犱紒涓氬井淇Auth2鐧诲綍鎺堟潈鍦板潃
-			builder.append("https://open.weixin.qq.com/connect/oauth2/authorize");
-			// 浼佷笟鐨凜orpID
-			builder.append("?appid=").append(config.getClientId());
-			// 鎺堟潈鍚庨噸瀹氬悜鐨勫洖璋冮摼鎺ュ湴鍧�锛岃浣跨敤urlencode瀵归摼鎺ヨ繘琛屽鐞�
-			String redirectUri = RestUtil.getBaseUrl() + "/sys/thirdLogin/oauth2/wechat_enterprise/callback";
-			builder.append("&redirect_uri=").append(URLEncoder.encode(redirectUri, "UTF-8"));
-			// 杩斿洖绫诲瀷锛屾鏃跺浐瀹氫负锛歝ode
-			builder.append("&response_type=code");
-			// 搴旂敤鎺堟潈浣滅敤鍩熴��
-			// snsapi_base锛氶潤榛樻巿鏉冿紝鍙幏鍙栨垚鍛樼殑鐨勫熀纭�淇℃伅锛圲serId涓嶥eviceId锛夛紱
-			builder.append("&scope=snsapi_base");
-			// 閲嶅畾鍚戝悗浼氬甫涓妔tate鍙傛暟锛岄暱搴︿笉鍙秴杩�128涓瓧鑺�
-			builder.append("&state=").append(state);
-			// 缁堢浣跨敤姝ゅ弬鏁板垽鏂槸鍚﹂渶瑕佸甫涓婅韩浠戒俊鎭�
-			builder.append("#wechat_redirect");
-			url = builder.toString();
-		} else if (ThirdAppConfig.DINGTALK.equalsIgnoreCase(source)) {
-			ThirdAppTypeItemVo config = thirdAppConfig.getDingtalk();
-			StringBuilder builder = new StringBuilder();
-			// 鏋勯�犻拤閽塐Auth2鐧诲綍鎺堟潈鍦板潃
-			builder.append("https://login.dingtalk.com/oauth2/auth");
-			// 鎺堟潈閫氳繃/鎷掔粷鍚庡洖璋冨湴鍧�銆�
-			// 娉ㄦ剰 闇�瑕佷笌娉ㄥ唽搴旂敤鏃剁櫥璁扮殑鍩熷悕淇濇寔涓�鑷淬��
-			String redirectUri = RestUtil.getBaseUrl() + "/sys/thirdLogin/oauth2/dingtalk/callback";
-			builder.append("?redirect_uri=").append(URLEncoder.encode(redirectUri, "UTF-8"));
-			// 鍥哄畾鍊间负code銆�
-			// 鎺堟潈閫氳繃鍚庤繑鍥瀉uthCode銆�
-			builder.append("&response_type=code");
-			// 姝ラ涓�涓垱寤虹殑搴旂敤璇︽儏涓幏鍙栥��
-			// 浼佷笟鍐呴儴搴旂敤锛歝lient_id涓哄簲鐢ㄧ殑AppKey銆�
-			builder.append("&client_id=").append(config.getClientId());
-			// 鎺堟潈鑼冨洿锛屾巿鏉冮〉闈㈡樉绀虹殑鎺堟潈淇℃伅浠ュ簲鐢ㄦ敞鍐屾椂閰嶇疆鐨勪负鍑嗐��
-			// openid锛氭巿鏉冨悗鍙幏寰楃敤鎴穟serid
-			builder.append("&scope=openid");
-			// 璺熼殢authCode鍘熸牱杩斿洖銆�
-			builder.append("&state=").append(state);
+    /**
+     * 绗笁鏂圭粦瀹氭墜鏈哄彿杩斿洖token
+     *
+     * @param jsonObject
+     * @return
+     */
+    @ApiOperation("鎵嬫満鍙风櫥褰曟帴鍙�")
+    @PostMapping("/bindingThirdPhone")
+    @ResponseBody
+    public Result<String> bindingThirdPhone(@RequestBody JSONObject jsonObject) {
+        Result<String> result = new Result<String>();
+        String phone = jsonObject.getString("mobile");
+        String thirdUserUuid = jsonObject.getString("thirdUserUuid");
+        // 鏍¢獙楠岃瘉鐮�
+        String captcha = jsonObject.getString("captcha");
+        //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906
+        String redisKey = CommonConstant.PHONE_REDIS_KEY_PRE + phone;
+        Object captchaCache = redisUtil.get(redisKey);
+        //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906
+        if (oConvertUtils.isEmpty(captcha) || !captcha.equals(captchaCache)) {
+            result.setMessage("楠岃瘉鐮侀敊璇�");
+            result.setSuccess(false);
+            return result;
+        }
+        //鏍¢獙鐢ㄦ埛鏈夋晥鎬�
+        SysUser sysUser = sysUserService.getUserByPhone(phone);
+        if (sysUser != null) {
+            // 瀛樺湪鐢ㄦ埛锛岀洿鎺ョ粦瀹�
+            sysThirdAccountService.updateThirdUserId(sysUser, thirdUserUuid);
+        } else {
+            // 涓嶅瓨鍦ㄦ墜鏈哄彿锛屽垱寤虹敤鎴�
+            sysUser = sysThirdAccountService.createUser(phone, thirdUserUuid);
+        }
+        String token = saveToken(sysUser);
+        result.setSuccess(true);
+        result.setResult(token);
+        return result;
+    }
+
+    /**
+     * 浼佷笟寰俊/閽夐拤 OAuth2鐧诲綍
+     *
+     * @param source
+     * @param state
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("/oauth2/{source}/login")
+    public String oauth2LoginCallback(@PathVariable("source") String source, @RequestParam("state") String state, HttpServletResponse response) throws Exception {
+        String url;
+        if (ThirdAppConfig.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
+            ThirdAppTypeItemVo config = thirdAppConfig.getWechatEnterprise();
+            StringBuilder builder = new StringBuilder();
+            // 鏋勯�犱紒涓氬井淇Auth2鐧诲綍鎺堟潈鍦板潃
+            builder.append("https://open.weixin.qq.com/connect/oauth2/authorize");
+            // 浼佷笟鐨凜orpID
+            builder.append("?appid=").append(config.getClientId());
+            // 鎺堟潈鍚庨噸瀹氬悜鐨勫洖璋冮摼鎺ュ湴鍧�锛岃浣跨敤urlencode瀵归摼鎺ヨ繘琛屽鐞�
+            String redirectUri = RestUtil.getBaseUrl() + "/sys/thirdLogin/oauth2/wechat_enterprise/callback";
+            builder.append("&redirect_uri=").append(URLEncoder.encode(redirectUri, "UTF-8"));
+            // 杩斿洖绫诲瀷锛屾鏃跺浐瀹氫负锛歝ode
+            builder.append("&response_type=code");
+            // 搴旂敤鎺堟潈浣滅敤鍩熴��
+            // snsapi_base锛氶潤榛樻巿鏉冿紝鍙幏鍙栨垚鍛樼殑鐨勫熀纭�淇℃伅锛圲serId涓嶥eviceId锛夛紱
+            builder.append("&scope=snsapi_base");
+            // 閲嶅畾鍚戝悗浼氬甫涓妔tate鍙傛暟锛岄暱搴︿笉鍙秴杩�128涓瓧鑺�
+            builder.append("&state=").append(state);
+            // 缁堢浣跨敤姝ゅ弬鏁板垽鏂槸鍚﹂渶瑕佸甫涓婅韩浠戒俊鎭�
+            builder.append("#wechat_redirect");
+            url = builder.toString();
+        } else if (ThirdAppConfig.DINGTALK.equalsIgnoreCase(source)) {
+            ThirdAppTypeItemVo config = thirdAppConfig.getDingtalk();
+            StringBuilder builder = new StringBuilder();
+            // 鏋勯�犻拤閽塐Auth2鐧诲綍鎺堟潈鍦板潃
+            builder.append("https://login.dingtalk.com/oauth2/auth");
+            // 鎺堟潈閫氳繃/鎷掔粷鍚庡洖璋冨湴鍧�銆�
+            // 娉ㄦ剰 闇�瑕佷笌娉ㄥ唽搴旂敤鏃剁櫥璁扮殑鍩熷悕淇濇寔涓�鑷淬��
+            String redirectUri ="http://houjie.xalxzn.com:8866/jeecg-boot/sys/thirdLogin/oauth2/dingtalk/callback";
+            builder.append("?redirect_uri=").append(URLEncoder.encode(redirectUri, "UTF-8"));
+            // 鍥哄畾鍊间负code銆�
+            // 鎺堟潈閫氳繃鍚庤繑鍥瀉uthCode銆�
+            builder.append("&response_type=code");
+            // 姝ラ涓�涓垱寤虹殑搴旂敤璇︽儏涓幏鍙栥��
+            // 浼佷笟鍐呴儴搴旂敤锛歝lient_id涓哄簲鐢ㄧ殑AppKey銆�
+            builder.append("&client_id=").append(config.getClientId());
+            // 鎺堟潈鑼冨洿锛屾巿鏉冮〉闈㈡樉绀虹殑鎺堟潈淇℃伅浠ュ簲鐢ㄦ敞鍐屾椂閰嶇疆鐨勪负鍑嗐��
+            // openid锛氭巿鏉冨悗鍙幏寰楃敤鎴穟serid
+            builder.append("&scope=openid");
+            // 璺熼殢authCode鍘熸牱杩斿洖銆�
+            builder.append("&state=").append(state);
             //update-begin---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍------------
             builder.append("&prompt=").append("consent");
             //update-end---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍--------------
             url = builder.toString();
-		} else {
-			return "涓嶆敮鎸佺殑source";
-		}
-		log.info("oauth2 login url:" + url);
-		response.sendRedirect(url);
-		return "login鈥�";
-	}
+        } else {
+            return "涓嶆敮鎸佺殑source";
+        }
+        log.info("oauth2 login url:" + url);
+        response.sendRedirect(url);
+     return  "login..";
+    }
 
     /**
      * 浼佷笟寰俊/閽夐拤 OAuth2鐧诲綍鍥炶皟
@@ -355,16 +359,16 @@
      * @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,
-			HttpServletResponse response) {
+    @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,
+            HttpServletResponse response) {
         SysUser loginUser;
         if (ThirdAppConfig.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
             log.info("銆愪紒涓氬井淇°�慜Auth2鐧诲綍杩涘叆callback锛歝ode=" + code + ", state=" + state);
@@ -373,38 +377,37 @@
                 return "鐧诲綍澶辫触";
             }
         } else if (ThirdAppConfig.DINGTALK.equalsIgnoreCase(source)) {
-			log.info("銆愰拤閽夈�慜Auth2鐧诲綍杩涘叆callback锛歛uthCode=" + authCode + ", state=" + state);
-			loginUser = thirdAppDingtalkService.oauth2Login(authCode);
-			if (loginUser == null) {
-				return "鐧诲綍澶辫触";
-			}
+            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);
-			state += "/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=" + redirect;
-			}
-			//update-end-author:taoyan date:2022-6-30 for: 宸ヤ綔娴佸彂閫佹秷鎭� 鐐瑰嚮娑堟伅閾炬帴璺宠浆鍔炵悊椤甸潰
+            //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);
+            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);
+            log.info("OAuth2鐧诲綍閲嶅畾鍚戝湴鍧�: " + state);
             try {
                 response.sendRedirect(state);
                 return "ok";
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java
index c9f52a2..85bee7b 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java
@@ -62,7 +62,7 @@
 	}
 
 	@Override
-	@Cacheable(value = CacheConstant.SYS_ENABLE_DICT_CACHE,key = "#code", unless = "#result == null ")
+//	@Cacheable(value = CacheConstant.SYS_ENABLE_DICT_CACHE,key = "#code", unless = "#result == null ")
 	public List<DictModel> queryEnableDictItemsByCode(String code) {
 		log.debug("鏃犵紦瀛榙ictCache鐨勬椂鍊欒皟鐢ㄨ繖閲岋紒");
 		return sysDictMapper.queryEnableDictItemsByCode(code);
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 e1d122c..8184fb8 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(agentId, msgTaskId, getAccessToken());
+        return JdtMessageAPI.recallMessage(String.valueOf(agentId), msgTaskId, getAccessToken());
     }
 
     /**

--
Gitblit v1.9.3