|
|
|
@@ -21,16 +21,20 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import me.zhyd.oauth.model.AuthToken;
|
|
|
|
|
import me.zhyd.oauth.model.AuthUser;
|
|
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static com.schisandra.auth.common.utils.RandomNameUtils.verifyUserName;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 领域service实现了
|
|
|
|
|
*
|
|
|
|
@@ -104,6 +108,7 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean register(SchisandraAuthUserBO schisandraAuthUserBO) {
|
|
|
|
|
SchisandraAuthUser authUser = SchisandraAuthUserBOConverter.INSTANCE.convertBOToEntity(schisandraAuthUserBO);
|
|
|
|
|
authUser.setNickName(verifyUserName(4, 6));
|
|
|
|
|
Boolean insert = schisandraAuthUserService.insert(authUser);
|
|
|
|
|
if (insert) {
|
|
|
|
|
SchisandraAuthUserRoleBO schisandraAuthUserRoleBO = new SchisandraAuthUserRoleBO();
|
|
|
|
@@ -234,12 +239,12 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
* @date: 2024/6/27 下午2:58
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean wechatRegister(String appId, String openId,String clientId, HttpServletRequest httpServletRequest) {
|
|
|
|
|
SchisandraSocialUser socialUser = schisandraSocialUserService.selectByOpenId(appId,openId);
|
|
|
|
|
public Boolean wechatRegister(String appId, String openId, String clientId, HttpServletRequest httpServletRequest) {
|
|
|
|
|
SchisandraSocialUser socialUser = schisandraSocialUserService.selectByOpenId(appId, openId);
|
|
|
|
|
if (ObjectUtils.isNotEmpty(socialUser)) {
|
|
|
|
|
String SocialUserId = socialUser.getId();
|
|
|
|
|
SchisandraSocialUserAuth schisandraSocialUserAuth= schisandraSocialUserAuthService.queryBySocialUserId(SocialUserId);
|
|
|
|
|
if(ObjectUtils.isEmpty(schisandraSocialUserAuth)){
|
|
|
|
|
SchisandraSocialUserAuth schisandraSocialUserAuth = schisandraSocialUserAuthService.queryBySocialUserId(SocialUserId);
|
|
|
|
|
if (ObjectUtils.isEmpty(schisandraSocialUserAuth)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
String userId = schisandraSocialUserAuth.getUserId();
|
|
|
|
@@ -248,22 +253,22 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
String ip = IPUtil.getIp(httpServletRequest);
|
|
|
|
|
UserAgent userAgent = IPUtil.getUserAgent(httpServletRequest);
|
|
|
|
|
String ip2region = IPUtil.getIp2region(ip);
|
|
|
|
|
SchisandraAuthAddress authAddress= schisandraAuthAddressService.queryByUserId(userId);
|
|
|
|
|
SchisandraAuthAddress authAddress = schisandraAuthAddressService.queryByUserId(userId);
|
|
|
|
|
SchisandraAuthAddressBO schisandraAuthAddressBO = new SchisandraAuthAddressBO();
|
|
|
|
|
schisandraAuthAddressBO.setId(authAddress.getId());
|
|
|
|
|
schisandraAuthAddressBO.setAgent(userAgent.toString());
|
|
|
|
|
schisandraAuthAddressBO.setUserId(userId);
|
|
|
|
|
schisandraAuthAddressBO.setIp(ip);
|
|
|
|
|
if(userAgent.getBrowser() != null) {
|
|
|
|
|
if (userAgent.getBrowser() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowser(userAgent.getBrowser().toString());
|
|
|
|
|
}
|
|
|
|
|
if(userAgent.getBrowserVersion() != null){
|
|
|
|
|
if (userAgent.getBrowserVersion() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowserVersion(userAgent.getBrowserVersion().toString());
|
|
|
|
|
}
|
|
|
|
|
schisandraAuthAddressBO.setLocation(ip2region);
|
|
|
|
|
SchisandraAuthAddress schisandraAuthAddress = SchisandraAuthAddressBOConverter.INSTANCE.convertBOToEntity(schisandraAuthAddressBO);
|
|
|
|
|
int insert = schisandraAuthAddressService.update(schisandraAuthAddress);
|
|
|
|
|
assert insert>0;
|
|
|
|
|
assert insert > 0;
|
|
|
|
|
|
|
|
|
|
// redis存储用户角色与权限信息
|
|
|
|
|
userInfoPersistence(userId);
|
|
|
|
@@ -271,9 +276,9 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
|
|
|
|
|
String jsonString = JSONObject.toJSONString(tokenInfo);
|
|
|
|
|
String key = redisUtil.buildKey(WX_LOGIN_TOKEN, clientId);
|
|
|
|
|
redisUtil.setJsonNx(key, jsonString,5L, TimeUnit.MINUTES);
|
|
|
|
|
redisUtil.setJsonNx(key, jsonString, 5L, TimeUnit.MINUTES);
|
|
|
|
|
return true;
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
// 插入社会用户信息表
|
|
|
|
|
SchisandraSocialUserBO socialUserBO = new SchisandraSocialUserBO();
|
|
|
|
|
socialUserBO.setUuid(appId);
|
|
|
|
@@ -308,16 +313,16 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
schisandraAuthAddressBO.setAgent(userAgent.toString());
|
|
|
|
|
schisandraAuthAddressBO.setUserId(authUserId);
|
|
|
|
|
schisandraAuthAddressBO.setIp(ip);
|
|
|
|
|
if(userAgent.getBrowser() != null) {
|
|
|
|
|
if (userAgent.getBrowser() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowser(userAgent.getBrowser().toString());
|
|
|
|
|
}
|
|
|
|
|
if(userAgent.getBrowserVersion() != null){
|
|
|
|
|
if (userAgent.getBrowserVersion() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowserVersion(userAgent.getBrowserVersion().toString());
|
|
|
|
|
}
|
|
|
|
|
schisandraAuthAddressBO.setLocation(ip2region);
|
|
|
|
|
SchisandraAuthAddress schisandraAuthAddress = SchisandraAuthAddressBOConverter.INSTANCE.convertBOToEntity(schisandraAuthAddressBO);
|
|
|
|
|
int insertIp = schisandraAuthAddressService.insert(schisandraAuthAddress);
|
|
|
|
|
assert insertIp>0;
|
|
|
|
|
assert insertIp > 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 建立社会用户与用户信息映射
|
|
|
|
@@ -351,11 +356,20 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
|
|
|
|
|
String jsonString = JSONObject.toJSONString(tokenInfo);
|
|
|
|
|
String key = redisUtil.buildKey(WX_LOGIN_TOKEN, clientId);
|
|
|
|
|
redisUtil.setJsonNx(key, jsonString,5L, TimeUnit.MINUTES);
|
|
|
|
|
redisUtil.setJsonNx(key, jsonString, 5L, TimeUnit.MINUTES);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public SchisandraAuthUserBO checkUserName(String userName) {
|
|
|
|
|
if (StringUtils.isEmpty(userName)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
SchisandraAuthUser authUser = schisandraAuthUserService.checkUserName(userName);
|
|
|
|
|
SchisandraAuthUserBO schisandraAuthUserBO = SchisandraAuthUserBOConverter.INSTANCE.convertEntityToBO(authUser);
|
|
|
|
|
return schisandraAuthUserBO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@@ -373,8 +387,8 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
SchisandraSocialUser socialUser = schisandraSocialUserService.selectByUuidAndType(uuid, type);
|
|
|
|
|
if (ObjectUtils.isNotEmpty(socialUser)) {
|
|
|
|
|
|
|
|
|
|
SchisandraSocialUserAuth schisandraSocialUserAuth= schisandraSocialUserAuthService.queryBySocialUserId(socialUser.getId());
|
|
|
|
|
if(ObjectUtils.isEmpty(schisandraSocialUserAuth)){
|
|
|
|
|
SchisandraSocialUserAuth schisandraSocialUserAuth = schisandraSocialUserAuthService.queryBySocialUserId(socialUser.getId());
|
|
|
|
|
if (ObjectUtils.isEmpty(schisandraSocialUserAuth)) {
|
|
|
|
|
return Result.fail();
|
|
|
|
|
}
|
|
|
|
|
String userId = schisandraSocialUserAuth.getUserId();
|
|
|
|
@@ -407,22 +421,22 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
String ip = IPUtil.getIp(httpServletRequest);
|
|
|
|
|
UserAgent userAgent = IPUtil.getUserAgent(httpServletRequest);
|
|
|
|
|
String ip2region = IPUtil.getIp2region(ip);
|
|
|
|
|
SchisandraAuthAddress authAddress= schisandraAuthAddressService.queryByUserId(userId);
|
|
|
|
|
SchisandraAuthAddress authAddress = schisandraAuthAddressService.queryByUserId(userId);
|
|
|
|
|
SchisandraAuthAddressBO schisandraAuthAddressBO = new SchisandraAuthAddressBO();
|
|
|
|
|
schisandraAuthAddressBO.setId(authAddress.getId());
|
|
|
|
|
schisandraAuthAddressBO.setAgent(userAgent.toString());
|
|
|
|
|
schisandraAuthAddressBO.setUserId(userId);
|
|
|
|
|
schisandraAuthAddressBO.setIp(ip);
|
|
|
|
|
if(userAgent.getBrowser() != null) {
|
|
|
|
|
if (userAgent.getBrowser() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowser(userAgent.getBrowser().toString());
|
|
|
|
|
}
|
|
|
|
|
if(userAgent.getBrowserVersion() != null){
|
|
|
|
|
if (userAgent.getBrowserVersion() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowserVersion(userAgent.getBrowserVersion().toString());
|
|
|
|
|
}
|
|
|
|
|
schisandraAuthAddressBO.setLocation(ip2region);
|
|
|
|
|
SchisandraAuthAddress schisandraAuthAddress = SchisandraAuthAddressBOConverter.INSTANCE.convertBOToEntity(schisandraAuthAddressBO);
|
|
|
|
|
int insert = schisandraAuthAddressService.update(schisandraAuthAddress);
|
|
|
|
|
assert insert>0;
|
|
|
|
|
assert insert > 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// redis存储用户角色与权限信息
|
|
|
|
@@ -485,16 +499,16 @@ public class SchisandraAuthUserDomainServiceImpl implements SchisandraAuthUserDo
|
|
|
|
|
schisandraAuthAddressBO.setAgent(userAgent.toString());
|
|
|
|
|
schisandraAuthAddressBO.setUserId(authUserId);
|
|
|
|
|
schisandraAuthAddressBO.setIp(ip);
|
|
|
|
|
if(userAgent.getBrowser() != null) {
|
|
|
|
|
if (userAgent.getBrowser() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowser(userAgent.getBrowser().toString());
|
|
|
|
|
}
|
|
|
|
|
if(userAgent.getBrowserVersion() != null){
|
|
|
|
|
if (userAgent.getBrowserVersion() != null) {
|
|
|
|
|
schisandraAuthAddressBO.setBrowserVersion(userAgent.getBrowserVersion().toString());
|
|
|
|
|
}
|
|
|
|
|
schisandraAuthAddressBO.setLocation(ip2region);
|
|
|
|
|
SchisandraAuthAddress schisandraAuthAddress = SchisandraAuthAddressBOConverter.INSTANCE.convertBOToEntity(schisandraAuthAddressBO);
|
|
|
|
|
int insertIp = schisandraAuthAddressService.insert(schisandraAuthAddress);
|
|
|
|
|
assert insertIp>0;
|
|
|
|
|
assert insertIp > 0;
|
|
|
|
|
|
|
|
|
|
// 建立社会用户与用户信息映射
|
|
|
|
|
SchisandraSocialUserAuthBO socialUserAuthBO = new SchisandraSocialUserAuthBO();
|
|
|
|
|