package com.senmesh.usercenter.user.util; import org.apache.commons.lang3.StringUtils; 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; /** * @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"; public static final String DEFAULT_ORG_USER_PASSWORD_KEY = "user.default.password"; public static String getDefaultOrgUserPassword() { return EnvironmentUtils.getProperty(DEFAULT_ORG_USER_PASSWORD_KEY); } /** * 设置创建用户初始状态数据 (账号随机生成/非超管/非实名/待激活/已启用-登录相关) * * @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); user.setUsername(user.getPhone()); user.setPassword(PasswordUtils.encode(getDefaultOrgUserPassword())); } 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); } }