|
|
@ -12,9 +12,12 @@ import com.qs.serve.common.model.enums.HttpCode; |
|
|
|
import com.qs.serve.common.util.*; |
|
|
|
import com.qs.serve.modules.sys.entity.SysUser; |
|
|
|
import com.qs.serve.modules.sys.mapper.SysUserMapper; |
|
|
|
import com.qs.serve.modules.ums.entity.UmsMember; |
|
|
|
import com.qs.serve.modules.ums.mapper.UmsMemberMapper; |
|
|
|
import com.qs.serve.modules.wx.common.conf.WxCpConfig; |
|
|
|
import com.qs.serve.modules.wx.common.conf.WxMpConfig; |
|
|
|
import com.qs.serve.modules.wx.common.consts.WxStatusConst; |
|
|
|
import com.qs.serve.modules.wx.common.consts.WxUserTypeConst; |
|
|
|
import com.qs.serve.modules.wx.entity.WxApp; |
|
|
|
import com.qs.serve.modules.wx.entity.WxUser; |
|
|
|
import com.qs.serve.modules.wx.entity.dto.WxLoginUser; |
|
|
@ -71,6 +74,8 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private SysUserMapper sysUserMapper; |
|
|
|
@Autowired |
|
|
|
private UmsMemberMapper umsMemberMapper; |
|
|
|
|
|
|
|
private List<String> getOpenIds(WxMpUserService wxMpUserService,String nextOpenId){ |
|
|
|
WxMpUserList wxMpUserList = null; |
|
|
@ -147,14 +152,16 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
@Override |
|
|
|
public List<WxUser> getBySysUserId(String userId) { |
|
|
|
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(WxUser::getSysUserId,userId); |
|
|
|
lqw.eq(WxUser::getUserId,userId); |
|
|
|
lqw.eq(WxUser::getUserType, WxUserTypeConst.SYS_USER); |
|
|
|
return this.list(lqw); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public WxUser getByCurrSysUserId(String userId) { |
|
|
|
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.eq(WxUser::getSysUserId,userId); |
|
|
|
lqw.eq(WxUser::getUserId,userId); |
|
|
|
lqw.eq(WxUser::getUserType, WxUserTypeConst.SYS_USER); |
|
|
|
lqw.eq(WxUser::getAppId,AuthContextUtils.getAppId(false)); |
|
|
|
return this.getOne(lqw,false); |
|
|
|
} |
|
|
@ -162,7 +169,8 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
@Override |
|
|
|
public List<WxUser> getBySysUserIds(List<String> userIds) { |
|
|
|
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>(); |
|
|
|
lqw.in(WxUser::getSysUserId,userIds); |
|
|
|
lqw.eq(WxUser::getUserType, WxUserTypeConst.SYS_USER); |
|
|
|
lqw.in(WxUser::getUserId,userIds); |
|
|
|
return this.list(lqw); |
|
|
|
} |
|
|
|
|
|
|
@ -170,6 +178,7 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
public WxUser login(WxLoginUser wxLoginUser, HttpServletRequest request){ |
|
|
|
String code = wxLoginUser.getCode(); |
|
|
|
String appId = AuthContextUtils.getAppId(); |
|
|
|
String userType = wxLoginUser.getUserType(); |
|
|
|
String agentIdStr = request.getHeader("agentId"); |
|
|
|
WxApp wxApp = wxAppService.getById(appId); |
|
|
|
WxUser wxUser = null; |
|
|
@ -201,11 +210,13 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
if(wxCpUserDetail==null||wxCpUser==null){ |
|
|
|
Assert.throwEx("企业微信登录失败"); |
|
|
|
} |
|
|
|
//嘉士利默认userId是员工号
|
|
|
|
String userId = wxCpUserDetail.getUserId(); |
|
|
|
wxUser = this.getByOpenId(appId,userId); |
|
|
|
wxUser = this.getByOpenId(appId,userId,userType); |
|
|
|
if(wxUser == null){ |
|
|
|
wxUser = new WxUser(); |
|
|
|
wxUser.setAppId(wxApp.getId()); |
|
|
|
wxUser.setUserType(userType); |
|
|
|
wxUser.setAppType(wxApp.getAppType()); |
|
|
|
wxUser.setNickName(wxCpUser.getName()); |
|
|
|
wxUser.setEmpName(wxCpUser.getName()); |
|
|
@ -213,25 +224,29 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
wxUser.setOpenId(userId); |
|
|
|
wxUser.setHeadimgUrl(wxCpUserDetail.getAvatar()); |
|
|
|
} |
|
|
|
if(userType.equals(WxUserTypeConst.SYS_USER)){ |
|
|
|
//通过手机号绑定员工号
|
|
|
|
//if(StringUtils.hasText(wxCpUser.getMobile())){
|
|
|
|
//List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
|
|
|
// .eq(SysUser::getMobile,wxCpUser.getMobile()));
|
|
|
|
List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getCode,userId)); |
|
|
|
if(sysUsers.size()>0){ |
|
|
|
if(sysUsers.size()>1){ |
|
|
|
//log.error("企业微信登录,一个号码被多人使用:{}",wxCpUser.getMobile());
|
|
|
|
log.error("企业微信登录,员工号出现重复:{}",userId); |
|
|
|
} |
|
|
|
SysUser sysUser = sysUsers.get(0); |
|
|
|
wxUser.setSysUserId(sysUser.getId()); |
|
|
|
wxUser.setSysUserCode(sysUser.getCode()); |
|
|
|
wxUser.setUserId(sysUser.getId()); |
|
|
|
wxUser.setUserCode(sysUser.getCode()); |
|
|
|
wxUser.setEmpName(sysUser.getName()); |
|
|
|
wxUser.setPhone(sysUser.getMobile()); |
|
|
|
}else { |
|
|
|
//Assert.throwEx("CMS未收录该手机号["+wxCpUser.getMobile()+"]");
|
|
|
|
Assert.throwEx("CMS未收录该员工号["+userId+"]"); |
|
|
|
} |
|
|
|
}else if (userType.equals(WxUserTypeConst.UMS_MEMBER)){ |
|
|
|
if(wxUser.getId()==null){ |
|
|
|
//生成member
|
|
|
|
UmsMember member = new UmsMember(); |
|
|
|
umsMemberMapper.insert(member); |
|
|
|
wxUser.setUserId(member.getId().toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
if(wxUser.getId()==null){ |
|
|
|
save(wxUser); |
|
|
|
}else { |
|
|
@ -247,7 +262,7 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
log.debug("auth2AccessToken:{}",auth2AccessToken.getAccessToken()); |
|
|
|
WxOAuth2UserInfo auth2UserInfo = auth2Service.getUserInfo(auth2AccessToken, GySysConst.LANG_ZH_CN); |
|
|
|
WxMpUser wxMpUser = wxMpService.getUserService().userInfo(auth2UserInfo.getOpenid(), GySysConst.LANG_ZH_CN); |
|
|
|
wxUser = this.getByOpenId(appId,auth2UserInfo.getOpenid()); |
|
|
|
wxUser = this.getByOpenId(appId,auth2UserInfo.getOpenid(),userType); |
|
|
|
if(wxUser == null){ |
|
|
|
wxUser = new WxUser(); |
|
|
|
wxUser.setAppId(wxApp.getId()); |
|
|
@ -291,10 +306,11 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public WxUser getByOpenId(String appId, String openId) { |
|
|
|
public WxUser getByOpenId(String appId, String openId,String userType) { |
|
|
|
LambdaQueryWrapper<WxUser> wxUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
wxUserLambdaQueryWrapper.eq(WxUser::getOpenId,openId); |
|
|
|
wxUserLambdaQueryWrapper.eq(WxUser::getAppId,appId); |
|
|
|
wxUserLambdaQueryWrapper.eq(WxUser::getUserType,userType); |
|
|
|
return getOne(wxUserLambdaQueryWrapper,false); |
|
|
|
} |
|
|
|
} |
|
|
|