feat: update

This commit is contained in:
landaiqing
2024-07-23 15:22:47 +08:00
parent 4e92d262f6
commit b7d265fb12
6 changed files with 98 additions and 24 deletions

View File

@@ -455,4 +455,14 @@ public class SchisandraAuthUserController {
return Result.ok(); return Result.ok();
} }
@PostMapping("checkUserName")
public Result checkUserName(@RequestParam("userName") String userName) {
SchisandraAuthUserBO schisandraAuthUserBO = schisandraAuthUserDomainService.checkUserName(userName);
if (ObjectUtils.isEmpty(schisandraAuthUserBO)) {
return Result.ok();
}
return Result.fail("用户名已存在!");
}
} }

View File

@@ -0,0 +1,42 @@
package com.schisandra.auth.common.utils;
import java.util.Random;
/**
* @Classname RandomNameUtils
* @BelongsProject: schisandra-cloud-storage
* @BelongsPackage: com.schisandra.auth.common.utils
* @Author: landaiqing
* @CreateTime: 2024-07-23 14:59
* @Description: TODO
* @Version: 1.0
*/
public class RandomNameUtils {
/**
* 随机获取英文+数字(用户名)
*
* @param engCode 小写英文的数量
* @param numCode 数字的数量
* @return
*/
public static String verifyUserName(int engCode, int numCode) {
//声明一个StringBuffer存储随机数
StringBuffer sb = new StringBuffer();
char[] englishCodeArray = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
char[] numCodeArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
Random random = new Random();
//获取英文
for (int i = 0; i < engCode; i++) {
char num = englishCodeArray[random.nextInt(englishCodeArray.length)];
sb.append(num);
}
//获取数字
for (int i = 0; i < numCode; i++) {
char num = numCodeArray[random.nextInt(numCodeArray.length)];
sb.append(num);
}
return sb.toString();
}
}

View File

@@ -110,5 +110,7 @@ public interface SchisandraAuthUserDomainService {
SchisandraAuthUser queryByPhone(String phone); SchisandraAuthUser queryByPhone(String phone);
Boolean wechatRegister(String appId, String openId, String clientId, HttpServletRequest httpServletRequest); Boolean wechatRegister(String appId, String openId, String clientId, HttpServletRequest httpServletRequest);
SchisandraAuthUserBO checkUserName(String userName);
} }

View File

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

View File

@@ -57,4 +57,5 @@ public interface SchisandraAuthUserService {
boolean updateUserPasswordByPhone(SchisandraAuthUser schisandraAuthUser); boolean updateUserPasswordByPhone(SchisandraAuthUser schisandraAuthUser);
SchisandraAuthUser checkUserName(String userName);
} }

View File

@@ -105,5 +105,10 @@ public class SchisandraAuthUserServiceImpl implements SchisandraAuthUserService
} }
@Override
public SchisandraAuthUser checkUserName(String userName) {
return this.schisandraAuthUserDao.selectOneByCondition(SchisandraAuthUserTableDef.SCHISANDRA_AUTH_USER.USER_NAME.eq(userName));
}
} }