mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-10 20:57:14 +08:00
优化:优化部分校验类型(业务验证迁移到 Service 层,使用 CheckUtils 来验证)
This commit is contained in:
@@ -28,7 +28,7 @@ import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
|
||||
@@ -46,15 +46,11 @@ public class LoginServiceImpl implements LoginService {
|
||||
|
||||
@Override
|
||||
public String login(String username, String password) {
|
||||
// 查询用户
|
||||
SysUser sysUser = userService.getByUsername(username);
|
||||
|
||||
// 校验
|
||||
ValidationUtils.throwIfNull(sysUser, "用户名或密码错误");
|
||||
CheckUtils.throwIfNull(sysUser, "用户名或密码错误");
|
||||
Long userId = sysUser.getUserId();
|
||||
ValidationUtils.throwIfNotEqual(SecureUtils.md5Salt(password, userId.toString()), sysUser.getPassword(),
|
||||
"用户名或密码错误");
|
||||
ValidationUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, sysUser.getStatus(), "此账号已被禁用,如有疑问,请联系管理员");
|
||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(password, userId.toString()), sysUser.getPassword(), "用户名或密码错误");
|
||||
CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, sysUser.getStatus(), "此账号已被禁用,如有疑问,请联系管理员");
|
||||
|
||||
// 登录
|
||||
LoginUser loginUser = BeanUtil.copyProperties(sysUser, LoginUser.class);
|
||||
|
@@ -19,12 +19,13 @@ package top.charles7c.cnadmin.system.model.request;
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
/**
|
||||
* 创建部门信息
|
||||
*
|
||||
@@ -60,6 +61,6 @@ public class CreateDeptRequest implements Serializable {
|
||||
* 描述
|
||||
*/
|
||||
@Schema(description = "描述")
|
||||
@Size(max = 200, message = "描述长度不能超过 200 个字符")
|
||||
@Length(max = 200, message = "描述长度不能超过 200 个字符")
|
||||
private String description;
|
||||
}
|
||||
|
@@ -20,12 +20,13 @@ import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.enums.GenderEnum;
|
||||
|
||||
/**
|
||||
@@ -45,7 +46,7 @@ public class UpdateBasicInfoRequest implements Serializable {
|
||||
*/
|
||||
@Schema(description = "昵称")
|
||||
@NotBlank(message = "昵称不能为空")
|
||||
@Size(max = 32, message = "昵称长度不能超过 32 个字符")
|
||||
@Length(max = 32, message = "昵称长度不能超过 32 个字符")
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
|
@@ -37,6 +37,7 @@ import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
||||
import top.charles7c.cnadmin.common.util.TreeUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.system.mapper.DeptMapper;
|
||||
import top.charles7c.cnadmin.system.model.entity.SysDept;
|
||||
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||
@@ -75,7 +76,7 @@ public class DeptServiceImpl implements DeptService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 去重
|
||||
// 去除重复子部门列表
|
||||
List<DeptVO> deDuplicationDeptList = deDuplication(list);
|
||||
return deDuplicationDeptList.stream().map(d -> d.setChildren(this.getChildren(d, list)))
|
||||
.collect(Collectors.toList());
|
||||
@@ -134,6 +135,11 @@ public class DeptServiceImpl implements DeptService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long create(CreateDeptRequest request) {
|
||||
String deptName = request.getDeptName();
|
||||
boolean isExist = this.checkDeptNameExist(deptName, request.getParentId(), null);
|
||||
CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName));
|
||||
|
||||
// 保存部门信息
|
||||
SysDept sysDept = BeanUtil.copyProperties(request, SysDept.class);
|
||||
sysDept.setStatus(DisEnableStatusEnum.ENABLE);
|
||||
deptMapper.insert(sysDept);
|
||||
|
@@ -30,15 +30,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.file.FileNameUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties;
|
||||
import top.charles7c.cnadmin.common.consts.FileConstants;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.util.FileUtils;
|
||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.system.mapper.UserMapper;
|
||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
@@ -64,6 +65,14 @@ public class UserServiceImpl implements UserService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String uploadAvatar(MultipartFile avatarFile, Long userId) {
|
||||
Long avatarMaxSizeInMb = localStorageProperties.getAvatarMaxSizeInMb();
|
||||
CheckUtils.throwIf(() -> avatarFile.getSize() > avatarMaxSizeInMb * 1024 * 1024,
|
||||
String.format("请上传小于 %s MB 的图片", avatarMaxSizeInMb));
|
||||
String avatarImageType = FileNameUtil.extName(avatarFile.getOriginalFilename());
|
||||
String[] avatarSupportImgTypes = FileConstants.AVATAR_SUPPORTED_IMG_TYPES;
|
||||
CheckUtils.throwIf(() -> !StrUtil.equalsAnyIgnoreCase(avatarImageType, avatarSupportImgTypes),
|
||||
String.format("头像仅支持 %s 格式的图片", String.join(",", avatarSupportImgTypes)));
|
||||
|
||||
// 上传新头像
|
||||
String avatarPath = localStorageProperties.getPath().getAvatar();
|
||||
File newAvatarFile = FileUtils.upload(avatarFile, avatarPath, false);
|
||||
@@ -103,8 +112,9 @@ public class UserServiceImpl implements UserService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updatePassword(String oldPassword, String newPassword, Long userId) {
|
||||
CheckUtils.throwIfEqual(newPassword, oldPassword, "新密码不能与当前密码相同");
|
||||
SysUser sysUser = this.getById(userId);
|
||||
ValidationUtils.throwIfNotEqual(SecureUtils.md5Salt(oldPassword, userId.toString()), sysUser.getPassword(),
|
||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(oldPassword, userId.toString()), sysUser.getPassword(),
|
||||
"当前密码错误");
|
||||
|
||||
// 更新密码和密码重置时间
|
||||
@@ -123,13 +133,12 @@ public class UserServiceImpl implements UserService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateEmail(String newEmail, String currentPassword, Long userId) {
|
||||
// 校验
|
||||
SysUser sysUser = this.getById(userId);
|
||||
ValidationUtils.throwIfNotEqual(SecureUtils.md5Salt(currentPassword, userId.toString()), sysUser.getPassword(),
|
||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(currentPassword, userId.toString()), sysUser.getPassword(),
|
||||
"当前密码错误");
|
||||
Long count = userMapper.selectCount(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getEmail, newEmail));
|
||||
ValidationUtils.throwIf(() -> count > 0, "邮箱已绑定其他账号,请更换其他邮箱");
|
||||
ValidationUtils.throwIfEqual(newEmail, sysUser.getEmail(), "新邮箱不能与当前邮箱相同");
|
||||
CheckUtils.throwIf(() -> count > 0, "邮箱已绑定其他账号,请更换其他邮箱");
|
||||
CheckUtils.throwIfEqual(newEmail, sysUser.getEmail(), "新邮箱不能与当前邮箱相同");
|
||||
|
||||
// 更新邮箱
|
||||
userMapper.update(null,
|
||||
@@ -143,9 +152,8 @@ public class UserServiceImpl implements UserService {
|
||||
|
||||
@Override
|
||||
public SysUser getById(Long userId) {
|
||||
ValidationUtils.throwIfNull(userId, "用户不存在");
|
||||
SysUser sysUser = userMapper.selectById(userId);
|
||||
ValidationUtils.throwIfNull(sysUser, String.format("ID为 [%s] 的用户已不存在", userId));
|
||||
CheckUtils.throwIfNull(sysUser, String.format("ID为 [%s] 的用户已不存在", userId));
|
||||
return sysUser;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user