From acb12d46f0796e58f35c81ba9fe4342be59eebec Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 3 Mar 2025 15:16:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/wx/entity/dto/WxLoginUser.java | 6 +++ .../wx/service/impl/WxUserServiceImpl.java | 41 ++++++++++++++----- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/wx/entity/dto/WxLoginUser.java b/src/main/java/com/qs/serve/modules/wx/entity/dto/WxLoginUser.java index 761a4026..8cdc7a53 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/dto/WxLoginUser.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/dto/WxLoginUser.java @@ -14,4 +14,10 @@ public class WxLoginUser { @NotNull private String code; + /** + * 默认空或0,默认页面授权 + * 1,页面扫码登录 + */ + private Integer codeType; + } diff --git a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java index d4714f2f..2ec09e01 100644 --- a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java @@ -187,9 +187,10 @@ public class WxUserServiceImpl extends ServiceImpl impleme WxCpDefaultConfigImpl config =new WxCpDefaultConfigImpl(); config.setAgentId(agentId); config.setCorpSecret(WxCpConfig.getSecret(agentId)); + config.setOauth2redirectUri(""); config.setCorpId(wxApp.getId()); wxCpService.setWxCpConfigStorage(config); - + log.debug("企业微信登录:appid:{} agId:{} code:{}",appId,agentId,code); // 授权方式登录 WxCpOAuth2Service oauth2Service = wxCpService.getOauth2Service(); WxCpOauth2UserInfo cpOauth2UserInfo = null; @@ -197,20 +198,40 @@ public class WxUserServiceImpl extends ServiceImpl impleme // 获取敏感信息 WxCpUserDetail wxCpUserDetail = null; WxCpUser wxCpUser = null; + String userId = null; try { cpOauth2UserInfo = oauth2Service.getUserInfo(agentId,code); - // 基础用户信息 - WxCpUserService wxCpUserService = wxCpService.getUserService(); - wxCpUser = wxCpUserService.getById(cpOauth2UserInfo.getUserId()); - // 获取敏感信息 - wxCpUserDetail = oauth2Service.getUserDetail(cpOauth2UserInfo.getUserTicket()); + log.debug("cpOauth2UserInfo=>{}", JsonUtil.objectToJson(cpOauth2UserInfo)); + if(wxLoginUser.getCodeType()!=null && wxLoginUser.getCodeType().equals(1)){ + // web扫码登录方式 + userId = cpOauth2UserInfo.getUserId(); + WxCpUserService cpUserService = wxCpService.getUserService(); + if(cpUserService==null){ + Assert.throwEx("cpUserService is null"); + } + wxCpUser = cpUserService.getById(userId); + if(wxCpUser==null){ + Assert.throwEx("wxCpUser is null"); + } + }else { + // 默认授权方式 + // 基础用户信息 + WxCpUserService wxCpUserService = wxCpService.getUserService(); + wxCpUser = wxCpUserService.getById(cpOauth2UserInfo.getUserId()); + // 获取敏感信息 + wxCpUserDetail = oauth2Service.getUserDetail(cpOauth2UserInfo.getUserTicket()); + if(wxCpUser==null){ + Assert.throwEx("企业微信登录失败 002 :wxCpUser is null"); + } + userId = wxCpUserDetail.getUserId(); + } } catch (WxErrorException e) { log.error("企业微信登录失败:{}",e.getMessage()); } - if(wxCpUserDetail==null||wxCpUser==null){ - Assert.throwEx("企业微信登录失败"); + if (userId==null){ + Assert.throwEx("企业微信登录失败 001 :userId is null"); } - String userId = wxCpUserDetail.getUserId(); + wxUser = this.getByOpenId(appId,userId); if(wxUser == null){ wxUser = new WxUser(); @@ -220,7 +241,7 @@ public class WxUserServiceImpl extends ServiceImpl impleme wxUser.setEmpName(wxCpUser.getName()); wxUser.setUnionId(userId); wxUser.setOpenId(userId); - wxUser.setHeadimgUrl(wxCpUserDetail.getAvatar()); + //wxUser.setHeadimgUrl(wxCpUserDetail.getAvatar()); } //通过手机号绑定员工号 //if(StringUtils.hasText(wxCpUser.getMobile())){