From 07cf979b42a7cdc52415e78030b0a112eec17415 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Sat, 20 Jan 2024 14:00:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3rolechangeUser=E6=BC=8F?= =?UTF-8?q?=E6=B4=9E=EF=BC=8C=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E6=8E=A8?= =?UTF-8?q?=E8=8D=90=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/OrganizeInternalOA-ConfigTableConfig.md | 18 ++++++++++ .../com/jsl/oa/config/MailConfiguration.java | 2 ++ .../jsl/oa/controllers/InfoController.java | 6 ++++ .../oa/controllers/PermissionController.java | 5 +++ .../jsl/oa/controllers/RoleController.java | 13 ++++++++ .../jsl/oa/controllers/UserController.java | 3 ++ src/main/java/com/jsl/oa/dao/UserDAO.java | 5 +++ .../com/jsl/oa/mapper/PermissionMapper.java | 4 +++ .../java/com/jsl/oa/mapper/UserMapper.java | 4 +++ .../oa/model/voData/PermissionContentVo.java | 18 ++++++++++ .../{UserProfile.java => UserProfileVo.java} | 6 ++-- .../java/com/jsl/oa/services/InfoService.java | 2 ++ .../jsl/oa/services/PermissionService.java | 2 ++ .../jsl/oa/services/impl/InfoServiceImpl.java | 33 +++++++++++++++++++ .../services/impl/PermissionServiceImpl.java | 11 +++++++ .../jsl/oa/services/impl/RoleServiceImpl.java | 21 ++++++++---- .../jsl/oa/services/impl/UserServiceImpl.java | 8 ++--- src/main/java/com/jsl/oa/utils/ErrorCode.java | 1 + .../java/com/jsl/oa/utils/Processing.java | 32 ++++++++++++++++-- 19 files changed, 177 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java rename src/main/java/com/jsl/oa/model/voData/{UserProfile.java => UserProfileVo.java} (66%) diff --git a/doc/OrganizeInternalOA-ConfigTableConfig.md b/doc/OrganizeInternalOA-ConfigTableConfig.md index ddac9bd..42e78b3 100755 --- a/doc/OrganizeInternalOA-ConfigTableConfig.md +++ b/doc/OrganizeInternalOA-ConfigTableConfig.md @@ -93,3 +93,21 @@ id为主键(不管),团队成员信息定义value:organize_user_info, 6. `created_at`: 创建时间 7. `updated_at`: 修改时间 8. `autohr`: 填写作者 + + +## 新闻信息展示 +1. `order`: 展示顺序,可选值[asc|desc] +2. `data`: 数据内容 + 1. `display_order`:展示顺序 + 2. `title`: 新闻标题 + 3. `content`: 新闻内容 + 4. `tags`: 标签 + 5. `likes`: 点赞数 + 6. `comments`: 评论数 + 7. `status`: 新闻状态 + 8. `is_active`: 是否展示[true|false] + 9. `created_at` : 创建时间 + 10. `updated_at` : 更新时间 + 11. `author`: 作者名称 + + diff --git a/src/main/java/com/jsl/oa/config/MailConfiguration.java b/src/main/java/com/jsl/oa/config/MailConfiguration.java index 432255f..5ae66b2 100755 --- a/src/main/java/com/jsl/oa/config/MailConfiguration.java +++ b/src/main/java/com/jsl/oa/config/MailConfiguration.java @@ -44,4 +44,6 @@ public class MailConfiguration { return mailSender; } + + } diff --git a/src/main/java/com/jsl/oa/controllers/InfoController.java b/src/main/java/com/jsl/oa/controllers/InfoController.java index d002dcc..d393964 100755 --- a/src/main/java/com/jsl/oa/controllers/InfoController.java +++ b/src/main/java/com/jsl/oa/controllers/InfoController.java @@ -73,4 +73,10 @@ public class InfoController { log.info("请求接口[PUT]: /info/header-image/edit-setting"); return infoService.editSettingHeaderImage(request, showType); } + + @GetMapping("info/header-user/get") + public BaseResponse infoGetHeaderUser(@RequestParam String order,@RequestParam 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 3dd0cfd..4d84f24 100755 --- a/src/main/java/com/jsl/oa/controllers/PermissionController.java +++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java @@ -31,4 +31,9 @@ public class PermissionController { } else return permissionService.permissionUser(request,uid); } + @GetMapping("/permission/get") + public BaseResponse permissionGet(HttpServletRequest request){ + return permissionService.permissionGet(request); + } + } diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 1ad7ee8..078f84c 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -142,6 +142,13 @@ public class RoleController { } + /** + * @Description: TODO 改变用户角色权限信息 + * @Date: 2024/1/20 + * @Param request: + * @Param uid: 用户id + * @Param rid: 角色id + **/ @PutMapping("role/user/change") public BaseResponse roleChangeUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) { log.info("请求接口[POST]: /role/user/change"); @@ -151,4 +158,10 @@ public class RoleController { } return roleService.roleChangeUser(request, uid, rid); } + + + + + + } diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index 80894eb..f506a87 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -178,4 +178,7 @@ public class UserController { public BaseResponse userProfileGet(HttpServletRequest request) { return userService.userProfileGet(request); } + + + } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index 9e772b9..741d8c5 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -236,4 +236,9 @@ public class UserDAO { } return false; } + + + public List getRecommendUser(){ + return userMapper.getRecommendUser(); + } } diff --git a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java index 90d246b..633cb1b 100644 --- a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java +++ b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java @@ -1,5 +1,6 @@ package com.jsl.oa.mapper; +import com.jsl.oa.model.doData.PermissionDO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -16,4 +17,7 @@ public interface PermissionMapper { "from organize_oa.oa_role_permissions where rid=" + "(select rid from organize_oa.oa_role_user where uid=#{uid}) )") List permissionUser(Long uid); + + @Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}") + PermissionDO permissionGetById(Long id); } diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 043bc5c..8a78c25 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -1,5 +1,6 @@ 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; @@ -79,6 +80,8 @@ public interface UserMapper { @Select("SELECT * FROM organize_oa.oa_role WHERE id = #{roleId}") RoleDO getRoleById(Long roleId); + @Select("SELECT * FROM organize_oa.oa_user WHERE recommend = 1") + List getRecommendUser(); @Update("UPDATE organize_oa.oa_user " + @@ -86,6 +89,7 @@ public interface UserMapper { "signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " + "description = #{description} " + "WHERE id = #{id}") + void updateUser(UserDO userDO); } diff --git a/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java b/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java new file mode 100644 index 0000000..f11895f --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/PermissionContentVo.java @@ -0,0 +1,18 @@ +package com.jsl.oa.model.voData; + +import lombok.Data; +import java.util.List; + +@Data +public class PermissionContentVo { + + private Long id; + private Long pid; + private String name; + private String code; + private Short type; + private List children; + +} + + diff --git a/src/main/java/com/jsl/oa/model/voData/UserProfile.java b/src/main/java/com/jsl/oa/model/voData/UserProfileVo.java similarity index 66% rename from src/main/java/com/jsl/oa/model/voData/UserProfile.java rename to src/main/java/com/jsl/oa/model/voData/UserProfileVo.java index a664f90..213e68b 100644 --- a/src/main/java/com/jsl/oa/model/voData/UserProfile.java +++ b/src/main/java/com/jsl/oa/model/voData/UserProfileVo.java @@ -1,14 +1,12 @@ package com.jsl.oa.model.voData; -import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; -import lombok.Value; -import org.springframework.boot.context.properties.bind.DefaultValue; @Data -public class UserProfile { +public class UserProfileVo { + private Long id; private String username; private String address; private String phone; diff --git a/src/main/java/com/jsl/oa/services/InfoService.java b/src/main/java/com/jsl/oa/services/InfoService.java index 6c293cf..83b7003 100644 --- a/src/main/java/com/jsl/oa/services/InfoService.java +++ b/src/main/java/com/jsl/oa/services/InfoService.java @@ -67,4 +67,6 @@ public interface InfoService { * @return {@link BaseResponse} */ BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType); + + BaseResponse getHeaderUser(HttpServletRequest request, String order, String orderBy); } diff --git a/src/main/java/com/jsl/oa/services/PermissionService.java b/src/main/java/com/jsl/oa/services/PermissionService.java index 7a60f82..f1073da 100644 --- a/src/main/java/com/jsl/oa/services/PermissionService.java +++ b/src/main/java/com/jsl/oa/services/PermissionService.java @@ -9,4 +9,6 @@ public interface PermissionService { BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid); BaseResponse permissionUser(HttpServletRequest request, Long uid); + + BaseResponse permissionGet(HttpServletRequest request); } 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 42d6937..0fff309 100644 --- a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java @@ -3,8 +3,10 @@ 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; import com.jsl.oa.model.voData.business.info.CarouselVO; import com.jsl.oa.services.InfoService; import com.jsl.oa.utils.BaseResponse; @@ -18,6 +20,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.List; @Slf4j @Service @@ -138,4 +141,34 @@ public class InfoServiceImpl implements InfoService { return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR); } } + + @Override + public BaseResponse getHeaderUser(HttpServletRequest request, String order, String orderBy) { + // 用户权限校验 + if (!Processing.checkUserIsAdmin(request, roleMapper)) { + return ResultUtil.error(ErrorCode.NOT_ADMIN); + } + // 检查参数是否错误 + 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); + //封装VO类 + List userProfileVos = new ArrayList<>(); + for(UserDO userDO :userDOS){ + UserProfileVo userProfileVo = new 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/PermissionServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java index 69aad24..25775e6 100644 --- a/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/PermissionServiceImpl.java @@ -39,4 +39,15 @@ public class PermissionServiceImpl implements PermissionService { } return ResultUtil.error(ErrorCode.USER_NOT_EXIST); } + +// 开发中 + @Override + public BaseResponse permissionGet(HttpServletRequest request) { + if(!Processing.checkUserIsAdmin(request,roleMapper)){ + return ResultUtil.error(ErrorCode.NOT_ADMIN); + } + return null; + } + + } 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 129dbfa..838eebf 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -1,15 +1,13 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.RoleDAO; +import com.jsl.oa.dao.UserDAO; import com.jsl.oa.exception.ClassCopyException; 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.BaseResponse; -import com.jsl.oa.utils.ErrorCode; -import com.jsl.oa.utils.Processing; -import com.jsl.oa.utils.ResultUtil; +import com.jsl.oa.utils.*; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,6 +20,7 @@ import java.util.regex.Pattern; public class RoleServiceImpl implements RoleService { private final RoleDAO roleDAO; + private final UserDAO userDAO; @Override public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) { @@ -41,10 +40,18 @@ public class RoleServiceImpl implements RoleService { @Override public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) { + + //检测用户是否存在 + if(!userDAO.isExistUser(uid)){ + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } + //检测要改变的用户权限是否为自己 + String token = request.getHeader("Authorization").replace("Bearer ", ""); + if(uid == JwtUtil.getUserId(token)){ + return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES); + } + //检测用户权限是否为管理员 if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { - // TODO: 2023-01-20|List:10002-未判断用户是否存在 - // TODO: 2023-01-20|List:10003-保险起见,默认用户主键为 1 的用户为超级管理员 - // (不可以修改自己权限组,避免修改后不存在管理员,无管理组) if (!roleDAO.roleChangeUser(uid, rid)) { return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR); } 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 b471a46..454700c 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -190,10 +190,10 @@ public class UserServiceImpl implements UserService { public BaseResponse userProfileGet(HttpServletRequest request) { // 获取用户Id UserDO userDO = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)); - UserProfile userProfile = new UserProfile(); - Processing.copyProperties(userDO, userProfile); - userProfile.setSex(Processing.getSex(userDO.getSex())); - return ResultUtil.success(userProfile); + UserProfileVo userProfileVo = new UserProfileVo(); + Processing.copyProperties(userDO, userProfileVo); + userProfileVo.setSex(Processing.getSex(userDO.getSex())); + return ResultUtil.success(userProfileVo); } diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index ae17315..6fe2e49 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -14,6 +14,7 @@ public enum ErrorCode { USER_NOT_EXIST("UserNotExist", 40015, "用户不存在"), USER_ROLE_NOT_EXIST("UserRoleNotExist", 40016, "用户权限不存在"), USER_ROLE_NOT_MANAGER("UserRoleNotExist", 40017, "用户权限非管理员权限"), + USER_NOT_CHANGE_TO_THEMSELVES("UserNotChangeToThemselves", 40018, "用户不能改变自己的权限"), UNAUTHORIZED("Unauthorized", 40100, "未授权"), TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"), VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"), diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index a18f5ec..1ec50b5 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -4,6 +4,8 @@ import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.mapper.RoleMapper; 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.UserProfileVo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.validation.BindingResult; @@ -12,6 +14,8 @@ import org.springframework.validation.ObjectError; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import java.util.Random; /** @@ -163,7 +167,8 @@ public class Processing { public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleMapper roleMapper) { RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO != null) { - RoleDO roleDO = roleMapper.getRoleByRoleName("admin"); + //默认主键为1的用户为管理员 + RoleDO roleDO = roleMapper.getRoleById(Long.valueOf(1)); return roleUserDO.getRid().equals(roleDO.getId()); } else { return false; @@ -225,10 +230,10 @@ public class Processing { return null; } + /** * @Description: TODO 将性别转为字符形式 * @Date: 2024/1/18 - **/ public static String getSex(short sex){ if(sex == 0){ @@ -244,4 +249,27 @@ public class Processing { } + public static List orderUser(List userDOS,String order,String orderBy){ + + Comparator comparator = null; + + if (order.equals("asc")) { + if (orderBy.equals("userName")) { + comparator = Comparator.comparing(UserDO::getUsername); + } else if (orderBy.equals("userId")) { + comparator = Comparator.comparingLong(UserDO::getId); + } + } else if (order.equals("desc")) { + if (orderBy.equals("userName")) { + comparator = Comparator.comparing(UserDO::getUsername).reversed(); + } else if (orderBy.equals("userId")) { + comparator = Comparator.comparingLong(UserDO::getId).reversed(); + } + } + + userDOS.sort(comparator); + return userDOS; + } + + }