Browse Source

feat: 企业微信扫码登录

muti_db
Yen 5 months ago
parent
commit
acb12d46f0
  1. 6
      src/main/java/com/qs/serve/modules/wx/entity/dto/WxLoginUser.java
  2. 41
      src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

6
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;
}

41
src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

@ -187,9 +187,10 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> 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<WxUserMapper, WxUser> 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<WxUserMapper, WxUser> impleme
wxUser.setEmpName(wxCpUser.getName());
wxUser.setUnionId(userId);
wxUser.setOpenId(userId);
wxUser.setHeadimgUrl(wxCpUserDetail.getAvatar());
//wxUser.setHeadimgUrl(wxCpUserDetail.getAvatar());
}
//通过手机号绑定员工号
//if(StringUtils.hasText(wxCpUser.getMobile())){

Loading…
Cancel
Save