feat&fix: 用户删除处理与补丁

This commit is contained in:
筱锋xiao_lfeng 2024-01-20 23:09:51 +08:00
parent 6871110153
commit 91045653ad
No known key found for this signature in database
GPG Key ID: F693AA12AABBFA87
13 changed files with 136 additions and 152 deletions

View File

@ -5,6 +5,7 @@ import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.ResultUtil; import com.jsl.oa.utils.ResultUtil;
import com.jsl.oa.utils.redis.TokenRedisUtil; import com.jsl.oa.utils.redis.TokenRedisUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
@ -25,6 +26,7 @@ import java.util.Objects;
* @version v1.0.0 * @version v1.0.0
* @since v1.0.0 * @since v1.0.0
*/ */
@Slf4j
@Aspect @Aspect
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
@ -53,7 +55,6 @@ public class AuthControllerAspect {
} else { } else {
return ResultUtil.error(ErrorCode.TIMESTAMP_ERROR); return ResultUtil.error(ErrorCode.TIMESTAMP_ERROR);
} }
} }
/** /**
@ -63,7 +64,7 @@ public class AuthControllerAspect {
* *
* @param pjp ProceedingJoinPoint对象 * @param pjp ProceedingJoinPoint对象
* @return {@link Object} * @return {@link Object}
* @throws Throwable * @throws Throwable 异常
*/ */
@Around("execution(* com.jsl.oa.controllers.AuthController.authLogout(..)) || execution(* com.jsl.oa.controllers.AuthController.authChangePassword(..))") @Around("execution(* com.jsl.oa.controllers.AuthController.authLogout(..)) || execution(* com.jsl.oa.controllers.AuthController.authChangePassword(..))")
public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable { public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable {
@ -93,7 +94,7 @@ public class AuthControllerAspect {
* @return {@link Boolean} * @return {@link Boolean}
* @since v1.0.0 * @since v1.0.0
*/ */
public Boolean checkTimestamp(@NotNull HttpServletRequest request) { private Boolean checkTimestamp(@NotNull HttpServletRequest request) {
// 获取请求头中的时间戳 // 获取请求头中的时间戳
String getTimestamp = request.getHeader("Timestamp"); String getTimestamp = request.getHeader("Timestamp");
// 判断是否为空 // 判断是否为空

View File

@ -18,7 +18,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
@ -104,33 +103,28 @@ public class UserController {
public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) { public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) {
log.info("请求接口[GET]: /user/current"); log.info("请求接口[GET]: /user/current");
// 检查数据是否有问题 // 检查数据是否有问题
ArrayList<String> arrayForError = new ArrayList<>();
if (id != null && !id.isEmpty()) { if (id != null && !id.isEmpty()) {
if (!Pattern.matches("^[0-9]+$", id)) { if (!Pattern.matches("^[0-9]+$", id)) {
arrayForError.add("id 只能为数字"); return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "id 只能为数字");
} }
} }
if (username != null && !username.isEmpty()) { if (username != null && !username.isEmpty()) {
if (!Pattern.matches("^[0-9A-Za-z_]+$", username)) { if (!Pattern.matches("^[0-9A-Za-z_]+$", username)) {
arrayForError.add("username 只允许 0-9、A-Z、a-z、_"); return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "username 只允许 0-9、A-Z、a-z、_");
} }
} }
if (email != null && !email.isEmpty()) { if (email != null && !email.isEmpty()) {
if (!Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) { if (!Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) {
arrayForError.add("email 格式不正确"); return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "email 格式不正确");
} }
} }
if (phone != null && !phone.isEmpty()) { if (phone != null && !phone.isEmpty()) {
if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) { if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) {
arrayForError.add("手机格式不正确"); return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "手机格式不正确");
} }
} }
// 检查是否出现错误 // 检查是否出现错误
if (arrayForError.isEmpty()) { return userService.userCurrent(request, id, username, email, phone);
return userService.userCurrent(request, id, username, email, phone);
} else {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, arrayForError);
}
} }
/** /**

View File

@ -6,6 +6,7 @@ import com.jsl.oa.model.doData.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.info.ProjectShowDO; import com.jsl.oa.model.doData.info.ProjectShowDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import com.jsl.oa.utils.BaseResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
@ -100,7 +101,7 @@ public class ProjectDAO {
return projectMapper.get(); return projectMapper.get();
} }
public ProjectDO getByName(String name) { public BaseResponse getByName(String name) {
log.info("\t> 执行 DAO 层 ProjectDAO.getByName 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.getByName 方法");
return projectMapper.getByName(name); return projectMapper.getByName(name);
} }

View File

@ -4,7 +4,6 @@ import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserCurrentDO;
import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserAllCurrentVO;
import com.jsl.oa.model.voData.UserCurrentBackVO; import com.jsl.oa.model.voData.UserCurrentBackVO;
@ -12,11 +11,8 @@ import com.jsl.oa.model.voData.UserEditProfileVO;
import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.Processing;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.sql.Timestamp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -25,7 +21,7 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
public class UserDAO { public class UserDAO {
private final UserMapper userMapper; public final UserMapper userMapper;
private final RoleMapper roleMapper; private final RoleMapper roleMapper;
/** /**
@ -70,6 +66,11 @@ public class UserDAO {
userMapper.userDelete(id); userMapper.userDelete(id);
} }
public boolean userGetDelete(Long id) {
log.info("\t> 执行 DAO 层 UserDAO.userGetDelete 方法");
return userMapper.userGetDelete(id);
}
/** /**
* 用户账号锁定 * 用户账号锁定
* *
@ -106,84 +107,6 @@ public class UserDAO {
return userCurrentDOList; return userCurrentDOList;
} }
@Contract("_ -> param1")
private @NotNull List<UserCurrentDO> userCurrentAll(@NotNull List<UserCurrentDO> userCurrentDO) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentAll 方法");
userCurrentDO.forEach(it -> {
it.setRole(roleMapper.getRoleUserByUid(it.getId()));
if (it.getRole() == null) {
RoleUserDO newRoleUserDO = new RoleUserDO();
newRoleUserDO.setRid(0L)
.setUid(it.getId())
.setCreatedAt(new Timestamp(System.currentTimeMillis()));
it.setRole(newRoleUserDO);
}
});
return userCurrentDO;
}
/**
* 获取当前用户信息
*
* @param uid 用户id
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentById(Long uid) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentById 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentById(uid);
return getUserCurrentForRole(userCurrentDO);
}
/**
* 获取当前用户信息
*
* @param username 用户名
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByUsername(String username) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByUsername 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByUsername(username);
return getUserCurrentForRole(userCurrentDO);
}
/**
* 获取当前用户信息
*
* @param email 邮箱
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByEmail(String email) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByEmail 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByEmail(email);
return getUserCurrentForRole(userCurrentDO);
}
/**
* 获取当前用户信息
*
* @param phone 手机号
* @return {@link UserCurrentDO}
*/
public UserCurrentDO userCurrentByPhone(String phone) {
log.info("\t> 执行 DAO 层 UserDAO.userCurrentByPhone 方法");
UserCurrentDO userCurrentDO = userMapper.getUserCurrentByPhone(phone);
return getUserCurrentForRole(userCurrentDO);
}
private UserCurrentDO getUserCurrentForRole(UserCurrentDO userCurrentDO) {
log.info("\t> 执行 DAO 层 UserDAO.getUserCurrentForRole 方法");
if (userCurrentDO != null) {
RoleUserDO newRoleUserDO = new RoleUserDO();
newRoleUserDO.setRid(0L)
.setUid(userCurrentDO.getId())
.setCreatedAt(new Timestamp(System.currentTimeMillis()));
userCurrentDO.setRole(newRoleUserDO);
return userCurrentDO;
} else {
return null;
}
}
/** /**
* @return * @return

View File

@ -2,7 +2,6 @@ package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserCurrentDO;
import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.UserDO;
import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserAllCurrentVO;
import com.jsl.oa.model.voData.UserEditProfileVO; import com.jsl.oa.model.voData.UserEditProfileVO;
@ -27,7 +26,7 @@ public interface UserMapper {
"VALUES (#{jobId}, #{username}, #{password}, #{address}, #{phone}, #{email}, #{age}, #{sex})") "VALUES (#{jobId}, #{username}, #{password}, #{address}, #{phone}, #{email}, #{age}, #{sex})")
boolean insertUser(UserDO userDO); boolean insertUser(UserDO userDO);
@Update("UPDATE organize_oa.oa_user SET is_delete = 1 ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ") @Update("UPDATE organize_oa.oa_user SET is_delete = true ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id}")
void userDelete(Long id); void userDelete(Long id);
@Update("UPDATE organize_oa.oa_user SET account_no_locked = #{isLock} ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ") @Update("UPDATE organize_oa.oa_user SET account_no_locked = #{isLock} ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ")
@ -60,19 +59,6 @@ public interface UserMapper {
"ORDER BY `id` LIMIT #{page},#{limit}") "ORDER BY `id` LIMIT #{page},#{limit}")
List<UserDO> getAllUserBySearch(UserAllCurrentVO userAllCurrentVO); List<UserDO> getAllUserBySearch(UserAllCurrentVO userAllCurrentVO);
@Select("SELECT * FROM organize_oa.oa_user WHERE id = #{uid}")
UserCurrentDO getUserCurrentById(Long uid);
@Select("SELECT * FROM organize_oa.oa_user WHERE username = #{username}")
UserCurrentDO getUserCurrentByUsername(String username);
@Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}")
UserCurrentDO getUserCurrentByEmail(String email);
@Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}")
UserCurrentDO getUserCurrentByPhone(String phone);
@Select("SELECT * FROM organize_oa.oa_role_user WHERE uid = #{userId}") @Select("SELECT * FROM organize_oa.oa_role_user WHERE uid = #{userId}")
RoleUserDO getRoleIdByUserId(Long userId); RoleUserDO getRoleIdByUserId(Long userId);
@ -96,4 +82,7 @@ public interface UserMapper {
@Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}") @Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}")
UserDO getUserByPhone(String phone); UserDO getUserByPhone(String phone);
@Select("SELECT is_delete FROM organize_oa.oa_user WHERE id = #{id}")
boolean userGetDelete(Long id);
} }

View File

@ -1,31 +0,0 @@
package com.jsl.oa.model.doData;
import lombok.Data;
import lombok.experimental.Accessors;
import java.sql.Timestamp;
@Data
@Accessors(chain = true)
public class UserCurrentDO {
private Long id;
private String jobId;
private String username;
private String address;
private String phone;
private String email;
private Short age;
private String signature;
private String avatar;
private String nickname;
private Short sex;
private Boolean enabled;
private Boolean accountNoExpired;
private Boolean credentialsNoExpired;
private Boolean recommend;
private Boolean accountNoLocked;
private String description;
private RoleUserDO role;
private Timestamp createdAt;
private Timestamp updatedAt;
}

View File

@ -39,4 +39,5 @@ public class UserDO {
private String description; private String description;
private Timestamp createdAt; private Timestamp createdAt;
private Timestamp updatedAt; private Timestamp updatedAt;
private Boolean isDelete;
} }

View File

@ -50,5 +50,6 @@ public class UserCurrentBackVO {
private String description; private String description;
private Timestamp createdAt; private Timestamp createdAt;
private Timestamp updatedAt; private Timestamp updatedAt;
private Boolean isDelete;
} }
} }

View File

@ -0,0 +1,49 @@
package com.jsl.oa.model.voData;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
@Data
public class UserEditVO {
@NotNull
private Long id;
@NotNull
private String username;
private String address;
@Pattern(regexp = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", message = "电话格式错误")
private String phone;
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "邮箱格式错误")
private String email;
@Min(value = 0, message = "保密:0,男:1,女:2")
@Max(value = 2, message = "保密:0,男:1,女:2")
private Short sex;
private Short age;
private String signature;
private String avatar;
private String nickname;
private String description;
@NotNull
private Boolean enabled;
@NotNull
private Boolean isExpired;
@NotNull
private Boolean passwordExpired;
@NotNull
private Boolean recommend;
@NotNull
private Boolean isLocked;
}

View File

@ -1,6 +1,7 @@
package com.jsl.oa.services.impl; package com.jsl.oa.services.impl;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.RoleUserDO;
import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.UserDO;
@ -25,6 +26,7 @@ public class UserServiceImpl implements UserService {
private final UserDAO userDAO; private final UserDAO userDAO;
private final RoleMapper roleMapper; private final RoleMapper roleMapper;
private final PermissionMapper permissionMapper;
@Override @Override
public UserDO getUserInfoByUsername(String username) { public UserDO getUserInfoByUsername(String username) {
@ -33,18 +35,27 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userDelete(HttpServletRequest request, Long id) { public BaseResponse userDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 UserService.userDelete 方法");
//判断用户是否存在 //判断用户是否存在
if (userDAO.isExistUser(id)) { if (userDAO.isExistUser(id)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
userDAO.userDelete(id); // 用户是否已删除
return ResultUtil.success("删除成功"); if (!userDAO.userGetDelete(id)) {
} else return ResultUtil.error(ErrorCode.USER_NOT_EXIST); userDAO.userDelete(id);
return ResultUtil.success("删除成功");
} else {
return ResultUtil.error(ErrorCode.USER_ALREADY_DELETE);
}
} else {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
} }
@Override @Override
public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) {
log.info("\t> 执行 Service 层 UserService.userLock 方法");
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
@ -57,6 +68,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userEditProfile(@NotNull UserEditProfileVO userEditProfileVO) { public BaseResponse userEditProfile(@NotNull UserEditProfileVO userEditProfileVO) {
log.info("\t> 执行 Service 层 UserService.userEditProfile 方法");
if (userDAO.isExistUser(userEditProfileVO.getId())) { if (userDAO.isExistUser(userEditProfileVO.getId())) {
userDAO.userEditProfile(userEditProfileVO); userDAO.userEditProfile(userEditProfileVO);
return ResultUtil.success("修改成功"); return ResultUtil.success("修改成功");
@ -65,6 +77,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userCurrentAll(HttpServletRequest request, @NotNull UserAllCurrentVO userAllCurrentVO) { public BaseResponse userCurrentAll(HttpServletRequest request, @NotNull UserAllCurrentVO userAllCurrentVO) {
log.info("\t> 执行 Service 层 UserService.userCurrentAll 方法");
// 检查是否是管理员用户 // 检查是否是管理员用户
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -102,6 +115,16 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone) { public BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone) {
log.info("\t> 执行 Service 层 UserService.userCurrent 方法");
// 检查用户是否有权限继续
log.info("\t> 检查用户是否有权限继续");
BaseResponse userAbleNext = Processing.checkUserAbleToNext(request, userDAO.userMapper);
if (userAbleNext != null) {
return userAbleNext;
}
if (!Processing.checkUserHasPermission(request, roleMapper, permissionMapper, "<permission>")) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
if (id == null && username == null && email == null && phone == null) { if (id == null && username == null && email == null && phone == null) {
// Token获取信息 // Token获取信息
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
@ -138,6 +161,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request) { public BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request) {
log.info("\t> 执行 Service 层 UserService.userAdd 方法");
// 检测用户是否为管理员 // 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
@ -206,6 +230,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userProfileGet(HttpServletRequest request) { public BaseResponse userProfileGet(HttpServletRequest request) {
log.info("\t> 执行 Service 层 UserService.userProfileGet 方法");
// 获取用户Id // 获取用户Id
UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request));
UserProfileVo userProfileVo = new UserProfileVo(); UserProfileVo userProfileVo = new UserProfileVo();

View File

@ -15,6 +15,7 @@ public enum ErrorCode {
USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户角色不存在"), USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户角色不存在"),
USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户角色非管理员"), USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户角色非管理员"),
USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的角色"), USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的角色"),
NOT_PERMISSION("NotPermission", 40019, "没有权限"),
UNAUTHORIZED("Unauthorized", 40100, "未授权"), UNAUTHORIZED("Unauthorized", 40100, "未授权"),
TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"), TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"),
VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"), VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"),
@ -26,6 +27,9 @@ public enum ErrorCode {
EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40303, "请使用邮箱登陆"), EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40303, "请使用邮箱登陆"),
PASSWORD_NOT_SAME("PasswordNotSame", 40304, "两次密码不一致"), PASSWORD_NOT_SAME("PasswordNotSame", 40304, "两次密码不一致"),
PLEASE_ASSIGN_ROLE_TO_USER("PleaseAssignRoleToUser", 40305, "请为用户添加角色"), PLEASE_ASSIGN_ROLE_TO_USER("PleaseAssignRoleToUser", 40305, "请为用户添加角色"),
USER_ALREADY_DELETE("UserAlreadyDelete", 40306, "用户已被删除"),
USER_DISABLED("UserDisabled", 40307, "用户已被禁用"),
USER_LOCKED("UserLocked", 40308, "用户已被锁定"),
ID_NOT_EXIST("IdNotExist", 40400, "ID不存在"), ID_NOT_EXIST("IdNotExist", 40400, "ID不存在"),
ROLE_NOT_FOUNDED("RoleNotFounded", 40401, "角色不存在"), ROLE_NOT_FOUNDED("RoleNotFounded", 40401, "角色不存在"),
ROLE_NAME_REPEAT("RoleNameRepeat", 40402, "角色名称重复"), ROLE_NAME_REPEAT("RoleNameRepeat", 40402, "角色名称重复"),

View File

@ -1,7 +1,9 @@
package com.jsl.oa.utils; package com.jsl.oa.utils;
import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.exception.ClassCopyException;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.doData.PermissionDO; import com.jsl.oa.model.doData.PermissionDO;
import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.RoleUserDO;
@ -213,7 +215,7 @@ public class Processing {
} }
//如果获取的值不为数字且等于则跳过 //如果获取的值不为数字且等于则跳过
if ( !(value instanceof Number) && value.equals("")) { if ("".equals(value)) {
continue; continue;
} }
@ -285,7 +287,8 @@ public class Processing {
.setAccountNoLocked(userDO.getAccountNoLocked()) .setAccountNoLocked(userDO.getAccountNoLocked())
.setDescription(userDO.getDescription()) .setDescription(userDO.getDescription())
.setCreatedAt(userDO.getCreatedAt()) .setCreatedAt(userDO.getCreatedAt())
.setUpdatedAt(userDO.getUpdatedAt())) .setUpdatedAt(userDO.getUpdatedAt())
.setIsDelete(userDO.getIsDelete()))
.setRole(new UserCurrentBackVO.ReturnUserRole() .setRole(new UserCurrentBackVO.ReturnUserRole()
.setRid(getUserRole.getRid())) .setRid(getUserRole.getRid()))
.setPermission(new ArrayList<>()); .setPermission(new ArrayList<>());
@ -343,7 +346,6 @@ public class Processing {
return vos; return vos;
} }
/** /**
* @Description: 封装PermissionContentVo的子类被convertToVoList方法调用 * @Description: 封装PermissionContentVo的子类被convertToVoList方法调用
* @Date: 2024/1/20 * @Date: 2024/1/20
@ -367,6 +369,31 @@ public class Processing {
return vo; return vo;
} }
public static @Nullable BaseResponse checkUserAbleToNext(HttpServletRequest request, @NotNull UserMapper userMapper) {
Long userId = Processing.getAuthHeaderToUserId(request);
// 获取用户信息
UserDO userDO = userMapper.getUserById(userId);
// 用户不存在
if (userDO == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
// 用户是否被禁用
if (!userDO.getEnabled()) {
return ResultUtil.error(ErrorCode.USER_DISABLED);
}
// 用户是否被封禁
if (!userDO.getAccountNoLocked()) {
return ResultUtil.error(ErrorCode.USER_LOCKED);
}
// 用户是否被删除
if (userDO.getIsDelete()) {
return ResultUtil.error(ErrorCode.USER_ALREADY_DELETE);
}
return null;
}
public static boolean checkUserHasPermission(HttpServletRequest request, RoleMapper roleMapper, PermissionMapper permissionMapper, String permission) {
// TODO: 10003-用户权限及权限组校验
return true;
}
} }

View File

@ -12,7 +12,7 @@ spring:
port: 6379 port: 6379
password: 123456 password: 123456
profiles: profiles:
active: test active: dev
mybatis: mybatis:
configuration: configuration:
map-underscore-to-camel-case: true map-underscore-to-camel-case: true