diff --git a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java index fa54554..455e08d 100755 --- a/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java +++ b/src/main/java/com/jsl/oa/aspect/AuthControllerAspect.java @@ -5,6 +5,7 @@ import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.ResultUtil; import com.jsl.oa.utils.redis.TokenRedisUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -25,6 +26,7 @@ import java.util.Objects; * @version v1.0.0 * @since v1.0.0 */ +@Slf4j @Aspect @Component @RequiredArgsConstructor @@ -53,7 +55,6 @@ public class AuthControllerAspect { } else { return ResultUtil.error(ErrorCode.TIMESTAMP_ERROR); } - } /** @@ -63,7 +64,7 @@ public class AuthControllerAspect { * * @param pjp ProceedingJoinPoint对象 * @return {@link Object} - * @throws Throwable + * @throws Throwable 异常 */ @Around("execution(* com.jsl.oa.controllers.AuthController.authLogout(..)) || execution(* com.jsl.oa.controllers.AuthController.authChangePassword(..))") public Object tokenControllerAround(ProceedingJoinPoint pjp) throws Throwable { @@ -93,7 +94,7 @@ public class AuthControllerAspect { * @return {@link Boolean} * @since v1.0.0 */ - public Boolean checkTimestamp(@NotNull HttpServletRequest request) { + private Boolean checkTimestamp(@NotNull HttpServletRequest request) { // 获取请求头中的时间戳 String getTimestamp = request.getHeader("Timestamp"); // 判断是否为空 diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index cc8796f..b680272 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -18,7 +18,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; 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) { log.info("请求接口[GET]: /user/current"); // 检查数据是否有问题 - ArrayList arrayForError = new ArrayList<>(); if (id != null && !id.isEmpty()) { if (!Pattern.matches("^[0-9]+$", id)) { - arrayForError.add("id 只能为数字"); + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "id 只能为数字"); } } if (username != null && !username.isEmpty()) { 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 (!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 (!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); - } else { - return ResultUtil.error(ErrorCode.PARAMETER_ERROR, arrayForError); - } + return userService.userCurrent(request, id, username, email, phone); } /** diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 1beec9d..ef78621 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -6,6 +6,7 @@ import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.info.ProjectShowDO; import com.jsl.oa.model.voData.ProjectInfoVO; +import com.jsl.oa.utils.BaseResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DuplicateKeyException; @@ -100,7 +101,7 @@ public class ProjectDAO { return projectMapper.get(); } - public ProjectDO getByName(String name) { + public BaseResponse getByName(String name) { log.info("\t> 执行 DAO 层 ProjectDAO.getByName 方法"); return projectMapper.getByName(name); } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index cd254c7..8cdbb6b 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -4,7 +4,6 @@ import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.doData.RoleDO; 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.voData.UserAllCurrentVO; 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 lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Component; -import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; @@ -25,7 +21,7 @@ import java.util.List; @RequiredArgsConstructor public class UserDAO { - private final UserMapper userMapper; + public final UserMapper userMapper; private final RoleMapper roleMapper; /** @@ -70,6 +66,11 @@ public class UserDAO { 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; } - @Contract("_ -> param1") - private @NotNull List userCurrentAll(@NotNull List 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 diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 5bf4d04..7d5ef53 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -2,7 +2,6 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.doData.RoleDO; 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.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; @@ -27,7 +26,7 @@ public interface UserMapper { "VALUES (#{jobId}, #{username}, #{password}, #{address}, #{phone}, #{email}, #{age}, #{sex})") 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); @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}") List 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}") RoleUserDO getRoleIdByUserId(Long userId); @@ -96,4 +82,7 @@ public interface UserMapper { @Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}") UserDO getUserByPhone(String phone); + + @Select("SELECT is_delete FROM organize_oa.oa_user WHERE id = #{id}") + boolean userGetDelete(Long id); } diff --git a/src/main/java/com/jsl/oa/model/doData/UserCurrentDO.java b/src/main/java/com/jsl/oa/model/doData/UserCurrentDO.java deleted file mode 100644 index 31b31e9..0000000 --- a/src/main/java/com/jsl/oa/model/doData/UserCurrentDO.java +++ /dev/null @@ -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; -} diff --git a/src/main/java/com/jsl/oa/model/doData/UserDO.java b/src/main/java/com/jsl/oa/model/doData/UserDO.java index 184c5a2..354925d 100755 --- a/src/main/java/com/jsl/oa/model/doData/UserDO.java +++ b/src/main/java/com/jsl/oa/model/doData/UserDO.java @@ -39,4 +39,5 @@ public class UserDO { private String description; private Timestamp createdAt; private Timestamp updatedAt; + private Boolean isDelete; } diff --git a/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java b/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java index b390892..b7e1a50 100755 --- a/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java +++ b/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java @@ -50,5 +50,6 @@ public class UserCurrentBackVO { private String description; private Timestamp createdAt; private Timestamp updatedAt; + private Boolean isDelete; } } diff --git a/src/main/java/com/jsl/oa/model/voData/UserEditVO.java b/src/main/java/com/jsl/oa/model/voData/UserEditVO.java new file mode 100644 index 0000000..0f00012 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/UserEditVO.java @@ -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; +} + + diff --git a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java index 17970c5..8833292 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.UserDAO; +import com.jsl.oa.mapper.PermissionMapper; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.UserDO; @@ -25,6 +26,7 @@ public class UserServiceImpl implements UserService { private final UserDAO userDAO; private final RoleMapper roleMapper; + private final PermissionMapper permissionMapper; @Override public UserDO getUserInfoByUsername(String username) { @@ -33,18 +35,27 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userDelete(HttpServletRequest request, Long id) { + log.info("\t> 执行 Service 层 UserService.userDelete 方法"); //判断用户是否存在 if (userDAO.isExistUser(id)) { if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } - userDAO.userDelete(id); - return ResultUtil.success("删除成功"); - } else return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + // 用户是否已删除 + if (!userDAO.userGetDelete(id)) { + userDAO.userDelete(id); + return ResultUtil.success("删除成功"); + } else { + return ResultUtil.error(ErrorCode.USER_ALREADY_DELETE); + } + } else { + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } } @Override public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { + log.info("\t> 执行 Service 层 UserService.userLock 方法"); if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } @@ -57,6 +68,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userEditProfile(@NotNull UserEditProfileVO userEditProfileVO) { + log.info("\t> 执行 Service 层 UserService.userEditProfile 方法"); if (userDAO.isExistUser(userEditProfileVO.getId())) { userDAO.userEditProfile(userEditProfileVO); return ResultUtil.success("修改成功"); @@ -65,6 +77,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userCurrentAll(HttpServletRequest request, @NotNull UserAllCurrentVO userAllCurrentVO) { + log.info("\t> 执行 Service 层 UserService.userCurrentAll 方法"); // 检查是否是管理员用户 if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); @@ -102,6 +115,16 @@ public class UserServiceImpl implements UserService { @Override 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, "")) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } if (id == null && username == null && email == null && phone == null) { // Token获取信息 UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); @@ -138,6 +161,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request) { + log.info("\t> 执行 Service 层 UserService.userAdd 方法"); // 检测用户是否为管理员 if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); @@ -206,6 +230,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userProfileGet(HttpServletRequest request) { + log.info("\t> 执行 Service 层 UserService.userProfileGet 方法"); // 获取用户Id UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); UserProfileVo userProfileVo = new UserProfileVo(); diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index a4fa9a0..8604517 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -15,6 +15,7 @@ public enum ErrorCode { USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户角色不存在"), USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户角色非管理员"), USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的角色"), + NOT_PERMISSION("NotPermission", 40019, "没有权限"), UNAUTHORIZED("Unauthorized", 40100, "未授权"), TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"), VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"), @@ -26,6 +27,9 @@ public enum ErrorCode { EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40303, "请使用邮箱登陆"), PASSWORD_NOT_SAME("PasswordNotSame", 40304, "两次密码不一致"), 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不存在"), ROLE_NOT_FOUNDED("RoleNotFounded", 40401, "角色不存在"), ROLE_NAME_REPEAT("RoleNameRepeat", 40402, "角色名称重复"), diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 951785f..efe3183 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -1,7 +1,9 @@ package com.jsl.oa.utils; import com.jsl.oa.exception.ClassCopyException; +import com.jsl.oa.mapper.PermissionMapper; 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.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; @@ -213,7 +215,7 @@ public class Processing { } //如果获取的值不为数字且等于“”,则跳过 - if ( !(value instanceof Number) && value.equals("")) { + if ("".equals(value)) { continue; } @@ -285,7 +287,8 @@ public class Processing { .setAccountNoLocked(userDO.getAccountNoLocked()) .setDescription(userDO.getDescription()) .setCreatedAt(userDO.getCreatedAt()) - .setUpdatedAt(userDO.getUpdatedAt())) + .setUpdatedAt(userDO.getUpdatedAt()) + .setIsDelete(userDO.getIsDelete())) .setRole(new UserCurrentBackVO.ReturnUserRole() .setRid(getUserRole.getRid())) .setPermission(new ArrayList<>()); @@ -343,7 +346,6 @@ public class Processing { return vos; } - /** * @Description: 封装PermissionContentVo的子类,被convertToVoList方法调用 * @Date: 2024/1/20 @@ -367,6 +369,31 @@ public class Processing { 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; + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9570e24..22149f4 100755 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -12,7 +12,7 @@ spring: port: 6379 password: 123456 profiles: - active: test + active: dev mybatis: configuration: map-underscore-to-camel-case: true \ No newline at end of file