From b0ec9895cde2519bc085ac40acbeea89ae8b6f9d Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期四, 17 七月 2025 16:44:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java | 94 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 84 insertions(+), 10 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 f98789b..f25dc67 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 @@ -390,7 +390,7 @@ return syncInfo; } // 鑾峰彇浼佷笟寰俊鎵�鏈夌殑鐢ㄦ埛 - List<User> qwUsersList = JwUserAPI.getDetailUsersByDepartid("1433010418", null, null, accessToken); + List<User> qwUsersList = JwUserAPI.getDetailUsersByDepartid("1", null, null, accessToken); if (qwUsersList == null) { syncInfo.addFailInfo("浼佷笟寰俊鐢ㄦ埛鍒楄〃鏌ヨ澶辫触锛�"); return syncInfo; @@ -405,7 +405,7 @@ * 2. 鏈湴琛ㄩ噷娌℃湁锛屽氨鍏堢敤鎵嬫満鍙峰垽鏂紝涓嶉�氳繃鍐嶇敤username鍒ゆ柇銆� */ SysThirdAccount sysThirdAccount = sysThirdAccountService.getOneByThirdUserId(qwUser.getUserid(), THIRD_TYPE); - List<SysUser> collect = sysUsersList.stream().filter(user -> qwUser.getUserid().equals(user.getUsername()) + List<SysUser> collect = sysUsersList.stream().filter(user -> qwUser.getUserid().equals(user.getWorkNo()) ).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(collect)) { @@ -643,7 +643,7 @@ sysUser.setDelFlag(0); sysUser.setStatus(1); // 閫氳繃 username 鏉ュ叧鑱� - sysUser.setUsername(user.getUserid()); + sysUser.setUsername(user.getUserid().substring(2)); // 瀵嗙爜榛樿涓� 鈥�123456鈥濓紝闅忔満鍔犵洂 String password = "123456", salt = oConvertUtils.randomGen(8); String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); @@ -689,7 +689,9 @@ sysUser.setStatus(qwUser.getEnable() == 1 ? 1 : 2); } // 搴ф満鍙� - sysUser.setTelephone(qwUser.getTelephone()); + if (StringUtils.isNotBlank(qwUser.getTelephone())) { + sysUser.setTelephone(qwUser.getTelephone()); + } // --- 浼佷笟寰俊娌℃湁閫昏緫鍒犻櫎鐨勫姛鑳� // sysUser.setDelFlag() @@ -1036,7 +1038,17 @@ if (accessToken == null) { return null; } - String appUserId = this.getUserIdByThirdCode(code, accessToken); + + // 閫氳繃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<>(); @@ -1044,18 +1056,63 @@ 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()); + 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 + } + } + /** * 鏍规嵁绗笁鏂硅处鍙疯幏鍙栨湰鍦拌处鍙凤紝濡傛灉涓嶅瓨鍦ㄥ氨鍒涘缓 @@ -1069,14 +1126,24 @@ private SysUser getSysUserByThird(SysThirdAccount thirdAccount, User appUser, String appUserId, String accessToken) { String sysUserId = thirdAccount.getSysUserId(); if (oConvertUtils.isNotEmpty(sysUserId)) { - return userMapper.selectById(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); } - // 鍒ゆ柇绯荤粺閲屾槸鍚︽湁杩欎釜鎵嬫満鍙风殑鐢ㄦ埛 - SysUser sysUser = userMapper.getUserByPhone(appUser.getMobile()); + 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()); @@ -1084,6 +1151,13 @@ 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 { // 娌℃湁灏辫蛋鍒涘缓閫昏緫 -- Gitblit v1.9.3