Files
senmesh-zc/src/main/java/com/senmesh/usercenter/user/util/UserUtils.java

122 lines
3.7 KiB
Java
Raw Normal View History

2025-12-29 16:06:48 +08:00
package com.senmesh.usercenter.user.util;
2025-06-11 09:42:13 +08:00
import org.apache.commons.lang3.StringUtils;
2025-12-29 16:06:48 +08:00
import com.senmesh.common.constant.CommonConstants;
import com.senmesh.common.exception.util.Assert;
import com.senmesh.common.util.EnvironmentUtils;
import com.senmesh.common.util.RandomUtils;
import com.senmesh.common.util.UserContextHolder;
import com.senmesh.security.util.PasswordUtils;
import com.senmesh.usercenter.user.constant.UserStatusEnum;
import com.senmesh.usercenter.user.constant.UserTypeEnum;
import com.senmesh.usercenter.user.dto.IUserPhoneCodeSms;
import com.senmesh.usercenter.user.entity.User;
2025-06-11 09:42:13 +08:00
/**
* @author sr on 2021-05-24
*/
public class UserUtils {
public static final int NICKNAME_LENGTH = 12;
public static final String DEFAULT_AVATAR_KEY = "user.default.avatars";
2026-03-27 18:28:05 +08:00
public static final String DEFAULT_ORG_USER_PASSWORD_KEY = "user.default.password";
public static String getDefaultOrgUserPassword() {
return EnvironmentUtils.getProperty(DEFAULT_ORG_USER_PASSWORD_KEY);
}
2025-06-11 09:42:13 +08:00
/**
* 设置创建用户初始状态数据 (账号随机生成/非超管/非实名/待激活/已启用-登录相关)
*
* @param user
* @author sr on 2021-06-10
*/
public static void setInitToCreateUser(User user) {
user.setUsername(RandomUtils.generateUUID());
String nickname = user.getNickname();
user.setNickname(dealNickname(nickname, user.getPhone()));
user.setAvatar(dealAvatar(user.getAvatar()));
user.setSupeiror(Boolean.FALSE);
user.setAuthenticated(Boolean.FALSE);
user.setStatus(UserStatusEnum.INIT.getStatus());
user.setEnabled(Boolean.TRUE);
user.setAccountNonExpired(Boolean.TRUE);
user.setAccountNonLocked(Boolean.TRUE);
user.setCredentialsNonExpired(Boolean.TRUE);
}
/**
* @description: 初始化账号密码
* @return:
* @author: guixinman
* @param:
*/
public static void setInitUserNameAndPasswordToCreateUser(User user, Boolean administrator) {
//创建用户的时候就给手机号绑定状态改为已绑定
user.setPhoneBinding(true);
2026-01-24 23:22:21 +08:00
user.setUsername(user.getPhone());
2026-03-27 18:28:05 +08:00
user.setPassword(PasswordUtils.encode(getDefaultOrgUserPassword()));
2025-06-11 09:42:13 +08:00
}
public static String dealNickname(String nickname, String phone) {
if (StringUtils.isNotBlank(nickname)) {
return nickname;
}
if (StringUtils.isNotBlank(phone)) {
return "用户" + StringUtils.right(phone, 4);
}
return "用户" + RandomUtils.nextSixInt();
}
public static String dealAvatar(String avatar) {
if (StringUtils.isNotBlank(avatar)) {
return avatar;
}
String avatarStr = EnvironmentUtils.getProperty(DEFAULT_AVATAR_KEY);
if (StringUtils.isBlank(avatarStr)) {
return null;
}
String[] avatars = avatarStr.split(CommonConstants.COMMA);
return avatars[org.apache.commons.lang3.RandomUtils.nextInt(0, avatars.length)];
}
/**
* 校验是否api用户
*
* @author sr on 2021-08-16
*/
public static void checkApiUser() {
checkApiUser(UserContextHolder.getUserType());
}
/**
* 校验是否api用户
*
* @param userType
* @author sr on 2021-08-16
*/
public static void checkApiUser(Integer userType) {
Assert.isTrue(!UserTypeEnum.API_ORG.getType().equals(userType),
"用户类型异常");
}
/**
* 带有用户类型对象获取用户类型(优先取入参)
*
* @param iUserType
* @return
* @author sr on 2021-09-02
*/
public static UserTypeEnum getUserType(IUserPhoneCodeSms iUserType) {
Integer userType = iUserType.getUserType();
if (userType == null) {
userType = UserContextHolder.getUserType();
}
Assert.notNull(userType, "无法获取验证码,用户类型不能为空");
return UserTypeEnum.one(userType);
}
}