From fc51326449af66efdf5925f37f6e0b25891adc73 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 20 Jan 2024 16:15:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Auth=E4=BF=A1=E6=81=AF=E8=A7=84=E6=95=B4?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8CCurrent(All)=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/config/shiro/ShiroConfiguration.java | 1 + .../jsl/oa/controllers/AuthController.java | 11 ++ .../jsl/oa/controllers/InfoController.java | 2 +- .../oa/controllers/PermissionController.java | 1 - .../jsl/oa/controllers/RoleController.java | 3 +- .../jsl/oa/controllers/UserController.java | 13 +- src/main/java/com/jsl/oa/dao/RoleDAO.java | 12 +- src/main/java/com/jsl/oa/dao/UserDAO.java | 39 ++++-- .../java/com/jsl/oa/mapper/UserMapper.java | 10 +- .../oa/model/voData/UserCurrentBackVO.java | 54 ++++++++ .../jsl/oa/model/voData/UserReturnBackVO.java | 36 +++-- .../java/com/jsl/oa/services/UserService.java | 4 +- .../jsl/oa/services/impl/AuthServiceImpl.java | 24 ++-- .../jsl/oa/services/impl/InfoServiceImpl.java | 21 ++- .../oa/services/impl/ProjectServiceImpl.java | 7 +- .../jsl/oa/services/impl/RoleServiceImpl.java | 22 ++-- .../jsl/oa/services/impl/UserServiceImpl.java | 123 +++++++++--------- src/main/java/com/jsl/oa/utils/ErrorCode.java | 1 + .../java/com/jsl/oa/utils/Processing.java | 50 ++++++- .../java/com/jsl/oa/utils/ResultUtil.java | 8 +- 20 files changed, 292 insertions(+), 150 deletions(-) create mode 100755 src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java diff --git a/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java b/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java index acd8ec5..05fdb85 100755 --- a/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java +++ b/src/main/java/com/jsl/oa/config/shiro/ShiroConfiguration.java @@ -30,6 +30,7 @@ public class ShiroConfiguration { filterChainDefinitionMap.put("/unauthorized", "anon"); // 未授权接口允许匿名访问 filterChainDefinitionMap.put("/", "anon"); // 首页允许匿名访问 filterChainDefinitionMap.put("/info/header-image/get", "anon"); // 信息接口允许匿名访问 + filterChainDefinitionMap.put("/info/header-user/get", "anon"); // 信息接口允许匿名访问 filterChainDefinitionMap.put("/**/**", "authc"); // 其他接口一律拦截(需要Token) shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); diff --git a/src/main/java/com/jsl/oa/controllers/AuthController.java b/src/main/java/com/jsl/oa/controllers/AuthController.java index 2d74160..84364b6 100755 --- a/src/main/java/com/jsl/oa/controllers/AuthController.java +++ b/src/main/java/com/jsl/oa/controllers/AuthController.java @@ -10,6 +10,7 @@ import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; @@ -33,6 +34,7 @@ import java.util.regex.Pattern; * @see ResultUtil * @since v1.0.0 */ +@Slf4j @RestController @RequiredArgsConstructor public class AuthController { @@ -49,6 +51,7 @@ public class AuthController { */ @PostMapping("/auth/register") public BaseResponse authRegister(@RequestBody @Validated UserRegisterVO userRegisterVO, @NotNull BindingResult bindingResult) { + log.info("请求接口[POST]: /auth/register"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); @@ -69,6 +72,7 @@ public class AuthController { */ @PostMapping("/auth/login") public BaseResponse authLogin(@RequestBody @Validated UserLoginVO userLoginVO, @NotNull BindingResult bindingResult) { + log.info("请求接口[POST]: /auth/login"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); @@ -88,6 +92,7 @@ public class AuthController { */ @GetMapping("/auth/email/code") public BaseResponse authSendEmailCode(@RequestParam String email) { + log.info("请求接口[GET]: /auth/email/code"); if (email != null) { if (Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) { return authService.authLoginSendEmailCode(email); @@ -101,6 +106,7 @@ public class AuthController { @GetMapping("/auth/login/email") public BaseResponse authLoginByEmail(@RequestParam String email, @RequestParam String code) { + log.info("请求接口[GET]: /auth/login/email"); if (email != null && code != null && !email.isEmpty() && !code.isEmpty()) { System.out.println("测试"); if (Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", email)) { @@ -128,11 +134,14 @@ public class AuthController { */ @GetMapping("/auth/logout") public BaseResponse authLogout(HttpServletRequest request) { + log.info("请求接口[GET]: /auth/logout"); return authService.authLogout(request); } @PutMapping("/auth/password") public BaseResponse authChangePassword(@RequestBody @Validated UserChangePasswordVO userChangePasswordVO, HttpServletRequest request, @NotNull BindingResult bindingResult) { + log.info("请求接口[PUT]: /auth/password"); + // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } @@ -141,6 +150,8 @@ public class AuthController { @PutMapping("auth/password/forget") public BaseResponse authForgetPassword(@RequestBody @Validated UserForgetPasswordVO userForgetPasswordVO, @NotNull BindingResult bindingResult) { + log.info("请求接口[PUT]: /auth/password/forget"); + // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } diff --git a/src/main/java/com/jsl/oa/controllers/InfoController.java b/src/main/java/com/jsl/oa/controllers/InfoController.java index d393964..89a9d01 100755 --- a/src/main/java/com/jsl/oa/controllers/InfoController.java +++ b/src/main/java/com/jsl/oa/controllers/InfoController.java @@ -75,7 +75,7 @@ public class InfoController { } @GetMapping("info/header-user/get") - public BaseResponse infoGetHeaderUser(@RequestParam String order,@RequestParam String orderBy,HttpServletRequest request){ + public BaseResponse infoGetHeaderUser(@RequestParam(required = false) String order,@RequestParam(required = false) String orderBy,HttpServletRequest request){ log.info("请求接口[GET]: /info/header-user/get"); return infoService.getHeaderUser(request,order,orderBy); } diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java index 26590a1..2bedc20 100755 --- a/src/main/java/com/jsl/oa/controllers/PermissionController.java +++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java @@ -1,7 +1,6 @@ package com.jsl.oa.controllers; import com.jsl.oa.model.voData.PermissionEditVo; -import com.jsl.oa.model.voData.UserEditVo; import com.jsl.oa.services.PermissionService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 514de4a..73711cb 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -11,7 +11,6 @@ import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -44,7 +43,7 @@ public class RoleController { * @return {@link BaseResponse} */ @GetMapping("/role/get") - public BaseResponse roleGet(HttpServletRequest request, @RequestParam @Nullable String id) { + public BaseResponse roleGet(HttpServletRequest request, @RequestParam(required = false) String id) { log.info("请求接口[GET]: /role/get"); return roleService.roleGet(request, id); } diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index 9a05b00..4e69d3a 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -3,13 +3,14 @@ package com.jsl.oa.controllers; import com.jsl.oa.model.voData.UserAddVo; import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; -import com.jsl.oa.model.voData.UserEditVo; +import com.jsl.oa.model.voData.UserEditVO; import com.jsl.oa.services.UserService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.lang.Nullable; import org.springframework.validation.BindingResult; @@ -30,6 +31,7 @@ import java.util.regex.Pattern; * @see UserEditProfileVO * @since v1.0.0 */ +@Slf4j @RestController @RequiredArgsConstructor public class UserController { @@ -95,10 +97,6 @@ public class UserController { */ @GetMapping("/user/current") public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) { - // 判断是否有参数错误 - if (id == null && username == null && email == null && phone == null) { - return ResultUtil.error(ErrorCode.PARAMETER_ERROR); - } // 检查数据是否有问题 ArrayList arrayForError = new ArrayList<>(); if (id != null && !id.isEmpty()) { @@ -165,12 +163,13 @@ public class UserController { @PutMapping("/user/edit") - public BaseResponse userEdit(@RequestBody @Validated UserEditVo userEditVo, BindingResult bindingResult, HttpServletRequest request) { + public BaseResponse userEdit(@RequestBody @Validated UserEditVO userEditVO, BindingResult bindingResult, HttpServletRequest request) { + log.info("请求接口[PUT]: /user/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } - return userService.userEdit(userEditVo,request); + return userService.userEdit(userEditVO,request); } diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java index 50c2894..99a172d 100644 --- a/src/main/java/com/jsl/oa/dao/RoleDAO.java +++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java @@ -13,8 +13,8 @@ import java.util.List; public class RoleDAO { public final RoleMapper roleMapper; - public void roleAddUser(Long uid,Long rid) { - roleMapper.roleAddUser(uid,rid); + public void roleAddUser(Long uid, Long rid) { + roleMapper.roleAddUser(uid, rid); } public void roleRemoveUser(Long uid) { @@ -35,7 +35,9 @@ public class RoleDAO { return roleMapper.getRole(); } - public void roleAdd(RoleDO roleDO) { roleMapper.roleAdd(roleDO);} + public void roleAdd(RoleDO roleDO) { + roleMapper.roleAdd(roleDO); + } public boolean roleEdit(RoleDO getRole) { return roleMapper.roleEdit(getRole); @@ -45,12 +47,12 @@ public class RoleDAO { return roleMapper.roleDelete(id); } - public boolean isExistRoleByRoleName(String roleName){ + public boolean isExistRoleByRoleName(String roleName) { RoleDO roleDO = roleMapper.getRoleByRoleName(roleName); return roleDO != null; } public boolean roleChangeUser(Long uid, Long rid) { - return roleMapper.roleChangeUser(uid,rid); + return roleMapper.roleChangeUser(uid, rid); } } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index 741d8c5..3f0aebe 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -7,15 +7,20 @@ 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; 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; +@Slf4j @Component @RequiredArgsConstructor public class UserDAO { @@ -50,9 +55,7 @@ public class UserDAO { * @return */ public Boolean isExistUser(Long id) { - if (userMapper.getUserById(id) == null) { - return false; - } else return true; + return userMapper.getUserById(id) != null; } /** @@ -77,15 +80,23 @@ public class UserDAO { userMapper.userEditProfile(userEditProfileVO); } - public List userCurrentAll(UserAllCurrentVO userAllCurrentVO) { - List userCurrentDO = userMapper.getAllUser(userAllCurrentVO); - return this.userCurrentAll(userCurrentDO); + public List userCurrentAll(UserAllCurrentVO userAllCurrentVO) { + List userCurrentDO = userMapper.getAllUser(userAllCurrentVO); + List userCurrentDOList = new ArrayList<>(); + userCurrentDO.forEach(it -> { + userCurrentDOList.add(Processing.ReturnUserInfo(it, roleMapper)); + }); + return userCurrentDOList; } - public List userCurrentAllLike(UserAllCurrentVO userAllCurrentVO) { - List userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO); - return this.userCurrentAll(userCurrentDO); + public List userCurrentAllLike(UserAllCurrentVO userAllCurrentVO) { + List userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO); + List userCurrentDOList = new ArrayList<>(); + userCurrentDO.forEach(it -> { + userCurrentDOList.add(Processing.ReturnUserInfo(it, roleMapper)); + }); + return userCurrentDOList; } @Contract("_ -> param1") @@ -172,6 +183,7 @@ public class UserDAO { } public void userEdit(UserDO userDO) { + log.info("> 执行 DAO 层 userEdit 方法"); userMapper.updateUser(userDO); } @@ -207,6 +219,7 @@ public class UserDAO { * @Param userId **/ public UserDO getUserById(Long userId) { + log.info("> 执行 DAO 层 getUserById 方法"); return userMapper.getUserById(userId); } @@ -241,4 +254,12 @@ public class UserDAO { public List getRecommendUser(){ return userMapper.getRecommendUser(); } + + public UserDO getUserByEmail(String email) { + return userMapper.getUserByEmail(email); + } + + public UserDO getUserByPhone(String phone) { + return userMapper.getUserByPhone(phone); + } } diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 8a78c25..27cc4cb 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -1,6 +1,5 @@ package com.jsl.oa.mapper; -import com.jsl.oa.dao.UserDAO; import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.UserCurrentDO; @@ -52,14 +51,14 @@ public interface UserMapper { boolean updateUserPassword(Long id, String newPassword); @Select("SELECT * FROM organize_oa.oa_user ORDER BY `id` DESC LIMIT #{page},#{limit}") - List getAllUser(UserAllCurrentVO userAllCurrentVO); + List getAllUser(UserAllCurrentVO userAllCurrentVO); @Select("SELECT * FROM organize_oa.oa_user " + "WHERE username LIKE CONCAT('%',#{search},'%') " + "OR email LIKE CONCAT('%',#{search},'%') " + "OR phone LIKE CONCAT('%',#{search},'%') " + "ORDER BY `id` LIMIT #{page},#{limit}") - List getAllUserBySearch(UserAllCurrentVO userAllCurrentVO); + List getAllUserBySearch(UserAllCurrentVO userAllCurrentVO); @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{uid}") UserCurrentDO getUserCurrentById(Long uid); @@ -92,4 +91,9 @@ public interface UserMapper { void updateUser(UserDO userDO); + @Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}") + UserDO getUserByEmail(String email); + + @Select("SELECT * FROM organize_oa.oa_user WHERE phone = #{phone}") + UserDO getUserByPhone(String phone); } diff --git a/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java b/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java new file mode 100755 index 0000000..b390892 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/UserCurrentBackVO.java @@ -0,0 +1,54 @@ +package com.jsl.oa.model.voData; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.sql.Timestamp; +import java.util.List; + +/** + *

用户注册成功UserDO自定义实体类

+ *
+ * 用于处理用户注册表单输出的数据 + * + * @author 筱锋xiao_lfeng + * @version v1.1.0 + * @since v1.1.0 + */ +@Data +@Accessors(chain = true) +public class UserCurrentBackVO { + private ReturnUser user; + private ReturnUserRole role; + private List permission; + + @Data + @Accessors(chain = true) + public static class ReturnUserRole { + private Long rid; + } + + @Data + @Accessors(chain = true) + public static class ReturnUser { + 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 Timestamp createdAt; + private Timestamp updatedAt; + } +} diff --git a/src/main/java/com/jsl/oa/model/voData/UserReturnBackVO.java b/src/main/java/com/jsl/oa/model/voData/UserReturnBackVO.java index 82eeb41..11bf01f 100755 --- a/src/main/java/com/jsl/oa/model/voData/UserReturnBackVO.java +++ b/src/main/java/com/jsl/oa/model/voData/UserReturnBackVO.java @@ -1,10 +1,10 @@ package com.jsl.oa.model.voData; -import com.jsl.oa.model.doData.RoleUserDO; -import lombok.Getter; -import lombok.Setter; +import lombok.Data; import lombok.experimental.Accessors; +import java.util.List; + /** *

用户注册成功UserDO自定义实体类

*
@@ -14,17 +14,27 @@ import lombok.experimental.Accessors; * @version v1.1.0 * @since v1.1.0 */ -@Getter -@Setter +@Data @Accessors(chain = true) public class UserReturnBackVO { - private String jobId; - private String username; - private String address; - private String phone; - private String email; - private Short age; - private Short sex; + private ReturnUser user; + private ReturnUserRole role; private String token; - private RoleUserDO role; + private List permission; + + @Data + @Accessors(chain = true) + public static class ReturnUserRole { + private Long rid; + } + + @Data + @Accessors(chain = true) + public static class ReturnUser { + private Long id; + private String jobId; + private String username; + private String phone; + private String email; + } } diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java index 6078082..054b667 100755 --- a/src/main/java/com/jsl/oa/services/UserService.java +++ b/src/main/java/com/jsl/oa/services/UserService.java @@ -4,7 +4,7 @@ import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.voData.UserAddVo; import com.jsl.oa.model.voData.UserAllCurrentVO; import com.jsl.oa.model.voData.UserEditProfileVO; -import com.jsl.oa.model.voData.UserEditVo; +import com.jsl.oa.model.voData.UserEditVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -86,7 +86,7 @@ public interface UserService { BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request); - BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request); + BaseResponse userEdit(UserEditVO userEditVo, HttpServletRequest request); BaseResponse userProfileGet(HttpServletRequest request); diff --git a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java index 2135a66..2952f8a 100755 --- a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java @@ -12,12 +12,14 @@ import com.jsl.oa.utils.*; import com.jsl.oa.utils.redis.EmailRedisUtil; import com.jsl.oa.utils.redis.TokenRedisUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.mindrot.jbcrypt.BCrypt; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.regex.Pattern; /** @@ -29,6 +31,7 @@ import java.util.regex.Pattern; * @see AuthService * @since v1.0.0 */ +@Slf4j @Service @RequiredArgsConstructor public class AuthServiceImpl implements AuthService { @@ -78,15 +81,19 @@ public class AuthServiceImpl implements AuthService { UserDO userDO; if (Pattern.matches("^[0-9A-Za-z_]{3,40}$", userLoginVO.getUser())) { // 是否为用户名 + log.info("userLogin: 用户名登陆"); userDO = userMapper.getUserInfoByUsername(userLoginVO.getUser()); } else 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}$", userLoginVO.getUser())) { // 是否为手机号 + log.info("userLogin: 手机号登陆"); userDO = userMapper.getUserInfoByPhone(userLoginVO.getUser()); } else if (Pattern.matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", userLoginVO.getUser())) { // 是否为邮箱 + log.info("userLogin: 邮箱登陆"); return ResultUtil.error(ErrorCode.EMAIL_LOGIN_NOT_SUPPORT); } else { // 工号 + log.info("userLogin: 工号登陆"); userDO = userMapper.getUserByJobId(userLoginVO.getUser()); } if (userDO != null) { @@ -236,15 +243,16 @@ public class AuthServiceImpl implements AuthService { } else { getUserRole.setUid(null); } - userReturnBackVO.setAddress(userDO.getAddress()) - .setAge(userDO.getAge()) - .setEmail(userDO.getEmail()) - .setJobId(userDO.getJobId()) - .setPhone(userDO.getPhone()) - .setSex(userDO.getSex()) - .setUsername(userDO.getUsername()) + userReturnBackVO.setUser(new UserReturnBackVO.ReturnUser() + .setId(userDO.getId()) + .setJobId(userDO.getJobId()) + .setUsername(userDO.getUsername()) + .setEmail(userDO.getEmail()) + .setPhone(userDO.getPhone())) + .setRole(new UserReturnBackVO.ReturnUserRole() + .setRid(getUserRole.getRid())) .setToken(token) - .setRole(getUserRole); + .setPermission(new ArrayList<>()); return ResultUtil.success("登陆成功", userReturnBackVO); } } diff --git a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java index 0fff309..a8471fe 100644 --- a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java @@ -3,7 +3,6 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.InfoDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.RoleMapper; -import com.jsl.oa.model.doData.UserCurrentDO; import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.info.CarouselDO; import com.jsl.oa.model.voData.UserProfileVo; @@ -144,31 +143,31 @@ public class InfoServiceImpl implements InfoService { @Override public BaseResponse getHeaderUser(HttpServletRequest request, String order, String orderBy) { - // 用户权限校验 - if (!Processing.checkUserIsAdmin(request, roleMapper)) { - return ResultUtil.error(ErrorCode.NOT_ADMIN); + // 默认无参数情况 + if (order == null) { + order = "asc"; + } + if (orderBy == null) { + orderBy = "userId"; } // 检查参数是否错误 - if( !(order.equals("asc")||order.equals("desc")) || !(orderBy.equals("userName")||orderBy.equals("userId")) ){ + if (!(order.equals("asc") || order.equals("desc")) || !(orderBy.equals("userName") || orderBy.equals("userId"))) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR); } //获取用户信息 List userDOS = userDAO.getRecommendUser(); //进行排序 - userDOS = Processing.orderUser(userDOS,order,orderBy); + Processing.orderUser(userDOS, order, orderBy); //封装VO类 List userProfileVos = new ArrayList<>(); - for(UserDO userDO :userDOS){ + for (UserDO userDO : userDOS) { UserProfileVo userProfileVo = new UserProfileVo(); - Processing.copyProperties(userDO,userProfileVo); + Processing.copyProperties(userDO, userProfileVo); userProfileVo.setSex(Processing.getSex(userDO.getSex())); userProfileVos.add(userProfileVo); } - - return ResultUtil.success(userProfileVos); } - } diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java index dcac7b6..04977b5 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -6,20 +6,17 @@ import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.UserDO; -import com.jsl.oa.model.doData.info.CarouselDO; import com.jsl.oa.model.doData.info.ProjectShowDO; import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.business.info.ProjectShowVO; import com.jsl.oa.services.ProjectService; -import com.jsl.oa.services.UserService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; import java.sql.Timestamp; @@ -42,7 +39,7 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse projectEdit(ProjectInfoVO projectEdit) { + public BaseResponse projectEdit(@NotNull ProjectInfoVO projectEdit) { //判断项目是否存在 if(projectDAO.isExistProject(projectEdit.getId())) { projectDAO.projectEdit(projectEdit); diff --git a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java index 838eebf..c3a645b 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -7,7 +7,10 @@ import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.services.RoleService; -import com.jsl.oa.utils.*; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -40,22 +43,21 @@ public class RoleServiceImpl implements RoleService { @Override public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) { - //检测用户是否存在 - if(!userDAO.isExistUser(uid)){ + if (!userDAO.isExistUser(uid)) { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); } //检测要改变的用户权限是否为自己 - String token = request.getHeader("Authorization").replace("Bearer ", ""); - if(uid == JwtUtil.getUserId(token)){ + if (uid.equals(Processing.getAuthHeaderToUserId(request))) { return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES); } //检测用户权限是否为管理员 if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { - if (!roleDAO.roleChangeUser(uid, rid)) { - return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR); + if (roleDAO.roleChangeUser(uid, rid)) { + return ResultUtil.success(); + } else { + return ResultUtil.error(ErrorCode.PLEASE_ASSIGN_ROLE_TO_USER); } - return ResultUtil.success(); } else return ResultUtil.error(ErrorCode.NOT_ADMIN); } @@ -125,7 +127,6 @@ public class RoleServiceImpl implements RoleService { } else { return ResultUtil.error(ErrorCode.ROLE_NOT_FOUNDED); } - } @Override @@ -145,9 +146,6 @@ public class RoleServiceImpl implements RoleService { } //向数据库中插入数据 roleDAO.roleAdd(roleDO); - return ResultUtil.success(); } - - } 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 801dde3..bb275c8 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -2,13 +2,15 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.RoleMapper; -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.*; import com.jsl.oa.services.UserService; -import com.jsl.oa.utils.*; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.mindrot.jbcrypt.BCrypt; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; +@Slf4j @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { @@ -80,7 +83,7 @@ public class UserServiceImpl implements UserService { userAllCurrentVO.setPage((userAllCurrentVO.getPage() - 1) * userAllCurrentVO.getLimit()); } // 检查是否处于模糊查询 - List userAllCurrentVOList; + List userAllCurrentVOList; if (userAllCurrentVO.getSearch() != null && !userAllCurrentVO.getSearch().isEmpty()) { if (Pattern.matches("^[0-9A-Za-z_@]+$", userAllCurrentVO.getSearch())) { userAllCurrentVOList = userDAO.userCurrentAllLike(userAllCurrentVO); @@ -101,39 +104,46 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone) { - // 检查是否是管理员用户 - if (!Processing.checkUserIsAdmin(request, roleMapper)) { - return ResultUtil.error(ErrorCode.NOT_ADMIN); - } - // 根据顺序优先级进行用户信息获取 - UserCurrentDO userCurrentDO = null; - if (id != null && !id.isEmpty()) { - userCurrentDO = userDAO.userCurrentById(Long.valueOf(id)); - } else if (username != null && !username.isEmpty()) { - userCurrentDO = userDAO.userCurrentByUsername(username); - } else if (email != null && !email.isEmpty()) { - userCurrentDO = userDAO.userCurrentByEmail(email); - } else if (phone != null && !phone.isEmpty()) { - userCurrentDO = userDAO.userCurrentByPhone(phone); - } - // 返回结果 - if (userCurrentDO != null) { - return ResultUtil.success(userCurrentDO); + if (id == null && username == null && email == null && phone == null) { + // Token获取信息 + UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); + if (userDO != null) { + return ResultUtil.success(Processing.ReturnUserInfo(userDO, roleMapper)); + } else { + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } } else { - return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + // 检查是否是管理员用户 + if (!Processing.checkUserIsAdmin(request, roleMapper)) { + return ResultUtil.error(ErrorCode.NOT_ADMIN); + } + // 根据顺序优先级进行用户信息获取 + UserDO userDO = null; + if (id != null && !id.isEmpty()) { + userDO = userDAO.getUserById(Long.valueOf(id)); + } else if (username != null && !username.isEmpty()) { + userDO = userDAO.getUserInfoByUsername(username); + } else if (email != null && !email.isEmpty()) { + userDO = userDAO.getUserByEmail(email); + } else if (phone != null && !phone.isEmpty()) { + userDO = userDAO.getUserByPhone(phone); + } + // 返回结果 + if (userDO != null) { + return ResultUtil.success(Processing.ReturnUserInfo(userDO, roleMapper)); + } else { + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } } } @Override public BaseResponse userAdd(UserAddVo userAddVo, HttpServletRequest request) { - - //检测用户是否为管理员 - BaseResponse checkManagerResult = isManager(request); - if (checkManagerResult.getCode() != 200) { - return checkManagerResult; + // 检测用户是否为管理员 + if (!Processing.checkUserIsAdmin(request, roleMapper)) { + return ResultUtil.error(ErrorCode.NOT_ADMIN); } - //如果用户不重复,添加用户 if (!userDAO.isRepeatUser(userAddVo.getUsername())) { // 生成工号 @@ -164,22 +174,32 @@ public class UserServiceImpl implements UserService { @Override - public BaseResponse userEdit(UserEditVo userEditVo, HttpServletRequest request) { - //检测用户是否为管理员 - BaseResponse checkManagerResult = isManager(request); - if (checkManagerResult.getCode() != 200) { - return checkManagerResult; + public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) { + log.info("> 执行 Service 层 userEdit 方法"); + // 检测用户是否为管理员 + if (!Processing.checkUserIsAdmin(request, roleMapper)) { + return ResultUtil.error(ErrorCode.NOT_ADMIN); } - //根据id获取用户信息 - UserDO userDO = userDAO.getUserById(userEditVo.getId()); + UserDO userDO = userDAO.getUserById(userEditVO.getId()); if (userDO == null) { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); } - //修改非空属性 - Processing.copyProperties(userEditVo, userDO); - + userDO.setAddress(userEditVO.getAddress()) + .setPhone(userEditVO.getPhone()) + .setEmail(userEditVO.getEmail()) + .setAge(userEditVO.getAge()) + .setSex(userEditVO.getSex()) + .setSignature(userEditVO.getSignature()) + .setAvatar(userEditVO.getAvatar()) + .setNickname(userEditVO.getNickname()) + .setDescription(userEditVO.getDescription()) + .setEnabled(userEditVO.getEnabled()) + .setAccountNoExpired(userEditVO.getIsExpired()) + .setCredentialsNoExpired(userEditVO.getPasswordExpired()) + .setRecommend(userEditVO.getRecommend()) + .setAccountNoLocked(userEditVO.getIsLocked()); //向数据库中修改属性 userDAO.userEdit(userDO); @@ -195,29 +215,4 @@ public class UserServiceImpl implements UserService { userProfileVo.setSex(Processing.getSex(userDO.getSex())); return ResultUtil.success(userProfileVo); } - - - /** - * @Description: 判断用户是否为管理员 - * @Date: 2024/1/18 - * @Param request: 请求头 - **/ - public BaseResponse isManager(HttpServletRequest request) { - //获取token - String originalAuthorization = request.getHeader("Authorization"); - String token = originalAuthorization.replace("Bearer ", ""); - //获取操作用户的权限 - RoleUserDO roleUserDO = userDAO.getRoleFromUser(JwtUtil.getUserId(token)); - //用户权限不为空 - if (roleUserDO == null) { - return ResultUtil.error(ErrorCode.USER_ROLE_NOT_EXIST); - } - //用户权限应为管理员 - if (!userDAO.isManagerByRoleId(roleUserDO.getRid())) { - return ResultUtil.error(ErrorCode.USER_ROLE_NOT_MANAGER); - } - return ResultUtil.success(); - } - - } diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index ab409c5..e5f63eb 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -25,6 +25,7 @@ public enum ErrorCode { NOT_ADMIN("NotAdmin", 40302, "不是管理员"), EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40303, "请使用邮箱登陆"), PASSWORD_NOT_SAME("PasswordNotSame", 40304, "两次密码不一致"), + PLEASE_ASSIGN_ROLE_TO_USER("PleaseAssignRoleToUser", 40305, "请为用户添加角色"), 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 a0170c3..951785f 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -7,7 +7,7 @@ import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.voData.PermissionContentVo; -import com.jsl.oa.model.voData.UserProfileVo; +import com.jsl.oa.model.voData.UserCurrentBackVO; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.validation.BindingResult; @@ -15,6 +15,7 @@ import org.springframework.validation.ObjectError; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; +import java.sql.Timestamp; import java.util.*; /** @@ -166,8 +167,7 @@ public class Processing { public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleMapper roleMapper) { RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO != null) { - //默认主键为1的用户为管理员 - RoleDO roleDO = roleMapper.getRoleById(Long.valueOf(1)); + RoleDO roleDO = roleMapper.getRoleByRoleName("admin"); return roleUserDO.getRid().equals(roleDO.getId()); } else { return false; @@ -247,6 +247,50 @@ public class Processing { return " "; } + /** + *

封装返回内容

+ *
+ * 封装返回内容 + * + * @param userDO 用户信息 + * @return {@link BaseResponse} + */ + public static @NotNull UserCurrentBackVO ReturnUserInfo(@NotNull UserDO userDO, RoleMapper roleMapper) { + UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); + // 获取用户角色 + RoleUserDO getUserRole = roleMapper.getRoleUserByUid(userDO.getId()); + if (getUserRole == null) { + getUserRole = new RoleUserDO(); + getUserRole.setRid(0L) + .setCreatedAt(new Timestamp(System.currentTimeMillis())); + } else { + getUserRole.setUid(null); + } + userCurrentBackVO.setUser(new UserCurrentBackVO.ReturnUser() + .setId(userDO.getId()) + .setJobId(userDO.getJobId()) + .setUsername(userDO.getUsername()) + .setAddress(userDO.getAddress()) + .setPhone(userDO.getPhone()) + .setEmail(userDO.getEmail()) + .setAge(userDO.getAge()) + .setSignature(userDO.getSignature()) + .setAvatar(userDO.getAvatar()) + .setNickname(userDO.getNickname()) + .setSex(userDO.getSex()) + .setEnabled(userDO.getEnabled()) + .setAccountNoExpired(userDO.getAccountNoExpired()) + .setCredentialsNoExpired(userDO.getCredentialsNoExpired()) + .setRecommend(userDO.getRecommend()) + .setAccountNoLocked(userDO.getAccountNoLocked()) + .setDescription(userDO.getDescription()) + .setCreatedAt(userDO.getCreatedAt()) + .setUpdatedAt(userDO.getUpdatedAt())) + .setRole(new UserCurrentBackVO.ReturnUserRole() + .setRid(getUserRole.getRid())) + .setPermission(new ArrayList<>()); + return userCurrentBackVO; + } public static List orderUser(List userDOS,String order,String orderBy){ diff --git a/src/main/java/com/jsl/oa/utils/ResultUtil.java b/src/main/java/com/jsl/oa/utils/ResultUtil.java index 90a0cd5..b562d68 100755 --- a/src/main/java/com/jsl/oa/utils/ResultUtil.java +++ b/src/main/java/com/jsl/oa/utils/ResultUtil.java @@ -34,24 +34,24 @@ public class ResultUtil { @Contract("_ -> new") public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode) { - log.warn("失败: 错误码[" + errorCode.getCode() + "]: {} - {}", errorCode.getOutput(), errorCode.getMessage()); + log.warn("失败: 错误码[" + errorCode.getCode() + "] {} - {}", errorCode.getOutput(), errorCode.getMessage()); return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage()); } @Contract("_, _ -> new") public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode, Object data) { - log.warn("失败: 错误码[" + errorCode.getCode() + "]: {} - {}", errorCode.getOutput(), errorCode.getMessage()); + log.warn("失败: 错误码[" + errorCode.getCode() + "] {} - {}", errorCode.getOutput(), errorCode.getMessage()); return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage(), data); } @Contract(value = "_, _, _, _ -> new", pure = true) public static @NotNull BaseResponse error(String output, Integer code, String message, Object data) { - log.warn("失败: 错误码[" + code + "]: {} - {}", output, message); + log.warn("失败: 错误码[" + code + "] {} - {}", output, message); return new BaseResponse(output, code, message, data); } public static @NotNull ResponseEntity error(String output, Integer code, String message) { - log.warn("失败: 错误码[" + code + "]: {} - {}", output, message); + log.warn("失败: 错误码[" + code + "] {} - {}", output, message); return ResponseEntity.status(code) .body(new BaseResponse(output, code, message)); }