|
|
|
@ -88,16 +88,8 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
String username = authUser.getUsername(); |
|
|
|
|
authUser.setSource(loginBody.getSource()); |
|
|
|
|
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
|
|
|
|
SysUserVo user = loadUserByOpenid(loginBody.getSource()+openid); |
|
|
|
|
//未找到用户信息 注册
|
|
|
|
|
if (user == null && StringUtils.isEmpty(loginBody.getPhoneCode())) { |
|
|
|
|
LoginVo loginVo = new LoginVo(); |
|
|
|
|
loginVo.setBindingFlag(false); |
|
|
|
|
return loginVo; |
|
|
|
|
} |
|
|
|
|
else if(user == null && StringUtils.isNotEmpty(loginBody.getPhoneCode())){ |
|
|
|
|
if( StringUtils.isNotEmpty(loginBody.getPhoneCode())){ |
|
|
|
|
//注册用户
|
|
|
|
|
|
|
|
|
|
username = SocialUtils |
|
|
|
|
.loginXcxAuthPhone(loginBody.getSource(), loginBody.getPhoneCode(), socialProperties); |
|
|
|
|
authUser.setUsername(username); |
|
|
|
@ -106,7 +98,7 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
registerBody.setUsername(username); |
|
|
|
|
registerBody.setTenantId(loginBody.getTenantId()); |
|
|
|
|
SysUserVo sysUserVo = loadUserByUsername(username); |
|
|
|
|
user = new SysUserVo(); |
|
|
|
|
SysUserVo user = new SysUserVo(); |
|
|
|
|
if(sysUserVo == null){ |
|
|
|
|
//手机号注册账号
|
|
|
|
|
SysUserBo register = register(registerBody); |
|
|
|
@ -116,31 +108,30 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
} |
|
|
|
|
//注册 第三方
|
|
|
|
|
socialRegister(authUser, user.getUserId()); |
|
|
|
|
LoginVo loginVo = new LoginVo(); |
|
|
|
|
XcxLoginUser loginUser = loginService.buildLoginXcxUser(user); |
|
|
|
|
loginUser.setClientKey(client.getClientKey()); |
|
|
|
|
loginUser.setDeviceType(client.getDeviceType()); |
|
|
|
|
loginUser.setOpenid(openid); |
|
|
|
|
SaLoginModel model = new SaLoginModel(); |
|
|
|
|
model.setDevice(client.getDeviceType()); |
|
|
|
|
// 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
|
|
|
|
|
// 例如: 后台用户30分钟过期 app用户1天过期
|
|
|
|
|
model.setTimeout(client.getTimeout()); |
|
|
|
|
model.setActiveTimeout(client.getActiveTimeout()); |
|
|
|
|
model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId()); |
|
|
|
|
// 生成token
|
|
|
|
|
LoginHelper.login(loginUser, model); |
|
|
|
|
loginVo.setAccessToken(StpUtil.getTokenValue()); |
|
|
|
|
loginVo.setExpireIn(StpUtil.getTokenTimeout()); |
|
|
|
|
loginVo.setClientId(client.getClientId()); |
|
|
|
|
loginVo.setOpenid(openid); |
|
|
|
|
loginVo.setBindingFlag(true); |
|
|
|
|
return loginVo; |
|
|
|
|
}else{ |
|
|
|
|
throw new ServiceException("未获取到登录手机号"); |
|
|
|
|
} |
|
|
|
|
if(user == null){ |
|
|
|
|
user = new SysUserVo(); |
|
|
|
|
} |
|
|
|
|
LoginVo loginVo = new LoginVo(); |
|
|
|
|
|
|
|
|
|
XcxLoginUser loginUser = loginService.buildLoginXcxUser(user); |
|
|
|
|
loginUser.setClientKey(client.getClientKey()); |
|
|
|
|
loginUser.setDeviceType(client.getDeviceType()); |
|
|
|
|
loginUser.setOpenid(openid); |
|
|
|
|
SaLoginModel model = new SaLoginModel(); |
|
|
|
|
model.setDevice(client.getDeviceType()); |
|
|
|
|
// 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
|
|
|
|
|
// 例如: 后台用户30分钟过期 app用户1天过期
|
|
|
|
|
model.setTimeout(client.getTimeout()); |
|
|
|
|
model.setActiveTimeout(client.getActiveTimeout()); |
|
|
|
|
model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId()); |
|
|
|
|
// 生成token
|
|
|
|
|
LoginHelper.login(loginUser, model); |
|
|
|
|
loginVo.setAccessToken(StpUtil.getTokenValue()); |
|
|
|
|
loginVo.setExpireIn(StpUtil.getTokenTimeout()); |
|
|
|
|
loginVo.setClientId(client.getClientId()); |
|
|
|
|
loginVo.setOpenid(openid); |
|
|
|
|
loginVo.setBindingFlag(true); |
|
|
|
|
return loginVo; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
private SysUserVo loadUserByOpenid(String authId) { |
|
|
|
|
// 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户
|
|
|
|
@ -175,7 +166,6 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
String password = sysConfigService.selectConfigByKey("sys.user.initPassword"); |
|
|
|
|
// app用户
|
|
|
|
|
String userType = UserType.APP_USER.getUserType(); |
|
|
|
|
|
|
|
|
|
SysUserBo sysUser = new SysUserBo(); |
|
|
|
|
sysUser.setUserName(username); |
|
|
|
|
sysUser.setNickName("微信用户:"+ username.substring(7)); |
|
|
|
@ -194,8 +184,6 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
long postId = Long.parseLong(appPostId); |
|
|
|
|
sysUser.setPostIds(new Long[]{postId}); |
|
|
|
|
sysUserService.registerUser(sysUser, "000000"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success")); |
|
|
|
|
|
|
|
|
|
return sysUser; |
|
|
|
@ -214,14 +202,14 @@ public class XcxAuthStrategy implements IAuthStrategy {
|
|
|
|
|
bo.setUnionId(authUserData.getToken().getUnionId()); |
|
|
|
|
bo.setUserName(authUserData.getUsername()); |
|
|
|
|
bo.setNickName(authUserData.getNickname()); |
|
|
|
|
List<SysSocialVo> checkList = sysSocialService.selectByAuthId(authId); |
|
|
|
|
if (CollUtil.isNotEmpty(checkList)) { |
|
|
|
|
throw new ServiceException("此三方账号已经被绑定!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 查询是否已经绑定用户
|
|
|
|
|
SysSocialBo params = new SysSocialBo(); |
|
|
|
|
params.setUserId(userId); |
|
|
|
|
//params.setUserId(userId);
|
|
|
|
|
params.setUserName(authUserData.getUsername()); |
|
|
|
|
params.setOpenId(authUserData.getUuid()); |
|
|
|
|
params.setSource(bo.getSource()); |
|
|
|
|
bo.setStatus(0L); |
|
|
|
|
List<SysSocialVo> list = sysSocialService.queryList(params); |
|
|
|
|
if (CollUtil.isEmpty(list)) { |
|
|
|
|
// 没有绑定用户, 新增用户信息
|
|
|
|
|