From fb5a8c06f62f975c444fed9dbbf761e511c7b67c Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Wed, 10 Apr 2024 10:34:55 +0800 Subject: [PATCH 01/34] =?UTF-8?q?feat:=20=E4=BB=A3=E7=A0=81=E9=A3=8E?= =?UTF-8?q?=E6=A0=BC=E8=A7=84=E7=BA=A6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsl/oa/aspect/AnnotationsAspect.java | 7 +- .../jsl/oa/controllers/AuthController.java | 2 +- .../jsl/oa/controllers/ProjectController.java | 8 +- .../jsl/oa/controllers/UserController.java | 2 +- .../java/com/jsl/oa/dao/PermissionDAO.java | 39 ++----- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 5 +- src/main/java/com/jsl/oa/dao/UserDAO.java | 101 ++++++------------ .../jsl/oa/exception/ProcessException.java | 8 +- .../java/com/jsl/oa/mapper/ModuleMapper.java | 5 +- .../com/jsl/oa/mapper/PermissionMapper.java | 10 +- .../java/com/jsl/oa/mapper/ProjectMapper.java | 37 ++++--- .../java/com/jsl/oa/mapper/UserMapper.java | 18 ++-- .../com/jsl/oa/model/dodata/PageBeanDO.java | 1 + .../jsl/oa/model/vodata/UserRegisterVO.java | 6 +- .../java/com/jsl/oa/services/UserService.java | 12 +-- .../jsl/oa/services/impl/UserServiceImpl.java | 36 ++++--- .../java/com/jsl/oa/utils/Processing.java | 51 +++++++-- 17 files changed, 164 insertions(+), 184 deletions(-) diff --git a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java index 8cbbae6..9356fd2 100644 --- a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java +++ b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java @@ -4,7 +4,6 @@ import com.jsl.oa.annotations.CheckUserAbleToUse; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; -import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.RoleDO; import com.jsl.oa.model.dodata.RoleUserDO; @@ -45,7 +44,7 @@ import java.util.Objects; @RequiredArgsConstructor public class AnnotationsAspect { private final RoleDAO roleDAO; - private final UserDAO userDAO; + private final UserMapper userMapper; private final PermissionDAO permissionDAO; /** @@ -79,7 +78,7 @@ public class AnnotationsAspect { Long userId = Processing.getAuthHeaderToUserId(request); if (userId != null) { // 检查用户是否允许继续执行 - BaseResponse checkUserAbleToNext = checkUserAbleToNext(userId, userDAO.userMapper); + BaseResponse checkUserAbleToNext = checkUserAbleToNext(userId, userMapper); if (checkUserAbleToNext != null) { return checkUserAbleToNext; } else { @@ -128,7 +127,7 @@ public class AnnotationsAspect { // 获取用户信息 Long userId = Processing.getAuthHeaderToUserId(request); - UserDO userDO = userDAO.userMapper.getUserById(userId); + UserDO userDO = userMapper.getUserById(userId); // 用户不存在 if (userDO == null) { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); diff --git a/src/main/java/com/jsl/oa/controllers/AuthController.java b/src/main/java/com/jsl/oa/controllers/AuthController.java index 8300945..c26aa60 100755 --- a/src/main/java/com/jsl/oa/controllers/AuthController.java +++ b/src/main/java/com/jsl/oa/controllers/AuthController.java @@ -178,7 +178,7 @@ public class AuthController { if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } - return authService.authChangePassword(request, userChangePasswordVO); + return authService.authChangePassword(userChangePasswordVO, request); } /** diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 1e537f4..7167cc6 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -274,8 +274,12 @@ public class ProjectController { } @PutMapping("/project/cut/user/to") - public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, @RequestParam Long oldUid - , @RequestParam Long pid, @RequestParam Long newUid) { + public BaseResponse projectToOtherUserForCutting( + HttpServletRequest request, + @RequestParam Long oldUid, + @RequestParam Long pid, + @RequestParam Long newUid + ) { log.info("请求接口[Put]: /project/cut/user/to"); // 判断是否有参数错误 if (oldUid == null || pid == null || newUid == null) { diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index c53b4f7..de4b659 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -124,7 +124,7 @@ public class UserController { } } // 检查是否出现错误 - return userService.userCurrent(request, id, username, email, phone); + return userService.userCurrent(id, username, email, phone, request); } /** diff --git a/src/main/java/com/jsl/oa/dao/PermissionDAO.java b/src/main/java/com/jsl/oa/dao/PermissionDAO.java index b1b4bf3..5fcf88e 100644 --- a/src/main/java/com/jsl/oa/dao/PermissionDAO.java +++ b/src/main/java/com/jsl/oa/dao/PermissionDAO.java @@ -52,7 +52,8 @@ public class PermissionDAO { roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440); } else { log.info("\t\t> 从 Redis 获取数据"); - getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken>() {}.getType()); + getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken>() { + }.getType()); } return getPermissionForString; } @@ -68,37 +69,14 @@ public class PermissionDAO { getPermissionForString = new ArrayList<>(); forPermissionToBuildString(permissionList, getPermissionForString); // 存入 Redis - roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "string", gson.toJson(getPermissionForString), 1440); + roleRedisUtil + .setData(BusinessConstants.ALL_PERMISSION, "string", gson.toJson(getPermissionForString), 1440); } else { log.info("\t\t> 从 Redis 获取数据"); - getPermissionForString = gson.fromJson(getRedisData, new TypeToken>() {}.getType()); - } - return getPermissionForString; - } - - public List getRootPermission() { - log.info("\t> 执行 DAO 层 PermissionDAO.getRootPermission 方法"); - String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "all"); - if (getRedisData == null) { - log.info("\t\t> 从 MySQL 获取数据"); - List permissionList = permissionMapper.getAllPermission(); - if (!permissionList.isEmpty()) { - List getPermissionList = new ArrayList<>(); - for (PermissionDO permission : permissionList) { - if (permission.getPid() == null) { - getPermissionList.add(permission); - } - } - roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "all", gson.toJson(getPermissionList), 1440); - return getPermissionList; - } else { - return null; - } - } else { - log.info("\t\t> 从 Redis 获取数据"); - return gson.fromJson(getRedisData, new TypeToken>() { + getPermissionForString = gson.fromJson(getRedisData, new TypeToken>() { }.getType()); } + return getPermissionForString; } /** @@ -109,7 +87,10 @@ public class PermissionDAO { * @param permissionList 权限信息 * @param getPermissionForString 存储权限信息 */ - private void forPermissionToBuildString(@NotNull List permissionList, List getPermissionForString) { + private void forPermissionToBuildString( + @NotNull List permissionList, + List getPermissionForString + ) { for (PermissionDO permission : permissionList) { // 寻找是否存在父亲 StringBuilder permissionString = new StringBuilder(); diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 1c24af8..d13cb73 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -101,12 +101,13 @@ public class ProjectDAO { log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法"); for (int i = 0; i < projectShowDO.getData().size(); i++) { for (int j = 0; j < projectShowDO.getData().size(); j++) { + ProjectShowDO.DataDO dataDO = projectShowDO.getData().get(i); if ("desc".equals(projectShowDO.getOrder())) { - if (projectShowDO.getData().get(i).getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) { + if (dataDO.getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) { Collections.swap(projectShowDO.getData(), i, j); } } else { - if (projectShowDO.getData().get(i).getDisplayOrder() < projectShowDO.getData().get(j).getDisplayOrder()) { + if (dataDO.getDisplayOrder() < projectShowDO.getData().get(j).getDisplayOrder()) { Collections.swap(projectShowDO.getData(), i, j); } } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index cecf804..dd16fc5 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -3,8 +3,6 @@ package com.jsl.oa.dao; import com.google.gson.Gson; import com.jsl.oa.common.constant.BusinessConstants; 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.UserDO; import com.jsl.oa.model.vodata.UserAllCurrentVO; import com.jsl.oa.model.vodata.UserCurrentBackVO; @@ -25,16 +23,16 @@ import java.util.List; * 用于用户的增删改查,以及用户权限的获取,用户信息的获取,用户信息的修改,用户信息的删除,用户信息的锁定,用户信息的解锁,用户信息的添加,用户信息的 * 编辑等 * + * @author xiao_lfeng | 176yunxuan | xiangZr-hhh * @version v1.1.0 * @since v1.1.0 - * @author xiao_lfeng | 176yunxuan | xiangZr-hhh */ @Slf4j @Component @RequiredArgsConstructor public class UserDAO { - public final UserMapper userMapper; + private final UserMapper userMapper; private final RoleDAO roleDAO; private final PermissionDAO permissionDAO; private final Gson gson; @@ -51,13 +49,11 @@ public class UserDAO { */ public UserDO getUserInfoByUsername(String username) { log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法"); - UserDO userDO = null; + UserDO userDO; // 从 Redis 获取数据 // TODO: 10000-Redis: 从 Redis 获取数据 // 从数据库获取用户信息 - if (userDO == null) { - userDO = userMapper.getUserInfoByUsername(username); - } + userDO = userMapper.getUserInfoByUsername(username); return userDO; } @@ -116,12 +112,12 @@ public class UserDAO { /** * 用户账号锁定 * - * @param id + * @param id 用户id */ - public void userLock(Long id,Long isLock) { + public void userLock(Long id, Long isLock) { log.info("\t> 执行 DAO 层 UserDAO.userLock 方法"); log.info("\t\t> 从 MySQL 获取数据"); - userMapper.userLock(id,isLock); + userMapper.userLock(id, isLock); } public void userEditProfile(UserEditProfileVO userEditProfileVO) { @@ -136,7 +132,7 @@ public class UserDAO { List userCurrentDO = userMapper.getAllUser(userAllCurrentVO); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) - .setCount(userMapper.getUsersCount()); + .setCount(userMapper.getUsersCount()); userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; @@ -148,17 +144,17 @@ public class UserDAO { List userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) - .setCount(userMapper.getUsersCount()); + .setCount(userMapper.getUsersCount()); userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; } /** - * @return - * @Description 用户添加 - * @Date: 2024/1/16 - * @Param userDO: user 数据库表实体类 + * Adds a new user to the database. + * + * @param userDO The UserDO object containing the user's information. + * @return True if the user is successfully added, false otherwise. */ public boolean userAdd(UserDO userDO) { log.info("\t> 执行 DAO 层 userAdd 方法"); @@ -172,12 +168,14 @@ public class UserDAO { userMapper.updateUser(userDO); } - /** - * @Description 根据username检测用户是否重复 - * @Date: 2024/1/16 - * @Param username: 用户名 - **/ + *

用户名获取用户信息

+ *
+ * 根据用户名获取用户信息 + * + * @param username 用户名 + * @return {@link UserDO} + */ public Boolean isRepeatUser(String username) { log.info("\t> 执行 DAO 层 isRepeatUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -186,22 +184,21 @@ public class UserDAO { /** - * @Description 检测用户工号是否重复 - * @Date 2024/1/18 - * @Param userNum: - **/ + * 通过用户编号获取用户信息 + * + * @param userNum 用户编号 + * @return UserDO + */ public Boolean isRepeatUserNum(String userNum) { - if (userMapper.getUserByUserNum(userNum) != null) { - return true; - } - return false; + return userMapper.getUserByUserNum(userNum) != null; } /** - * @Description 根据用户id获取用户数据 - * @Date 2024/1/17 - * @Param userId - **/ + * 通过 Id 获取用户信息 + * + * @param userId 用户id + * @return UserDO + */ public UserDO getUserById(Long userId) { log.info("\t> 执行 DAO 层 getUserById 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -209,35 +206,7 @@ public class UserDAO { } - /** - * @Description 根据用户id查询对应用户权限 - * @Date 2024/1/18 - * @Param uid:用户id - **/ - public RoleUserDO getRoleFromUser(Long uid) { - log.info("\t> 执行 DAO 层 getRoleFromUser 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return userMapper.getRoleIdByUserId(uid); - } - - - /** - * @Description 检验用户权限是否为管理员 - * @Date 2024/1/18 - * @Param null:用户id - **/ - public Boolean isManagerByRoleId(Long roleId) { - log.info("\t> 执行 DAO 层 isManagerByRoleId 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - RoleDO role = userMapper.getRoleById(roleId); - if (role == null) { - return false; - } - return "admin".equals(role.getRoleName()); - } - - - public List getRecommendUser(){ + public List getRecommendUser() { log.info("\t> 执行 DAO 层 getRecommendUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); return userMapper.getRecommendUser(); @@ -254,10 +223,4 @@ public class UserDAO { log.info("\t\t> 从 MySQL 获取数据"); return userMapper.getUserByPhone(phone); } - - public Long getUsersCount() { - log.info("\t> 执行 DAO 层 getUsersCount 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return userMapper.getUsersCount(); - } } diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java index bf35028..750482e 100755 --- a/src/main/java/com/jsl/oa/exception/ProcessException.java +++ b/src/main/java/com/jsl/oa/exception/ProcessException.java @@ -53,7 +53,9 @@ public class ProcessException { } @ExceptionHandler(value = MissingServletRequestParameterException.class) - public ResponseEntity businessMissingServletRequestParameterException(MissingServletRequestParameterException e) { + public ResponseEntity businessMissingServletRequestParameterException( + MissingServletRequestParameterException e + ) { log.error(e.getMessage(), e); return ResponseEntity .status(400) @@ -97,7 +99,9 @@ public class ProcessException { * @return {@link ResponseEntity} */ @ExceptionHandler(value = MethodArgumentTypeMismatchException.class) - public ResponseEntity businessMethodArgumentTypeMismatchException(@NotNull MethodArgumentTypeMismatchException e) { + public ResponseEntity businessMethodArgumentTypeMismatchException( + @NotNull MethodArgumentTypeMismatchException e + ) { log.error(e.getMessage(), e); return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误"); } diff --git a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java index ae8caf6..a0c013b 100644 --- a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java @@ -11,10 +11,9 @@ import java.util.List; public interface ModuleMapper { + List getByProjectId(Integer projectId, Long userId, int is); - List getByProjectId(Integer projectId, Long userId,int is); - - List getBySysId(Integer sysId, Long userId,int is); + List getBySysId(Integer sysId, Long userId, int is); @Select("select principal_id from organize_oa.oa_project where id=#{projectId}") Long getPidByProjectid(Integer projectId); diff --git a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java index fd8604c..78027d1 100644 --- a/src/main/java/com/jsl/oa/mapper/PermissionMapper.java +++ b/src/main/java/com/jsl/oa/mapper/PermissionMapper.java @@ -12,9 +12,9 @@ public interface PermissionMapper { @Insert("INSERT INTO organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})") void permissionAdd(Long rid, Long pid); - @Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN " + - "(SELECT pid FROM organize_oa.oa_role_permissions WHERE rid IN " + - "(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))") + @Select("SELECT * FROM organize_oa.oa_permissions WHERE id IN " + + "(SELECT pid FROM organize_oa.oa_role_permissions WHERE rid IN " + + "(SELECT rid FROM organize_oa.oa_role_user WHERE uid = #{uid}))") List permissionUserPid(Long uid); @Select("SELECT * FROM organize_oa.oa_permissions where id=#{id}") @@ -26,8 +26,8 @@ public interface PermissionMapper { @Select("SELECT * FROM organize_oa.oa_permissions") List getAllPermission(); - @Update("UPDATE organize_oa.oa_permissions SET pid = #{pid}, name = #{name}, code = #{code}, " + - "type = #{type} WHERE id = #{id}") + @Update("UPDATE organize_oa.oa_permissions SET pid = #{pid}, name = #{name}, code = #{code}, " + + "type = #{type} WHERE id = #{id}") boolean updatePermission(PermissionDO permissionDO); @Delete("DELETE FROM organize_oa.oa_permissions where id=#{pid}") diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 5ba62c1..0c1bb5b 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -17,17 +17,17 @@ import java.util.List; @Mapper public interface ProjectMapper { - @Insert("insert into organize_oa.oa_project " + - "(name, description, principal_id, cycle,file,complete_time," + - "deadline,status,is_finish,tags,work_load) " + - "value (#{name},#{description},#{principalId},#{cycle},#{file}" + - ",#{completeTime},#{deadline},#{status},#{isFinish},#{tags},#{workLoad})") + @Insert("insert into organize_oa.oa_project " + + "(name, description, principal_id, cycle,file,complete_time," + + "deadline,status,is_finish,tags,work_load) " + + "value (#{name},#{description},#{principalId},#{cycle},#{file}" + + ",#{completeTime},#{deadline},#{status},#{isFinish},#{tags},#{workLoad})") void projectAdd(ProjectInfoVO projectAdd); - @Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id," + - " work_load, description, cycle, complete_time, type, is_finish,status) " + - "value (#{projectId},#{pid},#{name},#{principalId},#{workLoad}," + - "#{description},#{cycle},#{completeTime},#{type},#{isFinish},#{status})") + @Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id," + + " work_load, description, cycle, complete_time, type, is_finish,status) " + + "value (#{projectId},#{pid},#{name},#{principalId},#{workLoad}," + + "#{description},#{cycle},#{completeTime},#{type},#{isFinish},#{status})") void projectWorkAdd(ProjectWorkVO projectWorkVO); void projectEdit(ProjectDO projectEdit); @@ -51,13 +51,12 @@ public interface ProjectMapper { @Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())") void insertProjectShow(); - @Update("UPDATE organize_oa.oa_config SET data = #{setProjectShow}, updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'") + @Update("UPDATE organize_oa.oa_config" + + " SET data = #{setProjectShow}, updated_at = CURRENT_TIMESTAMP " + + " WHERE value = 'project_show'" + ) boolean setProjectShow(String setProjectShow); - //@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" + - //"like concat('%',#{tags},'%')") - - //@Select("select * from organize_oa.oa_project where is_finish=#{isFinish} and is_delete=false and principal_id=#{userId}") List getByIsfinish(Long userId, List isFinish); List getByTags(Long userId, List tags, List isFinish); @@ -74,13 +73,13 @@ public interface ProjectMapper { @Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}") boolean deleteProject(Long id); - @Insert("INSERT INTO organize_oa.oa_project_cutting (pid, name, tag, real_time) " + - "VALUES (#{pid}, #{name}, #{tag}, #{realTime})") + @Insert("INSERT INTO organize_oa.oa_project_cutting (pid, name, tag, real_time) " + + "VALUES (#{pid}, #{name}, #{tag}, #{realTime})") void projectCuttingAdd(ProjectCuttingDO projectCuttingDO); - @Update("UPDATE organize_oa.oa_project_cutting SET name = #{name}, " + - "tag = #{tag}, engineering = #{engineering}, estimated_time = #{estimatedTime}, " + - "real_time = #{realTime}, updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") + @Update("UPDATE organize_oa.oa_project_cutting SET name = #{name}, " + + "tag = #{tag}, engineering = #{engineering}, estimated_time = #{estimatedTime}, " + + "real_time = #{realTime}, updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") boolean projectCuttingUpdate(ProjectCuttingDO projectCuttingDO); @Select("SELECT * FROM organize_oa.oa_project_cutting WHERE id = #{id}") diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index c5913ab..29fdcbf 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -29,16 +29,16 @@ public interface UserMapper { @Select("SELECT * FROM organize_oa.oa_user WHERE job_id = #{jobId}") UserDO getUserByUserNum(String jobId); - @Insert("INSERT INTO organize_oa.oa_user " + - "(job_id, username, password, address, phone, email, age, sex) " + - "VALUES (#{jobId}, #{username}, #{password}, #{address}, #{phone}, #{email}, #{age}, #{sex})") + @Insert("INSERT INTO organize_oa.oa_user " + + "(job_id, username, password, address, phone, email, age, sex) " + + "VALUES (#{jobId}, #{username}, #{password}, #{address}, #{phone}, #{email}, #{age}, #{sex})") boolean insertUser(UserDO userDO); @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} ") - void userLock(Long id,Long isLock); + void userLock(Long id, Long isLock); @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}") UserDO getUserById(Long id); @@ -60,11 +60,11 @@ public interface UserMapper { @Select("SELECT * FROM organize_oa.oa_user ORDER BY `id` DESC LIMIT #{page},#{limit}") 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}") + @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); @Select("SELECT * FROM organize_oa.oa_role_user WHERE uid = #{userId}") diff --git a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java index c114063..59fcda4 100644 --- a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java @@ -14,6 +14,7 @@ import java.util.List; * @since v1.1.0 * @version v1.1.0 * @author 176yunxuan + * @param 对类型的泛型处理 */ @Data @NoArgsConstructor diff --git a/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java b/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java index 949d0c1..5155d54 100755 --- a/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java @@ -27,8 +27,10 @@ public class UserRegisterVO { @NotBlank(message = "家乡不能为空") private String address; - @NotBlank(message = "电话不能为空") - @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 = "电话格式错误") + @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; @NotBlank(message = "邮箱不能为空") diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java index a370321..a403f9e 100755 --- a/src/main/java/com/jsl/oa/services/UserService.java +++ b/src/main/java/com/jsl/oa/services/UserService.java @@ -1,6 +1,5 @@ package com.jsl.oa.services; -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; @@ -18,15 +17,6 @@ import javax.servlet.http.HttpServletRequest; * @since v1.1.0 */ public interface UserService { - /** - *

根据用户名获取用户信息

- *
- * 该方法用于根据用户名获取用户信息 - * - * @param username 用户名 - * @return 用户信息 - */ - UserDO getUserInfoByUsername(String username); /** *

用户账号删除

@@ -81,7 +71,7 @@ public interface UserService { * @param phone 手机号 * @return {@link BaseResponse} */ - BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone); + BaseResponse userCurrent(String id, String username, String email, String phone, HttpServletRequest request); BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request); 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 050c9dc..ea05552 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.regex.Pattern; /** @@ -45,11 +46,6 @@ public class UserServiceImpl implements UserService { private final RoleDAO roleDAO; private final PermissionDAO permissionDAO; - @Override - public UserDO getUserInfoByUsername(String username) { - return userDAO.getUserInfoByUsername(username); - } - @Override public BaseResponse userDelete(HttpServletRequest request, Long id) { log.info("\t> 执行 Service 层 UserService.userDelete 方法"); @@ -80,7 +76,9 @@ public class UserServiceImpl implements UserService { if (userDAO.isExistUser(id)) { userDAO.userLock(id, isLock); return ResultUtil.success("更改成功"); - } else return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } else { + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } } @Override @@ -131,7 +129,13 @@ public class UserServiceImpl implements UserService { @Override @CheckUserAbleToUse - public BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone) { + public BaseResponse userCurrent( + String id, + String username, + String email, + String phone, + HttpServletRequest request + ) { log.info("\t> 执行 Service 层 UserService.userCurrent 方法"); if (id == null && username == null && email == null && phone == null) { // Token获取信息 @@ -150,13 +154,13 @@ public class UserServiceImpl implements UserService { if (!getPermission.contains("user.current")) { log.info("\t> 用户权限不足,检查是否是管理员"); // 检查用户是管理员 - RoleUserDO roleUserDO = roleDAO.roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); - if (roleUserDO != null) { - RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); - if (!roleUserDO.getRid().equals(roleDO.getId())) { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - } else { + RoleUserDO roleUserDO = roleDAO + .getRoleUserByUid(Objects.requireNonNull(Processing.getAuthHeaderToUserId(request))); + if (roleUserDO == null) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } + RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); + if (!roleUserDO.getRid().equals(roleDO.getId())) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } } @@ -216,7 +220,9 @@ public class UserServiceImpl implements UserService { } else { return ResultUtil.error(ErrorCode.DATABASE_INSERT_ERROR); } - } else return ResultUtil.error(ErrorCode.USER_EXIST); + } else { + return ResultUtil.error(ErrorCode.USER_EXIST); + } } diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 2ce83d2..a46d305 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -182,9 +182,9 @@ public class Processing { /** * 检查用户是否是老师 * - * @param request - * @param roleMapper - * @return + * @param request 请求 + * @param roleMapper RoleMapper + * @return 如果为 true 是老师,false 不是老师 */ public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) { RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); @@ -205,11 +205,16 @@ public class Processing { /** - * @Description: VO类与实体类属性赋值 - * @Date: 2024/1/18 - * @Param source: - * @Param dest: - **/ + * 将属性从源对象复制到目标对象。 + * + * @param 目标对象的类型。 + * @param 源对象的类型。 + * @param source 从中复制属性的源对象。 + * @param target 属性将复制到的目标对象。 + * @return 复制属性后的目标对象。 + * @throws ClassCopyException 如果在复制过程中出现错误。 + */ + @Contract(pure = true) public static T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { Class sourceClass = source.getClass(); Class targetClass = target.getClass(); @@ -279,7 +284,11 @@ public class Processing { * @param userDO 用户信息 * @return {@link BaseResponse} */ - public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo(@NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) { + public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo( + @NotNull UserDO userDO, + RoleDAO roleDAO, + PermissionDAO permissionDAO + ) { UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent(); // 获取用户角色 RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId()); @@ -299,7 +308,29 @@ public class Processing { // 获取权限列表信息 getPermissionForString = permissionDAO.getPermission(userDO.getId()); } - userCurrent.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()).setIsDelete(userDO.getIsDelete())).setRole(new UserCurrentBackVO.ReturnUserRole().setRid(getUserRole.getRid())).setPermission(getPermissionForString); + userCurrent.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()) + .setIsDelete(userDO.getIsDelete())) + .setRole(new UserCurrentBackVO.ReturnUserRole().setRid(getUserRole.getRid())) + .setPermission(getPermissionForString); return userCurrent; } -- 2.43.0 From 3ca0bed1e146d5a816b5be6abb212838a99c518c Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Wed, 10 Apr 2024 20:51:48 +0800 Subject: [PATCH 02/34] =?UTF-8?q?feat:=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/MessageController.java | 56 ++-- .../jsl/oa/controllers/ProjectController.java | 95 +----- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 52 +--- .../java/com/jsl/oa/mapper/MessageMapper.java | 17 +- .../java/com/jsl/oa/mapper/ProjectMapper.java | 21 +- .../com/jsl/oa/model/dodata/MessageDO.java | 3 +- .../com/jsl/oa/model/vodata/MessageAddVO.java | 18 ++ .../com/jsl/oa/model/vodata/MessageGetVO.java | 17 ++ .../com/jsl/oa/services/MessageService.java | 23 +- .../com/jsl/oa/services/ProjectService.java | 16 +- .../oa/services/impl/MessageServiceImpl.java | 274 ++++++++++++++---- .../oa/services/impl/ModuleServiceImpl.java | 1 - .../oa/services/impl/ProjectServiceImpl.java | 97 +------ 13 files changed, 336 insertions(+), 354 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/vodata/MessageAddVO.java create mode 100644 src/main/java/com/jsl/oa/model/vodata/MessageGetVO.java diff --git a/src/main/java/com/jsl/oa/controllers/MessageController.java b/src/main/java/com/jsl/oa/controllers/MessageController.java index bf8b3a8..d511a9f 100644 --- a/src/main/java/com/jsl/oa/controllers/MessageController.java +++ b/src/main/java/com/jsl/oa/controllers/MessageController.java @@ -1,5 +1,4 @@ package com.jsl.oa.controllers; - import com.jsl.oa.services.MessageService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -8,13 +7,10 @@ import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.time.LocalDate; +import java.time.LocalDateTime; /** *

消息控制器

@@ -59,11 +55,12 @@ public class MessageController { * @return 消息列表 */ @GetMapping("/message/get") - public BaseResponse messageGet(@RequestParam(defaultValue = "1") Long page, - @RequestParam(defaultValue = "10") Long pageSize, - HttpServletRequest request, - @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, - @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { + public BaseResponse messageGet( + @RequestParam(required = false, defaultValue = "1") Integer page, + @RequestParam(required = false, defaultValue = "10") Integer pageSize, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime begin, + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime end, + HttpServletRequest request) { log.info("请求接口[GET]:/message/get"); String token = request.getHeader("Authorization").replace("Bearer ", ""); Long uid = JwtUtil.getUserId(token); @@ -75,32 +72,23 @@ public class MessageController { } /** - * 获取所有消息列表 + * 指派时消息 * - * @param page 页码 - * @param pageSize 每页条数 - * @param request 请求对象 - * @param begin 开始日期 - * @param end 结束日期 - * @param uid 用户id - * @return 消息列表 + * @param request + * @return */ - @GetMapping("/message/get/all") - public BaseResponse messageGetAll(@RequestParam(defaultValue = "1") Long page, - @RequestParam(defaultValue = "10") Long pageSize, - HttpServletRequest request, - @RequestParam Long uid, - @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, - @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { - log.info("请求接口[GET]:/message/get/all"); - String token = request.getHeader("Authorization").replace("Bearer ", ""); - Long loginId = JwtUtil.getUserId(token); - if (loginId == null) { - return ResultUtil.error(ErrorCode.USER_NOT_EXIST); - } else { - return messageService.messageGetAll(request, begin, end, page, pageSize, loginId, uid); - } + @PostMapping("/message/assign") + public BaseResponse messageAssign( + @RequestParam Integer pId, + @RequestParam Integer systemId, + @RequestParam Integer moddleId, + @RequestParam Long uId, + @RequestParam Long isPass, + HttpServletRequest request) { + //messageService.messageAdd(pId, systemId, moddleId, uId, isPass, request); + return ResultUtil.success(); } + } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 7167cc6..91d555f 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -1,7 +1,4 @@ package com.jsl.oa.controllers; - -import com.jsl.oa.model.vodata.ProjectCuttingAddVO; -import com.jsl.oa.model.vodata.ProjectCuttingEditVO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectWorkVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; @@ -16,7 +13,6 @@ import org.jetbrains.annotations.NotNull; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; - import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -140,7 +136,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/header/add") - public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, HttpServletRequest request, @NotNull BindingResult bindingResult) { + public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, + HttpServletRequest request, + @NotNull BindingResult bindingResult) { log.info("请求接口[POST]: /project/header/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -160,7 +158,10 @@ public class ProjectController { * @return {@link BaseResponse} */ @PutMapping("/project/header/edit/{projectId}") - public BaseResponse projectEditById(@RequestParam Long projectId, HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult) { + public BaseResponse projectEditById(@RequestParam Long projectId, + @RequestBody @Validated ProjectEditVO projectEdit, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { log.info("请求接口[PUT]: /project/header/edit/{projectId}"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -177,7 +178,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/work/add") - public BaseResponse projectWorkAdd(HttpServletRequest request, @RequestBody @Validated ProjectWorkVO projectWorkVO, @NotNull BindingResult bindingResult) { + public BaseResponse projectWorkAdd(HttpServletRequest request, + @RequestBody @Validated ProjectWorkVO projectWorkVO, + @NotNull BindingResult bindingResult) { log.info("请求接口[POST]: /project/work/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -196,39 +199,6 @@ public class ProjectController { return projectService.projectPrincipalGet(); } - /** - * 用户获取所分到的项目模块 - * - * @param uid 用户 id - * @return {@link BaseResponse} - */ - @GetMapping("/project/cut/user") - public BaseResponse projectGetUserInCutting(@RequestParam Long uid) { - log.info("请求接口[GET]: /project/cut/user"); - // 判断是否有参数错误 - if (uid == null) { - return ResultUtil.error(ErrorCode.PARAMETER_ERROR); - } - return projectService.projectGetUserInCutting(uid); - } - - /** - * 给某用户分配项目模块 - * - * @param uid 用户 id - * @param pid 项目 id - * @return {@link BaseResponse} - */ - @PostMapping("/project/cut/user/add") - public BaseResponse projectAddUserForCutting(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long pid) { - log.info("请求接口[Post]: /project/cut/user/add"); - // 判断是否有参数错误 - if (uid == null || pid == null) { - return ResultUtil.error(ErrorCode.PARAMETER_ERROR); - } - return projectService.projectAddUserForCutting(request, uid, pid); - } - /** * 删除某项目记录 * @@ -244,51 +214,6 @@ public class ProjectController { return projectService.projectDelete(request, id); } - /** - * 项目轮播图 - * - * @param request 请求 - * @param projectCuttingAddVO 项目轮播图信息 - * @param bindingResult 参数校验 - * @return {@link BaseResponse} - */ - @PostMapping("/project/cut/add") - public BaseResponse projectCuttingAdd(HttpServletRequest request, @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, @NotNull BindingResult bindingResult) { - log.info("请求接口[Post]: /project/cut/add"); - // 判断是否有参数错误 - if (bindingResult.hasErrors()) { - return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); - } - return projectService.addProjectCutting(request, projectCuttingAddVO); - } - - - @PutMapping("/project/cut/edit") - public BaseResponse projectCuttingEdit(HttpServletRequest request, @RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO, @NotNull BindingResult bindingResult) { - log.info("请求接口[Put]: /project/cut/edit"); - // 判断是否有参数错误 - if (bindingResult.hasErrors()) { - return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); - } - return projectService.editProjectCutting(request, projectCuttingEditVO); - } - - @PutMapping("/project/cut/user/to") - public BaseResponse projectToOtherUserForCutting( - HttpServletRequest request, - @RequestParam Long oldUid, - @RequestParam Long pid, - @RequestParam Long newUid - ) { - log.info("请求接口[Put]: /project/cut/user/to"); - // 判断是否有参数错误 - if (oldUid == null || pid == null || newUid == null) { - return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); - } - return projectService.projectToOtherUserForCutting(request, oldUid, pid, newUid); - } - - @GetMapping("/project/file") public BaseResponse getProjectFile(HttpServletRequest request, @RequestParam Long projectId) { log.info("请求接口[Get]: /project/file"); diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index d13cb73..649964b 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -1,10 +1,7 @@ package com.jsl.oa.dao; - import com.google.gson.Gson; import com.jsl.oa.mapper.ProjectMapper; -import com.jsl.oa.model.dodata.ProjectCuttingDO; import com.jsl.oa.model.dodata.ProjectDO; -import com.jsl.oa.model.dodata.ProjectUserDO; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.vodata.ProjectEditVO; @@ -61,18 +58,6 @@ public class ProjectDAO { return projectMapper.getProjectById(id) != null; } - public List projectGetUserInCutting(Long uid) { - log.info("\t> 执行 DAO 层 ProjectDAO.projectGetUserInCutting 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.projectGetUserInCutting(uid); - } - - public void projectAddUserForCutting(Long uid, Long pid) { - log.info("\t> 执行 DAO 层 ProjectDAO.projectAddUserForCutting 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - projectMapper.projectAddUserInCutting(uid, pid); - } - public ProjectShowDO getHeader() { log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -150,7 +135,8 @@ public class ProjectDAO { } } - public List workget(Long userId, Integer listAll, List tags, List isFinish, Integer is) { + public List workget(Long userId, Integer listAll, + List tags, List isFinish, Integer is) { log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (tags != null && !tags.isEmpty()) { @@ -180,46 +166,12 @@ public class ProjectDAO { return projectMapper.deleteProject(id); } - public void projectCuttingAdd(ProjectCuttingDO projectCuttingDO) { - log.info("\t> 执行 DAO 层 ProjectDAO.projectCuttingAdd 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - projectMapper.projectCuttingAdd(projectCuttingDO); - } - public boolean isExistProjectById(Long id) { log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectById 方法"); log.info("\t\t> 从 MySQL 获取数据"); return projectMapper.getProjectById(id) != null; } - public boolean updateProjectCutting(ProjectCuttingDO projectCuttingDO) { - log.info("\t> 执行 DAO 层 ProjectDAO.updateProjectCutting 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.projectCuttingUpdate(projectCuttingDO); - } - - public boolean isExistProjectCutting(Long id) { - log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectCutting 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.getProjectCuttingById(id) != null; - } - - public boolean isExistProjectUser(Long pid, Long uid) { - log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectUse 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.getProjectUserByPidAndUid(pid, uid) != null; - } - - public boolean updateUserForProjectUserByPidAndUid(Long pid, Long oldUid, Long newUid) { - log.info("\t> 执行 DAO 层 ProjectDAO.updateUserForProjectUserByPidAndUid 方法"); - log.info("\t\t> 从 MySQL 获取数据"); - ProjectUserDO projectUserDO = projectMapper.getProjectUserByPidAndUid(pid, oldUid); - if (projectUserDO == null) { - return false; - } - log.info("\t\t> 从 MySQL 更新数据"); - return projectMapper.updateUserForProjectUser(newUid, projectUserDO.getId()); - } public boolean isPrincipalUser(Long uid, Long projectId) { log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法"); diff --git a/src/main/java/com/jsl/oa/mapper/MessageMapper.java b/src/main/java/com/jsl/oa/mapper/MessageMapper.java index 25896f9..be5fd13 100644 --- a/src/main/java/com/jsl/oa/mapper/MessageMapper.java +++ b/src/main/java/com/jsl/oa/mapper/MessageMapper.java @@ -1,11 +1,13 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.dodata.MessageDO; +import com.jsl.oa.model.vodata.MessageAddVO; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @@ -13,17 +15,18 @@ import java.util.List; public interface MessageMapper { @Update("UPDATE organize_oa.oa_message " - + "SET `read` = 1, deleted_at = CURRENT_TIMESTAMP " + + "SET `is_delete` = 1, deleted_at = CURRENT_TIMESTAMP " + "WHERE id = #{mid}") boolean deleteMessage(Long mid); @Select("SELECT * FROM organize_oa.oa_message where id = #{mid}") MessageDO getMessageById(Long mid); - @Select("select count(*) from organize_oa.oa_message where uid = #{uid}") - Long count(Long uid); + @Select("select * from organize_oa.oa_message where uid = #{uid} and is_delete = 0 " + + "and created_at between #{begin} and #{end}") + List page(LocalDateTime begin, LocalDateTime end, Long uid); - @Select("select * from organize_oa.oa_message where uid = #{uid}") - //and created_at between #{begin} and #{end} limit #{start},#{pageSize}") - List page(LocalDate begin, LocalDate end, Long uid, Long start, Long pageSize); + @Insert("insert into organize_oa.oa_message (uid, title, text, sid) " + + "values(#{uid},#{title},#{text},#{sid})") + void messageAdd(MessageAddVO messageAddVO); } diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 0c1bb5b..dc25d03 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -1,8 +1,6 @@ package com.jsl.oa.mapper; - import com.jsl.oa.model.dodata.ProjectCuttingDO; import com.jsl.oa.model.dodata.ProjectDO; -import com.jsl.oa.model.dodata.ProjectUserDO; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectWorkSimpleVO; @@ -73,26 +71,15 @@ public interface ProjectMapper { @Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}") boolean deleteProject(Long id); - @Insert("INSERT INTO organize_oa.oa_project_cutting (pid, name, tag, real_time) " - + "VALUES (#{pid}, #{name}, #{tag}, #{realTime})") - void projectCuttingAdd(ProjectCuttingDO projectCuttingDO); - @Update("UPDATE organize_oa.oa_project_cutting SET name = #{name}, " + "tag = #{tag}, engineering = #{engineering}, estimated_time = #{estimatedTime}, " + "real_time = #{realTime}, updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") boolean projectCuttingUpdate(ProjectCuttingDO projectCuttingDO); - - @Select("SELECT * FROM organize_oa.oa_project_cutting WHERE id = #{id}") - ProjectCuttingDO getProjectCuttingById(Long id); - - @Select("SELECT * FROM organize_oa.oa_project_user WHERE pid = #{pid} AND uid = #{uid}") - ProjectUserDO getProjectUserByPidAndUid(Long pid, Long uid); - @Update("UPDATE organize_oa.oa_project_user SET uid = #{uid} , updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") boolean updateUserForProjectUser(Long uid, Long id); - //@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}") + List workgetByIsfinish(Long userId, List isFinish, Integer is); List workgetByTags(Long userId, List tags, Integer is, List isFinish); @@ -122,4 +109,10 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project_work where id=#{id}") ProjectWorkDO getProjectWorkById(Long id); + + @Select("select principal_id from organize_oa.oa_project_work where project_id=#{id}") + List getMemberByProjectId(Integer id); + + @Select("select principal_id from organize_oa.oa_project_work where pid=#{id}") + List getMemberBySystemId(Integer id); } diff --git a/src/main/java/com/jsl/oa/model/dodata/MessageDO.java b/src/main/java/com/jsl/oa/model/dodata/MessageDO.java index 0921bd5..1be987a 100644 --- a/src/main/java/com/jsl/oa/model/dodata/MessageDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/MessageDO.java @@ -22,9 +22,10 @@ public class MessageDO { private Long id; private Long uid; + private Long sid; private String title; private String text; - private Short read; + private Integer isDelete; private Timestamp createdAt; private Timestamp deletedAt; diff --git a/src/main/java/com/jsl/oa/model/vodata/MessageAddVO.java b/src/main/java/com/jsl/oa/model/vodata/MessageAddVO.java new file mode 100644 index 0000000..a574a97 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/MessageAddVO.java @@ -0,0 +1,18 @@ +package com.jsl.oa.model.vodata; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.experimental.Accessors; + + +@Data +@Accessors(chain = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class MessageAddVO { + private String text; + private String title; + private Long uid; + private Long sid; + private String type; + private Integer toId; + +} diff --git a/src/main/java/com/jsl/oa/model/vodata/MessageGetVO.java b/src/main/java/com/jsl/oa/model/vodata/MessageGetVO.java new file mode 100644 index 0000000..d391bde --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/MessageGetVO.java @@ -0,0 +1,17 @@ +package com.jsl.oa.model.vodata; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.experimental.Accessors; +import java.sql.Timestamp; + +@Data +@Accessors(chain = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class MessageGetVO { + private String text; + private String title; + private Timestamp createdAt; + private String senderName; + +} diff --git a/src/main/java/com/jsl/oa/services/MessageService.java b/src/main/java/com/jsl/oa/services/MessageService.java index 944c35a..89c2910 100644 --- a/src/main/java/com/jsl/oa/services/MessageService.java +++ b/src/main/java/com/jsl/oa/services/MessageService.java @@ -3,7 +3,7 @@ package com.jsl.oa.services; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; -import java.time.LocalDate; +import java.time.LocalDateTime; /** *

消息服务接口

@@ -18,15 +18,16 @@ public interface MessageService { BaseResponse messageDelete(Long mid, HttpServletRequest request); - BaseResponse messageGet(LocalDate begin, LocalDate end, Long page, Long pageSize, Long uid); + BaseResponse messageGet( + LocalDateTime begin, + LocalDateTime end, + Integer page, + Integer pageSize, + Long uid); - BaseResponse messageGetAll( - HttpServletRequest request, - LocalDate begin, - LocalDate end, - Long page, - Long pageSize, - Long loginId, - Long uid - ); + void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, HttpServletRequest request); + void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, Long isPass, HttpServletRequest request); + void messageAdd(Integer pId, Integer type, Integer systemId, HttpServletRequest request); + void messageAdd(Integer pId, Integer systmeId, Integer moddleId, Integer type, HttpServletRequest request); + void messageAdd(Integer pId, Integer systemId, Integer moddleId); } diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 9915778..1dec679 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -12,10 +12,6 @@ public interface ProjectService { BaseResponse projectEdit(HttpServletRequest request, ProjectEditVO projectEdit, Long projectId); - BaseResponse projectGetUserInCutting(Long uid); - - BaseResponse projectAddUserForCutting(HttpServletRequest request, Long uid, Long pid); - BaseResponse getHeader(Integer id); BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO); @@ -24,19 +20,15 @@ public interface ProjectService { BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); - BaseResponse get(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer page, Integer pageSize); + BaseResponse get(Integer listAll, HttpServletRequest request, + List tags, List isFinish, Integer page, Integer pageSize); BaseResponse getByName(String name); BaseResponse projectDelete(HttpServletRequest request, List id); - BaseResponse addProjectCutting(HttpServletRequest request, ProjectCuttingAddVO projectCuttingAddVO); - - BaseResponse editProjectCutting(HttpServletRequest request, ProjectCuttingEditVO projectCuttingEditVO); - - BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid); - - BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize); + BaseResponse workget(Integer listAll, HttpServletRequest request, + List tags, List isFinish, Integer is, Integer page, Integer pageSize); BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index a387dab..e47d204 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -1,25 +1,21 @@ package com.jsl.oa.services.impl; - - import com.jsl.oa.annotations.CheckUserAbleToUse; -import com.jsl.oa.annotations.CheckUserHasPermission; +import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.MessageMapper; -import com.jsl.oa.mapper.RoleMapper; +import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.model.dodata.MessageDO; -import com.jsl.oa.model.dodata.PageBeanDO; +import com.jsl.oa.model.vodata.MessageAddVO; +import com.jsl.oa.model.vodata.MessageGetVO; import com.jsl.oa.services.MessageService; -import com.jsl.oa.utils.BaseResponse; -import com.jsl.oa.utils.ErrorCode; -import com.jsl.oa.utils.JwtUtil; -import com.jsl.oa.utils.ResultUtil; +import com.jsl.oa.utils.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; - import javax.servlet.http.HttpServletRequest; -import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; - +import static java.lang.System.*; /** *

消息服务层实现类

@@ -36,10 +32,11 @@ import java.util.List; public class MessageServiceImpl implements MessageService { private final MessageMapper messageMapper; - private final RoleMapper roleMapper; + private final UserDAO userDAO; + private final ProjectMapper projectMapper; @Override - @CheckUserHasPermission("message.delete") + @CheckUserAbleToUse public BaseResponse messageDelete(Long mid, HttpServletRequest request) { //获取消息数据 MessageDO messageDO = messageMapper.getMessageById(mid); @@ -55,55 +52,226 @@ public class MessageServiceImpl implements MessageService { return ResultUtil.success(); } + @SuppressWarnings("checkstyle:Regexp") @Override @CheckUserAbleToUse - public BaseResponse messageGet(LocalDate begin, LocalDate end, Long page, Long pageSize, Long uid) { - //1.记录总数据数 - Long count = messageMapper.count(uid); - - //2.获取分页数据列表 + public BaseResponse messageGet(LocalDateTime beginTime, + LocalDateTime endTime, + Integer page, + Integer pageSize, + Long uid) { //默认获取时间为最近30天 - if (begin == null) { - begin = LocalDate.now(); - end = begin.minusDays(30); + if (beginTime == null) { + endTime = LocalDateTime.now(); + beginTime = endTime.minusDays(30); } - Long start = (page - 1) * pageSize; - List empList = messageMapper.page(begin, end, uid, start, pageSize); - - //3.封装PageBean对象 - PageBeanDO pageBean = new PageBeanDO<>(count, empList); - return ResultUtil.success(pageBean); + List messageDOList = messageMapper.page(beginTime, endTime, uid); + //封装返回数据 + List messageGetVOList = new ArrayList<>(); + for (MessageDO messageDO : messageDOList) { + MessageGetVO messageGetVO1 = new MessageGetVO(); + messageGetVO1.setText(messageDO.getText()); + messageGetVO1.setTitle(messageDO.getTitle()); + messageGetVO1.setCreatedAt(messageDO.getCreatedAt()); + if (messageDO.getSid() != null) { + messageGetVO1.setSenderName(userDAO.getUserById(messageDO.getSid()).getUsername()); + } + messageGetVOList.add(messageGetVO1); + } + //分页返回 + int start = (page - 1) * pageSize; + int end = start + pageSize; + List pageData = messageGetVOList.subList(start, + Math.min(end, messageGetVOList.size())); + return ResultUtil.success(pageData); } + /** + * 添加指派消息 + * + * @param pId 项目id + * @param systemId 系统id + * @param moddleId 模块id + * @param uid 用户id + * @param request + */ @Override - @CheckUserHasPermission("message.get") - public BaseResponse messageGetAll( - HttpServletRequest request, - LocalDate begin, - LocalDate end, - Long page, - Long pageSize, - Long loginId, - Long uid - ) { - log.info("请求接口服务层"); - //1.记录总数据数 - Long count = messageMapper.count(uid); - - //2.获取分页数据列表 - //默认获取时间为最近30天 - if (begin == null) { - begin = LocalDate.now(); - end = begin.minusDays(30); + public void messageAdd( + Integer pId, + Integer systemId, + Integer moddleId, + Long uid, + HttpServletRequest request) { + // 拿到token,获取发送人id + String token = request.getHeader("Authorization").replace("Bearer ", ""); + Long sid = JwtUtil.getUserId(token); + // 获取发送人名字,项目名,子系统名,子模块名 + String senderName = userDAO.getUserById(sid).getUsername(); + String projectName = projectMapper.tgetProjectById(pId).getName(); + String systemName = projectMapper.getWorkById(systemId).getName(); + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setSid(sid); + messageAddVO.setUid(uid); + messageAddVO.setTitle("指派消息"); + if (moddleId == null) { + messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统给您"); + } else { + String moddleName = projectMapper.getWorkById(moddleId).getName(); + messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统的" + moddleName + "子模块给您"); } - Long start = (page - 1) * pageSize; - List messageDOList = messageMapper.page(begin, end, uid, start, pageSize); - - //3.封装PageBean对象 - PageBeanDO pageBean = new PageBeanDO<>(count, messageDOList); - return ResultUtil.success(pageBean); + messageAddVO.setType("跳转审批页"); + messageMapper.messageAdd(messageAddVO); } + /** + * 添加审批消息 + * + * @param pId 项目id + * @param systemId 系统id + * @param moddleId 模块id + * @param uid 用户id + * @param isPass 是否通过 1:通过 0:未通过 + * @param request + */ + @Override + public void messageAdd( + Integer pId, + Integer systemId, + Integer moddleId, + Long uid, + Long isPass, + HttpServletRequest request) { + // 获取发送人名字,项目名,子系统名,子模块名 + String projectName = projectMapper.tgetProjectById(pId).getName(); + String systemName = projectMapper.getWorkById(systemId).getName(); + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(uid); + messageAddVO.setTitle("审批消息"); + String moddleName = projectMapper.getWorkById(moddleId).getName(); + if (isPass == 1) { + messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人已通过"); + } else { + messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人未通过"); + } + messageAddVO.setType("消息详情"); + messageMapper.messageAdd(messageAddVO); + } + + /** + * 添加项目变动消息 + * @param pId 项目id + * @param type 类型 1:上传文档 2:修改状态 3:修改负责人 + * @param systemId 系统id + * @param request + */ + @Override + public void messageAdd( + Integer pId, + Integer type, + Integer systemId, + HttpServletRequest request) { + // 获取项目名,负责人名 + String projectName = projectMapper.tgetProjectById(pId).getName(); + String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); + String systemName = projectMapper.getWorkById(systemId).getName(); + // 添加消息 + // 1:上传文档 2:修改状态 3:修改负责人 + List uidList = projectMapper.getMemberByProjectId(pId); + for (Long uid : uidList) { + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(uid); + messageAddVO.setTitle("项目变动消息"); + if (type == 3) { + messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人"); + } else if (type == 2) { + messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态"); + } else if (type == 1) { + messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目"); + } + messageAddVO.setType("跳转项目页"); + messageAddVO.setToId(pId); + messageMapper.messageAdd(messageAddVO); + } + } + + /** + * 添加子系统变动消息 + * + * @param pId 项目id + * @param systmeId 系统id + * @param moddleId 模块id + * @param type 类型 1:删除模块 2:修改简介 3:修改周期 + * @param request + */ + @Override + public void messageAdd( + Integer pId, + Integer systmeId, + Integer moddleId, + Integer type, + HttpServletRequest request) { + // 获取项目名,负责人名 + String projectName = projectMapper.tgetProjectById(pId).getName(); + String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); + String systemName = projectMapper.getWorkById(systmeId).getName(); + String moddleName = projectMapper.getWorkById(moddleId).getName(); + // 添加消息 + // 1:删除模块 2:修改简介 3:修改周期 + if (type == 1) { + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectMapper.getPid(moddleId)); + messageAddVO.setTitle("子系统变动消息"); + messageAddVO.setText("项目经理" + senderName + "删除了" + projectName + "项目的" + + systemName + "系统的" + moddleName + "模块"); + messageMapper.messageAdd(messageAddVO); + } else { + List uidList = projectMapper.getMemberBySystemId(systmeId); + for (Long uid : uidList) { + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(uid); + messageAddVO.setTitle("子系统变动消息"); + if (type == 2) { + messageAddVO.setText("项目经理" + senderName + "修改了" + projectName + "项目的" + + systemName + "系统的简介说明"); + } else if (type == 3) { + messageAddVO.setText("项目经理" + senderName + "修改了" + projectName + "项目的" + + systemName + "系统的系统周期/工作量"); + } + messageAddVO.setType("跳转系统页"); + messageAddVO.setToId(systmeId); + messageMapper.messageAdd(messageAddVO); + } + } + } + + /** + * 添加日报消息 + * + * @param pId 项目id + * @param systemId 系统id + * @param moddleId 模块id + */ + @Override + public void messageAdd( + Integer pId, + Integer systemId, + Integer moddleId) { + // 获取项目名,系统名,模块名,负责人名 + String projectName = projectMapper.tgetProjectById(pId).getName(); + String systemName = projectMapper.getWorkById(systemId).getName(); + String moddleName = projectMapper.getWorkById(moddleId).getName(); + String principalName = userDAO.getUserById(projectMapper.getPid(moddleId)).getUsername(); + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectMapper.getPid(systemId)); + messageAddVO.setTitle("日报消息"); + messageAddVO.setText(projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人" + principalName + + "刚刚填写了日报"); + messageAddVO.setType("跳转日报页"); + messageMapper.messageAdd(messageAddVO); + } } diff --git a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java index d94dff1..f3ccf55 100644 --- a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java @@ -83,7 +83,6 @@ public class ModuleServiceImpl implements ModuleService { @Override public BaseResponse deleteById(HttpServletRequest request, Long id) { - // 检测是否为管理员 if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); 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 1396230..a2916e4 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -1,5 +1,4 @@ package com.jsl.oa.services.impl; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -9,7 +8,6 @@ import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; -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.ProjectShowDO; @@ -93,12 +91,13 @@ public class ProjectServiceImpl implements ProjectService { } else { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } - }//增加子模块 - else { + } else { //是否是子系统的负责人 if (Objects.equals(userId, projectMapper.getPirIdbyWorkid(projectWorkVO.getPid()))) { projectDAO.projectWorkAdd(projectWorkVO); - } else return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } } return ResultUtil.success("添加成功"); @@ -231,8 +230,8 @@ public class ProjectServiceImpl implements ProjectService { //判断用户是否为老师 或者 项目负责人 - if (!Processing.checkUserIsTeacher(request, roleMapper) || - !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { + if (!Processing.checkUserIsTeacher(request, roleMapper) + || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } @@ -246,30 +245,6 @@ public class ProjectServiceImpl implements ProjectService { } - @Override - @CheckUserHasPermission("project.cutting.user.get") - public BaseResponse projectGetUserInCutting(Long uid) { - log.info("\t> 执行 Service 层 ProjectService.projectGetUserInCutting 方法"); - if (userDAO.isExistUser(uid)) { - List projectCuttingDOList = projectDAO.projectGetUserInCutting(uid); - return ResultUtil.success(projectCuttingDOList); - } else { - return ResultUtil.error(ErrorCode.USER_NOT_EXIST); - } - } - - @Override - @CheckUserHasPermission("project.cutting.user.add") - public BaseResponse projectAddUserForCutting(HttpServletRequest request, Long uid, Long pid) { - log.info("\t> 执行 Service 层 ProjectService.projectAddUserForCutting 方法"); - if (userDAO.isExistUser(uid)) { - projectDAO.projectAddUserForCutting(uid, pid); - return ResultUtil.success(); - } else { - return ResultUtil.error(ErrorCode.USER_NOT_EXIST); - } - } - @Override public BaseResponse getHeader(Integer id) { log.info("\t> 执行 Service 层 InfoService.getHeader 方法"); @@ -361,7 +336,8 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse get(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer page, Integer pageSize) { + public BaseResponse get(Integer listAll, HttpServletRequest request, + List tags, List isFinish, Integer page, Integer pageSize) { log.info("\t> 执行 Service 层 ProjectService.get 方法"); //获取用户 @@ -437,7 +413,9 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize) { + public BaseResponse workget(Integer listAll, HttpServletRequest request, + List tags, List isFinish, Integer is, + Integer page, Integer pageSize) { log.info("\t> 执行 Service 层 ProjectService.workget 方法"); //获取用户 @@ -541,57 +519,4 @@ public class ProjectServiceImpl implements ProjectService { } return ResultUtil.success(); } - - @Override - @CheckUserHasPermission("project.cutting.add") - public BaseResponse addProjectCutting(HttpServletRequest request, ProjectCuttingAddVO projectCuttingAddVO) { - log.info("\t> 执行 Service 层 ProjectService.projectCuttingAdd方法"); - //赋值数据 - ProjectCuttingDO projectCuttingDO = new ProjectCuttingDO(); - Processing.copyProperties(projectCuttingAddVO, projectCuttingDO); - //根据pid检测项目是否存在 - if (!projectDAO.isExistProjectById(projectCuttingAddVO.getPid())) { - return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); - } - //向数据库添加数据 - projectDAO.projectCuttingAdd(projectCuttingDO); - return ResultUtil.success(); - } - - @Override - @CheckUserHasPermission("project.cutting.edit") - public BaseResponse editProjectCutting(HttpServletRequest request, ProjectCuttingEditVO projectCuttingEditVO) { - log.info("\t> 执行 Service 层 ProjectService.projectCuttingEdit方法"); - //赋值数据 - ProjectCuttingDO projectCuttingDO = new ProjectCuttingDO(); - Processing.copyProperties(projectCuttingEditVO, projectCuttingDO); - //根据id检测项目模块是否存在 - if (!projectDAO.isExistProjectCutting(projectCuttingEditVO.getId())) { - return ResultUtil.error(ErrorCode.PROJECT_CUTTING_NOT_EXIST); - } - //向数据库添加数据 - projectDAO.updateProjectCutting(projectCuttingDO); - return ResultUtil.success(); - } - - @Override - @CheckUserHasPermission("project.cutting.delete") - public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid) { - log.info("\t> 执行 Service 层 ProjectService.projectToOtherUserForCutting方法"); - //检测新旧用户是否存在 - if (!userDAO.isExistUser(oldUid) || !userDAO.isExistUser(newUid)) { - return ResultUtil.error(ErrorCode.USER_NOT_EXIST); - } - //用户项目表是否含有对应记录 - if (!projectDAO.isExistProjectUser(pid, oldUid)) { - return ResultUtil.error(ErrorCode.PROJECT_USER_NOT_EXIST); - } - //更新数据 - if (!projectDAO.updateUserForProjectUserByPidAndUid(pid, oldUid, newUid)) { - return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR); - } - return ResultUtil.success(); - } - - } -- 2.43.0 From 3e0652034e97c2931e88fb2c516091491dd314cb Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Wed, 10 Apr 2024 21:10:39 +0800 Subject: [PATCH 03/34] =?UTF-8?q?feat:=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsl/oa/controllers/ProjectController.java | 14 ++++++++++++++ .../java/com/jsl/oa/services/ProjectService.java | 3 ++- .../jsl/oa/services/impl/MessageServiceImpl.java | 1 - 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 91d555f..615ee35 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -1,5 +1,6 @@ package com.jsl.oa.controllers; import com.jsl.oa.model.vodata.ProjectEditVO; +import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectWorkVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.services.ProjectService; @@ -189,6 +190,19 @@ public class ProjectController { return projectService.projecWorktAdd(request, projectWorkVO); } + + @PostMapping("/project/add") + public BaseResponse projectAdd(HttpServletRequest request, + @RequestBody @Validated ProjectInfoVO projectInfoVO, + @NotNull BindingResult bindingResult) { + log.info("请求接口[POST]: /project/add"); + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + return ResultUtil.success(projectService.projectAdd(request, projectInfoVO)); + } + /** * 获取负责人id * diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 1dec679..8b08892 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -8,7 +8,6 @@ import javax.servlet.http.HttpServletRequest; import java.util.List; public interface ProjectService { - BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd); BaseResponse projectEdit(HttpServletRequest request, ProjectEditVO projectEdit, Long projectId); @@ -27,6 +26,8 @@ public interface ProjectService { BaseResponse projectDelete(HttpServletRequest request, List id); + BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectVO); + BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize); diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index e47d204..3bb8f67 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -15,7 +15,6 @@ import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; -import static java.lang.System.*; /** *

消息服务层实现类

-- 2.43.0 From 365f2dfa67a13b8e0388dba4719dbe437e33d375 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 11 Apr 2024 17:27:34 +0800 Subject: [PATCH 04/34] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E8=8E=B7=E5=8F=96=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsl/oa/aspect/AnnotationsAspect.java | 13 +- .../jsl/oa/common/constant/SafeConstants.java | 2 + .../jsl/oa/controllers/AuthController.java | 3 +- .../oa/controllers/PermissionController.java | 3 +- .../jsl/oa/controllers/ProjectController.java | 31 +++-- .../jsl/oa/controllers/ReviewController.java | 41 ++++++ .../jsl/oa/controllers/RoleController.java | 7 +- .../jsl/oa/controllers/UserController.java | 22 +++- .../java/com/jsl/oa/dao/PermissionDAO.java | 41 ++++-- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 31 ++++- src/main/java/com/jsl/oa/dao/ReviewDAO.java | 49 ++++++++ src/main/java/com/jsl/oa/dao/RoleDAO.java | 10 +- src/main/java/com/jsl/oa/dao/UserDAO.java | 99 ++++++++++----- .../jsl/oa/exception/ProcessException.java | 6 +- .../java/com/jsl/oa/mapper/ModuleMapper.java | 1 + .../java/com/jsl/oa/mapper/ProjectMapper.java | 33 +++-- .../java/com/jsl/oa/mapper/ReviewMapper.java | 27 ++++ .../java/com/jsl/oa/mapper/RoleMapper.java | 3 +- .../java/com/jsl/oa/mapper/UserMapper.java | 20 +-- .../com/jsl/oa/model/dodata/PageBeanDO.java | 2 +- .../jsl/oa/model/dodata/ProjectCuttingDO.java | 4 +- .../com/jsl/oa/model/dodata/ReviewDO.java | 52 ++++++++ .../com/jsl/oa/model/vodata/ReviewVO.java | 47 +++++++ .../jsl/oa/model/vodata/UserRegisterVO.java | 8 +- .../java/com/jsl/oa/services/InfoService.java | 1 - .../com/jsl/oa/services/ProjectService.java | 15 ++- .../com/jsl/oa/services/ReviewService.java | 12 ++ .../java/com/jsl/oa/services/RoleService.java | 4 +- .../java/com/jsl/oa/services/UserService.java | 12 +- .../jsl/oa/services/impl/AuthServiceImpl.java | 4 +- .../oa/services/impl/ProjectServiceImpl.java | 22 ++-- .../oa/services/impl/ReviewServiceImpl.java | 118 ++++++++++++++++++ .../jsl/oa/services/impl/RoleServiceImpl.java | 17 +-- .../jsl/oa/services/impl/UserServiceImpl.java | 54 ++++---- src/main/java/com/jsl/oa/utils/ErrorCode.java | 3 +- .../java/com/jsl/oa/utils/Processing.java | 114 +++++++++++------ src/main/resources/application.yml | 2 +- 37 files changed, 741 insertions(+), 192 deletions(-) create mode 100644 src/main/java/com/jsl/oa/controllers/ReviewController.java create mode 100644 src/main/java/com/jsl/oa/dao/ReviewDAO.java create mode 100644 src/main/java/com/jsl/oa/mapper/ReviewMapper.java create mode 100644 src/main/java/com/jsl/oa/model/dodata/ReviewDO.java create mode 100644 src/main/java/com/jsl/oa/model/vodata/ReviewVO.java create mode 100644 src/main/java/com/jsl/oa/services/ReviewService.java create mode 100644 src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java diff --git a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java index 9356fd2..5bee70d 100644 --- a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java +++ b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java @@ -4,6 +4,8 @@ import com.jsl.oa.annotations.CheckUserAbleToUse; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; +import com.jsl.oa.dao.UserDAO; +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; @@ -43,8 +45,11 @@ import java.util.Objects; @Component @RequiredArgsConstructor public class AnnotationsAspect { - private final RoleDAO roleDAO; + private final UserMapper userMapper; + private final RoleMapper roleMapper; + private final RoleDAO roleDAO; + private final UserDAO userDAO; private final PermissionDAO permissionDAO; /** @@ -91,12 +96,12 @@ public class AnnotationsAspect { } else { log.info("\t> 用户权限不足,检查是否是管理员"); // 检查用户是管理员 - RoleUserDO roleUserDO = roleDAO.roleMapper + RoleUserDO roleUserDO = roleMapper .getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO == null) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } - RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); + RoleDO roleDO = roleMapper.getRoleByRoleName("admin"); if (roleUserDO.getRid().equals(roleDO.getId())) { return pjp.proceed(); } else { @@ -127,7 +132,7 @@ public class AnnotationsAspect { // 获取用户信息 Long userId = Processing.getAuthHeaderToUserId(request); - UserDO userDO = userMapper.getUserById(userId); + UserDO userDO =userMapper.getUserById(userId); // 用户不存在 if (userDO == null) { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); diff --git a/src/main/java/com/jsl/oa/common/constant/SafeConstants.java b/src/main/java/com/jsl/oa/common/constant/SafeConstants.java index a9071d1..913696d 100644 --- a/src/main/java/com/jsl/oa/common/constant/SafeConstants.java +++ b/src/main/java/com/jsl/oa/common/constant/SafeConstants.java @@ -1,5 +1,7 @@ package com.jsl.oa.common.constant; public class SafeConstants { + public static String SECRET_KEY; + } diff --git a/src/main/java/com/jsl/oa/controllers/AuthController.java b/src/main/java/com/jsl/oa/controllers/AuthController.java index c26aa60..b1a1950 100755 --- a/src/main/java/com/jsl/oa/controllers/AuthController.java +++ b/src/main/java/com/jsl/oa/controllers/AuthController.java @@ -178,7 +178,8 @@ public class AuthController { if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); } - return authService.authChangePassword(userChangePasswordVO, request); + return authService. + authChangePassword((UserChangePasswordVO) request, (HttpServletRequest) userChangePasswordVO); } /** diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java index 2c003b4..377dd88 100755 --- a/src/main/java/com/jsl/oa/controllers/PermissionController.java +++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java @@ -88,7 +88,8 @@ public class PermissionController { * @return {@link BaseResponse} 对象,包含操作结果。 */ @PutMapping("/permission/edit") - public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, BindingResult bindingResult, HttpServletRequest request) { + public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, + BindingResult bindingResult, HttpServletRequest request) { log.info("请求接口[PUT]: /permission/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 7167cc6..675c89d 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -140,7 +140,8 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/header/add") - public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, HttpServletRequest request, @NotNull BindingResult bindingResult) { + public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, + HttpServletRequest request, @NotNull BindingResult bindingResult) { log.info("请求接口[POST]: /project/header/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -160,7 +161,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PutMapping("/project/header/edit/{projectId}") - public BaseResponse projectEditById(@RequestParam Long projectId, HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult) { + public BaseResponse projectEditById(@RequestParam Long projectId, + HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, + @NotNull BindingResult bindingResult) { log.info("请求接口[PUT]: /project/header/edit/{projectId}"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -177,7 +180,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/work/add") - public BaseResponse projectWorkAdd(HttpServletRequest request, @RequestBody @Validated ProjectWorkVO projectWorkVO, @NotNull BindingResult bindingResult) { + public BaseResponse projectWorkAdd(HttpServletRequest request, + @RequestBody @Validated ProjectWorkVO projectWorkVO, + @NotNull BindingResult bindingResult) { log.info("请求接口[POST]: /project/work/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -220,7 +225,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/cut/user/add") - public BaseResponse projectAddUserForCutting(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long pid) { + public BaseResponse projectAddUserForCutting(HttpServletRequest request, + @RequestParam Long uid, + @RequestParam Long pid) { log.info("请求接口[Post]: /project/cut/user/add"); // 判断是否有参数错误 if (uid == null || pid == null) { @@ -253,7 +260,9 @@ public class ProjectController { * @return {@link BaseResponse} */ @PostMapping("/project/cut/add") - public BaseResponse projectCuttingAdd(HttpServletRequest request, @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, @NotNull BindingResult bindingResult) { + public BaseResponse projectCuttingAdd(HttpServletRequest request, + @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, + @NotNull BindingResult bindingResult) { log.info("请求接口[Post]: /project/cut/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -264,7 +273,9 @@ public class ProjectController { @PutMapping("/project/cut/edit") - public BaseResponse projectCuttingEdit(HttpServletRequest request, @RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO, @NotNull BindingResult bindingResult) { + public BaseResponse projectCuttingEdit(HttpServletRequest request, + @RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO, + @NotNull BindingResult bindingResult) { log.info("请求接口[Put]: /project/cut/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -274,12 +285,8 @@ public class ProjectController { } @PutMapping("/project/cut/user/to") - public BaseResponse projectToOtherUserForCutting( - HttpServletRequest request, - @RequestParam Long oldUid, - @RequestParam Long pid, - @RequestParam Long newUid - ) { + public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, @RequestParam Long oldUid, + @RequestParam Long pid, @RequestParam Long newUid) { log.info("请求接口[Put]: /project/cut/user/to"); // 判断是否有参数错误 if (oldUid == null || pid == null || newUid == null) { diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java new file mode 100644 index 0000000..dff99f8 --- /dev/null +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -0,0 +1,41 @@ +package com.jsl.oa.controllers; + +import com.jsl.oa.services.ReviewService; +import com.jsl.oa.utils.BaseResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** + * 审核控制器 + * + * @author xiangZr-hhh + * @version 1.1.0 + * @since 1.1.0 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ReviewController { + +// 审核服务 + private final ReviewService reviewService; + + /** + * @Description: 获取我的审核列表 + * @Date: 2024/4/11 + * @Param request: + **/ + @GetMapping("/review/getMyReview") + public BaseResponse getUserReview(@RequestParam Long projectId, HttpServletRequest request) { + log.info("请求接口[GET]: /review/getMyReview"); + return reviewService.getUserReview(projectId, request); + } + +} + + diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 43fe0bc..f9ca799 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -58,7 +58,8 @@ public class RoleController { * @return {@link BaseResponse} */ @PutMapping("/role/edit") - public BaseResponse roleEdit(HttpServletRequest request, @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) { + public BaseResponse roleEdit(HttpServletRequest request, + @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) { log.info("请求接口[PUT]: /role/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -124,7 +125,9 @@ public class RoleController { * @Param uid: **/ @PostMapping("role/add") - public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult) throws ClassCopyException { + public BaseResponse addRole(HttpServletRequest request, + @RequestBody @Validated RoleAddVo roleAddVO, + @NotNull BindingResult bindingResult) throws ClassCopyException { log.info("请求接口[POST]: /role/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index de4b659..2e51e80 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -77,7 +77,8 @@ public class UserController { * @return {@link BaseResponse} */ @PutMapping("/user/profile/edit") - public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, BindingResult bindingResult) { + public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, + BindingResult bindingResult) { log.info("请求接口[PUT]: /user/profile/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -100,7 +101,11 @@ public class UserController { * @return {@link BaseResponse} */ @GetMapping("/user/current") - 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"); // 检查数据是否有问题 if (id != null && !id.isEmpty()) { @@ -119,12 +124,13 @@ public class UserController { } } 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)) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "手机格式不正确"); } } // 检查是否出现错误 - return userService.userCurrent(id, username, email, phone, request); + return userService.userCurrent(request, id, username, email, phone); } /** @@ -154,7 +160,9 @@ public class UserController { * @Param bindingResult: **/ @PostMapping("/user/add") - public BaseResponse userAdd(@RequestBody @Validated UserAddVO userAddVo, BindingResult bindingResult, HttpServletRequest request) { + public BaseResponse userAdd(@RequestBody @Validated UserAddVO userAddVo, + BindingResult bindingResult, + HttpServletRequest request) { log.info("请求接口[POST]: /user/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -170,7 +178,9 @@ public class UserController { * @Param bindingResult: **/ @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()) { diff --git a/src/main/java/com/jsl/oa/dao/PermissionDAO.java b/src/main/java/com/jsl/oa/dao/PermissionDAO.java index 5fcf88e..d452011 100644 --- a/src/main/java/com/jsl/oa/dao/PermissionDAO.java +++ b/src/main/java/com/jsl/oa/dao/PermissionDAO.java @@ -52,8 +52,7 @@ public class PermissionDAO { roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440); } else { log.info("\t\t> 从 Redis 获取数据"); - getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken>() { - }.getType()); + getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken>() { }.getType()); } return getPermissionForString; } @@ -69,16 +68,43 @@ public class PermissionDAO { getPermissionForString = new ArrayList<>(); forPermissionToBuildString(permissionList, getPermissionForString); // 存入 Redis - roleRedisUtil - .setData(BusinessConstants.ALL_PERMISSION, "string", gson.toJson(getPermissionForString), 1440); + roleRedisUtil.setData( + BusinessConstants.ALL_PERMISSION, + "string", + gson.toJson(getPermissionForString), + 1440); } else { log.info("\t\t> 从 Redis 获取数据"); - getPermissionForString = gson.fromJson(getRedisData, new TypeToken>() { - }.getType()); + getPermissionForString = gson.fromJson(getRedisData, new TypeToken>() { }.getType()); } return getPermissionForString; } + public List getRootPermission() { + log.info("\t> 执行 DAO 层 PermissionDAO.getRootPermission 方法"); + String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "all"); + if (getRedisData == null) { + log.info("\t\t> 从 MySQL 获取数据"); + List permissionList = permissionMapper.getAllPermission(); + if (!permissionList.isEmpty()) { + List getPermissionList = new ArrayList<>(); + for (PermissionDO permission : permissionList) { + if (permission.getPid() == null) { + getPermissionList.add(permission); + } + } + roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "all", gson.toJson(getPermissionList), 1440); + return getPermissionList; + } else { + return null; + } + } else { + log.info("\t\t> 从 Redis 获取数据"); + return gson.fromJson(getRedisData, new TypeToken>() { + }.getType()); + } + } + /** *

获取全部权限信息

*
@@ -89,8 +115,7 @@ public class PermissionDAO { */ private void forPermissionToBuildString( @NotNull List permissionList, - List getPermissionForString - ) { + List getPermissionForString) { for (PermissionDO permission : permissionList) { // 寻找是否存在父亲 StringBuilder permissionString = new StringBuilder(); diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index d13cb73..48b0739 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -34,7 +34,6 @@ public class ProjectDAO { log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法"); log.info("\t\t> 从 MySQL 获取数据"); - projectMapper.projectAdd(projectAdd); } @@ -101,13 +100,14 @@ public class ProjectDAO { log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法"); for (int i = 0; i < projectShowDO.getData().size(); i++) { for (int j = 0; j < projectShowDO.getData().size(); j++) { - ProjectShowDO.DataDO dataDO = projectShowDO.getData().get(i); if ("desc".equals(projectShowDO.getOrder())) { - if (dataDO.getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) { + if (projectShowDO.getData().get(i).getDisplayOrder() + > projectShowDO.getData().get(j).getDisplayOrder()) { Collections.swap(projectShowDO.getData(), i, j); } } else { - if (dataDO.getDisplayOrder() < projectShowDO.getData().get(j).getDisplayOrder()) { + if (projectShowDO.getData().get(i).getDisplayOrder() + < projectShowDO.getData().get(j).getDisplayOrder()) { Collections.swap(projectShowDO.getData(), i, j); } } @@ -150,7 +150,11 @@ public class ProjectDAO { } } - public List workget(Long userId, Integer listAll, List tags, List isFinish, Integer is) { + public List workget(Long userId, + Integer listAll, + List tags, + List isFinish, + Integer is) { log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (tags != null && !tags.isEmpty()) { @@ -247,5 +251,22 @@ public class ProjectDAO { return projectMapper.getProjectWorkById(id); } + public List getProjectByPrincipalUser(Long uid) { + log.info("\t> 执行 DAO 层 ProjectDAO.getProjectFromUser 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return projectMapper.getProjectByPrincipalUser(uid); + } + + public List getAllSubsystemByUserId(Long uid) { + log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubsystemByUserId 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return projectMapper.getAllSubsystemByUserId(uid); + } + + public List getAllSubmoduleByUserId(Long uid) { + log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubmoduleByUserId 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return projectMapper.getAllSubmoduleByUserId(uid); + } } diff --git a/src/main/java/com/jsl/oa/dao/ReviewDAO.java b/src/main/java/com/jsl/oa/dao/ReviewDAO.java new file mode 100644 index 0000000..5309e98 --- /dev/null +++ b/src/main/java/com/jsl/oa/dao/ReviewDAO.java @@ -0,0 +1,49 @@ +package com.jsl.oa.dao; + + +import com.jsl.oa.mapper.ProjectMapper; +import com.jsl.oa.mapper.ReviewMapper; +import com.jsl.oa.model.dodata.ReviewDO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * ReviewDAO + *
+ * 用于处理审核相关的请求, 包括获取审核列表、编辑审核信息等 + * + * @author zrx_hhh + * @version v1.0.0 + * @since v1.0.0-SNAPSHOT + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class ReviewDAO { + + private final ReviewMapper reviewMapper; + private final ProjectMapper projectMapper; + + public List getPrincipalUserReview(Long pid) { + return reviewMapper.selectAllReviewFromProject(pid); + } + + public String getNameBySubproject(Long subId) { + + if (subId != null) { + return projectMapper.getProjectWorkById(subId).getName(); + } + + if (subId == null) { + return "无"; + } + + return ""; + } + +} + + diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java index aaf6a18..1a67065 100644 --- a/src/main/java/com/jsl/oa/dao/RoleDAO.java +++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java @@ -18,7 +18,7 @@ import java.util.List; @Component @RequiredArgsConstructor public class RoleDAO { - public final RoleMapper roleMapper; + private final RoleMapper roleMapper; private final Gson gson; private final RoleRedisUtil roleRedisUtil; @@ -26,7 +26,8 @@ public class RoleDAO { log.info("\t> 执行 DAO 层 RoleDAO.addRoleUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); roleMapper.roleAddUser(uid, rid); - roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); + roleRedisUtil.setData( + BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); } public void delRoleUser(Long uid) { @@ -122,7 +123,8 @@ public class RoleDAO { log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (roleMapper.roleChangeUser(uid, rid)) { - roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); + roleRedisUtil.setData( + BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); return true; } else { return false; @@ -140,4 +142,6 @@ public class RoleDAO { return gson.fromJson(getRedisData, RoleUserDO.class); } } + + } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index dd16fc5..55437cf 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -3,6 +3,8 @@ package com.jsl.oa.dao; import com.google.gson.Gson; import com.jsl.oa.common.constant.BusinessConstants; 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.UserDO; import com.jsl.oa.model.vodata.UserAllCurrentVO; import com.jsl.oa.model.vodata.UserCurrentBackVO; @@ -23,9 +25,9 @@ import java.util.List; * 用于用户的增删改查,以及用户权限的获取,用户信息的获取,用户信息的修改,用户信息的删除,用户信息的锁定,用户信息的解锁,用户信息的添加,用户信息的 * 编辑等 * - * @author xiao_lfeng | 176yunxuan | xiangZr-hhh * @version v1.1.0 * @since v1.1.0 + * @author xiao_lfeng | 176yunxuan | xiangZr-hhh */ @Slf4j @Component @@ -49,11 +51,13 @@ public class UserDAO { */ public UserDO getUserInfoByUsername(String username) { log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法"); - UserDO userDO; + UserDO userDO = null; // 从 Redis 获取数据 // TODO: 10000-Redis: 从 Redis 获取数据 // 从数据库获取用户信息 - userDO = userMapper.getUserInfoByUsername(username); + if (userDO == null) { + userDO = userMapper.getUserInfoByUsername(username); + } return userDO; } @@ -112,7 +116,7 @@ public class UserDAO { /** * 用户账号锁定 * - * @param id 用户id + * @param id */ public void userLock(Long id, Long isLock) { log.info("\t> 执行 DAO 层 UserDAO.userLock 方法"); @@ -132,8 +136,9 @@ public class UserDAO { List userCurrentDO = userMapper.getAllUser(userAllCurrentVO); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) - .setCount(userMapper.getUsersCount()); - userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); + .setCount(userMapper.getUsersCount()); + userCurrentDO + .forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; } @@ -144,17 +149,18 @@ public class UserDAO { List userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) - .setCount(userMapper.getUsersCount()); - userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); + .setCount(userMapper.getUsersCount()); + userCurrentDO + .forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; } /** - * Adds a new user to the database. - * - * @param userDO The UserDO object containing the user's information. - * @return True if the user is successfully added, false otherwise. + * @return + * @Description 用户添加 + * @Date: 2024/1/16 + * @Param userDO: user 数据库表实体类 */ public boolean userAdd(UserDO userDO) { log.info("\t> 执行 DAO 层 userAdd 方法"); @@ -168,14 +174,12 @@ public class UserDAO { userMapper.updateUser(userDO); } + /** - *

用户名获取用户信息

- *
- * 根据用户名获取用户信息 - * - * @param username 用户名 - * @return {@link UserDO} - */ + * @Description 根据username检测用户是否重复 + * @Date: 2024/1/16 + * @Param username: 用户名 + **/ public Boolean isRepeatUser(String username) { log.info("\t> 执行 DAO 层 isRepeatUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -184,21 +188,22 @@ public class UserDAO { /** - * 通过用户编号获取用户信息 - * - * @param userNum 用户编号 - * @return UserDO - */ + * @Description 检测用户工号是否重复 + * @Date 2024/1/18 + * @Param userNum: + **/ public Boolean isRepeatUserNum(String userNum) { - return userMapper.getUserByUserNum(userNum) != null; + if (userMapper.getUserByUserNum(userNum) != null) { + return true; + } + return false; } /** - * 通过 Id 获取用户信息 - * - * @param userId 用户id - * @return UserDO - */ + * @Description 根据用户id获取用户数据 + * @Date 2024/1/17 + * @Param userId + **/ public UserDO getUserById(Long userId) { log.info("\t> 执行 DAO 层 getUserById 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -206,6 +211,34 @@ public class UserDAO { } + /** + * @Description 根据用户id查询对应用户权限 + * @Date 2024/1/18 + * @Param uid:用户id + **/ + public RoleUserDO getRoleFromUser(Long uid) { + log.info("\t> 执行 DAO 层 getRoleFromUser 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return userMapper.getRoleIdByUserId(uid); + } + + + /** + * @Description 检验用户权限是否为管理员 + * @Date 2024/1/18 + * @Param null:用户id + **/ + public Boolean isManagerByRoleId(Long roleId) { + log.info("\t> 执行 DAO 层 isManagerByRoleId 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + RoleDO role = userMapper.getRoleById(roleId); + if (role == null) { + return false; + } + return "admin".equals(role.getRoleName()); + } + + public List getRecommendUser() { log.info("\t> 执行 DAO 层 getRecommendUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -223,4 +256,10 @@ public class UserDAO { log.info("\t\t> 从 MySQL 获取数据"); return userMapper.getUserByPhone(phone); } + + public Long getUsersCount() { + log.info("\t> 执行 DAO 层 getUsersCount 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return userMapper.getUsersCount(); + } } diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java index 750482e..b67dcd0 100755 --- a/src/main/java/com/jsl/oa/exception/ProcessException.java +++ b/src/main/java/com/jsl/oa/exception/ProcessException.java @@ -54,8 +54,7 @@ public class ProcessException { @ExceptionHandler(value = MissingServletRequestParameterException.class) public ResponseEntity businessMissingServletRequestParameterException( - MissingServletRequestParameterException e - ) { + MissingServletRequestParameterException e) { log.error(e.getMessage(), e); return ResponseEntity .status(400) @@ -100,8 +99,7 @@ public class ProcessException { */ @ExceptionHandler(value = MethodArgumentTypeMismatchException.class) public ResponseEntity businessMethodArgumentTypeMismatchException( - @NotNull MethodArgumentTypeMismatchException e - ) { + @NotNull MethodArgumentTypeMismatchException e) { log.error(e.getMessage(), e); return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误"); } diff --git a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java index a0c013b..dbfa8bd 100644 --- a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java @@ -11,6 +11,7 @@ import java.util.List; public interface ModuleMapper { + List getByProjectId(Integer projectId, Long userId, int is); List getBySysId(Integer sysId, Long userId, int is); diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 0c1bb5b..3c7ad1e 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -51,12 +51,15 @@ public interface ProjectMapper { @Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())") void insertProjectShow(); - @Update("UPDATE organize_oa.oa_config" - + " SET data = #{setProjectShow}, updated_at = CURRENT_TIMESTAMP " - + " WHERE value = 'project_show'" - ) + @Update("UPDATE organize_oa.oa_config SET data = #{setProjectShow}," + + " updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'") boolean setProjectShow(String setProjectShow); + //@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" + + //"like concat('%',#{tags},'%')") + + //@Select("select * from organize_oa.oa_project where is_finish=#{isFinish} + // and is_delete=false and principal_id=#{userId}") List getByIsfinish(Long userId, List isFinish); List getByTags(Long userId, List tags, List isFinish); @@ -92,7 +95,9 @@ public interface ProjectMapper { boolean updateUserForProjectUser(Long uid, Long id); - //@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}") + //@Select("select * from organize_oa.oa_project_work + // where is_finish=#{isFinish} and is_delete=false + // and principal_id =#{userId}") List workgetByIsfinish(Long userId, List isFinish, Integer is); List workgetByTags(Long userId, List tags, Integer is, List isFinish); @@ -117,9 +122,23 @@ public interface ProjectMapper { @Select("select principal_id from organize_oa.oa_project_work where id=#{pid}") Long getPirIdbyWorkid(Long pid); - @Select("select principal_id from organize_oa.oa_project_work where id=#{id}") + @Select("select principal_id from organize_oa.oa_project_work where id=#{id} AND" + + "is_delete = 0") Long getPid(Integer id); - @Select("select * from organize_oa.oa_project_work where id=#{id}") + @Select("select * from organize_oa.oa_project_work where id=#{id}" + + "AND is_delete = 0") ProjectWorkDO getProjectWorkById(Long id); + + @Select("SELECT * FROM organize_oa.oa_project where principal_id = #{uid} " + + "AND is_delete = 0") + List getProjectByPrincipalUser(Long uid); + + @Select("SELECT * FROM organize_oa.oa_project_work where principal_id = #{uid} " + + "AND is_delete = 0 AND category = 0") + List getAllSubsystemByUserId(Long uid); + + @Select("SELECT * FROM organize_oa.oa_project_work where principal_id = #{uid}" + + "AND is_delete = 0 AND category = 1") + List getAllSubmoduleByUserId(Long uid); } diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java new file mode 100644 index 0000000..ea2613e --- /dev/null +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -0,0 +1,27 @@ +package com.jsl.oa.mapper; + +import com.jsl.oa.model.dodata.ReviewDO; +import org.apache.ibatis.annotations.*; + +import java.util.List; + +@Mapper +public interface ReviewMapper { + + @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}" + + "AND is_delete = 0") + List selectAllReviewFromProject(Long projectId); + + @Select("SELECT * FROM organize_oa.oa_review WHERE " + + "project_subsystem_id = #{subsystemId} AND is_delete = 0") + List selectReviewFromSubsystem(Long subsystemId); + + @Select("SELECT * FROM organize_oa.oa_review WHERE " + + "project_submodule_id = #{subsystemId} AND is_delete = 0") + List selectReviewFromSubmodule(Long submoduleId); + + @Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0") + ReviewDO selectReviewById(Long id); + + +} diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java index e35b10b..2ae18b2 100644 --- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java @@ -30,7 +30,8 @@ public interface RoleMapper { @Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC") List getRole(); - @Update("UPDATE organize_oa.oa_role SET role_name=#{roleName},display_name=#{displayName},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}") + @Update("UPDATE organize_oa.oa_role SET role_name=#{roleName}," + + "display_name=#{displayName},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}") boolean roleEdit(RoleDO getRole); @Update("UPDATE organize_oa.oa_role_user SET rid = #{rid},updated_at = current_timestamp WHERE uid = #{uid}") diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 29fdcbf..413867d 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -37,7 +37,9 @@ public interface UserMapper { @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} ") + @Update("UPDATE organize_oa.oa_user " + + "SET account_no_locked = #{isLock} " + + ", updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ") void userLock(Long id, Long isLock); @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}") @@ -77,11 +79,12 @@ public interface UserMapper { List getRecommendUser(); - @Update("UPDATE organize_oa.oa_user " + - "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " + - "signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " + - "description = #{description} ,updated_at = current_timestamp " + - "WHERE id = #{id}") + @Update("UPDATE organize_oa.oa_user " + + "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " + + "signature = #{signature}, sex = #{sex}, " + + "avatar = #{avatar}, nickname = #{nickname}, " + + "description = #{description} ,updated_at = current_timestamp " + + "WHERE id = #{id}") void updateUser(UserDO userDO); @Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}") @@ -96,7 +99,8 @@ public interface UserMapper { @Select("SELECT COUNT(*) FROM organize_oa.oa_user") Long getUsersCount(); - @Select("select oa_user.id,oa_user.username,oa_role.role_name from organize_oa.oa_user join organize_oa.oa_role_user " + - "on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id") + @Select("select oa_user.id,oa_user.username," + + "oa_role.role_name from organize_oa.oa_user join organize_oa.oa_role_user " + + "on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id") List getPrincipal(); } diff --git a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java index 59fcda4..c235f49 100644 --- a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java @@ -14,8 +14,8 @@ import java.util.List; * @since v1.1.0 * @version v1.1.0 * @author 176yunxuan - * @param 对类型的泛型处理 */ + @Data @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java index b79a8f7..a438d9b 100755 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java @@ -27,8 +27,8 @@ public class ProjectCuttingDO { private Long cycle; private String name; private String description; - private Integer is_delete; - private Integer is_finish; + private Integer isDelete; + private Integer isFinish; private Integer status; private boolean type; private Timestamp beginTime; diff --git a/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java new file mode 100644 index 0000000..e4423d1 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java @@ -0,0 +1,52 @@ +package com.jsl.oa.model.dodata; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + *

oa_review 数据表

+ *
+ * 映射 oa_permission 数据表内容进入自定义实体类 + * + * @author 筱锋xiao_lfeng + * @since v1.1.0 + * @version v1.1.0 + */ +@Data +@Accessors(chain = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ReviewDO { + //主键 + private Long id; + //申请名称 + private String name; + //申请理由 + private String content; + //申请者用户id + private Long senderId; + //审核者用户id + private Long recipientId; + //审核类别(0:子系统;1:子模块) + private Integer category; + //申请的项目id + private Long projectId; + //申请的子系统id + private Long projectSubsystemId; + //申请的子模块id + private Long projectSubmoduleId; + //申请时间 + private Date applicationTime; + //审核时间 + private Date reviewTime; + //审核结果(0:未通过;1:通过;2:未审批) + private Integer reviewResult; + //是否删除(0:未删除;1:已删除) + private Integer isDelete; + +} + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewVO.java new file mode 100644 index 0000000..a62beaf --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewVO.java @@ -0,0 +1,47 @@ +package com.jsl.oa.model.vodata; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Accessors(chain = true) +public class ReviewVO { + + private Long id; + //申请名称 + private String name; + //申请理由 + private String content; + //申请者用户id + private Long senderId; + //审请者用户名称 + private String senderName; + //审核者用户id + private Long recipientId; + //审核者用户名称 + private String recipientName; + //审核类别(子系统 子模块) + private String category; + //申请的项目id + private Long projectId; + //申请的项目名称 + private String projectName; + //申请的子系统id + private Long projectSubsystemId; + //申请的子系统名称 + private String subsystemName; + //申请的子模块id + private Long projectSubmoduleId; + //申请的模块名称 + private String submoduleName; + //申请时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applicationTime; + //审核结果(0:未通过;1:通过;2:未审批) + private String result; +} + + diff --git a/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java b/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java index 5155d54..1513d60 100755 --- a/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/UserRegisterVO.java @@ -27,10 +27,10 @@ public class UserRegisterVO { @NotBlank(message = "家乡不能为空") 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 = "电话格式错误" - ) + @NotBlank(message = "电话不能为空") + @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; @NotBlank(message = "邮箱不能为空") diff --git a/src/main/java/com/jsl/oa/services/InfoService.java b/src/main/java/com/jsl/oa/services/InfoService.java index 028e7a3..c3e1aa1 100644 --- a/src/main/java/com/jsl/oa/services/InfoService.java +++ b/src/main/java/com/jsl/oa/services/InfoService.java @@ -33,7 +33,6 @@ public interface InfoService { * * @param request 请求 * @param carouselVO 轮播图VO - * @param id 轮播图ID * @return {@link BaseResponse} */ BaseResponse editHeaderImage(HttpServletRequest request, CarouselVO carouselVO); diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 9915778..d0808f9 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -24,7 +24,12 @@ public interface ProjectService { BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); - BaseResponse get(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer page, Integer pageSize); + BaseResponse get(Integer listAll, + HttpServletRequest request, + List tags, + List isFinish, + Integer page, + Integer pageSize); BaseResponse getByName(String name); @@ -36,7 +41,13 @@ public interface ProjectService { BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid); - BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize); + BaseResponse workget(Integer listAll, + HttpServletRequest request, + List tags, + List isFinish, + Integer is, + Integer page, + Integer pageSize); BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java new file mode 100644 index 0000000..af5b9a2 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -0,0 +1,12 @@ +package com.jsl.oa.services; + + +import com.jsl.oa.utils.BaseResponse; + +import javax.servlet.http.HttpServletRequest; + +public interface ReviewService { + + BaseResponse getUserReview(Long projectId, HttpServletRequest request); + +} diff --git a/src/main/java/com/jsl/oa/services/RoleService.java b/src/main/java/com/jsl/oa/services/RoleService.java index ba46e87..61a8d32 100644 --- a/src/main/java/com/jsl/oa/services/RoleService.java +++ b/src/main/java/com/jsl/oa/services/RoleService.java @@ -16,9 +16,9 @@ import javax.servlet.http.HttpServletRequest; * @since v1.1.0 */ public interface RoleService { - BaseResponse roleAddUser(HttpServletRequest request,Long uid, Long rid); + BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid); - BaseResponse roleRemoveUser(HttpServletRequest request,Long uid); + BaseResponse roleRemoveUser(HttpServletRequest request, Long uid); BaseResponse roleGet(HttpServletRequest request, String id); diff --git a/src/main/java/com/jsl/oa/services/UserService.java b/src/main/java/com/jsl/oa/services/UserService.java index a403f9e..a370321 100755 --- a/src/main/java/com/jsl/oa/services/UserService.java +++ b/src/main/java/com/jsl/oa/services/UserService.java @@ -1,5 +1,6 @@ package com.jsl.oa.services; +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; @@ -17,6 +18,15 @@ import javax.servlet.http.HttpServletRequest; * @since v1.1.0 */ public interface UserService { + /** + *

根据用户名获取用户信息

+ *
+ * 该方法用于根据用户名获取用户信息 + * + * @param username 用户名 + * @return 用户信息 + */ + UserDO getUserInfoByUsername(String username); /** *

用户账号删除

@@ -71,7 +81,7 @@ public interface UserService { * @param phone 手机号 * @return {@link BaseResponse} */ - BaseResponse userCurrent(String id, String username, String email, String phone, HttpServletRequest request); + BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone); BaseResponse userAdd(UserAddVO userAddVo, 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 25776df..09b1da9 100755 --- a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java @@ -4,6 +4,7 @@ import com.jsl.oa.annotations.CheckUserAbleToUse; import com.jsl.oa.common.constant.BusinessConstants; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; +import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.RoleUserDO; import com.jsl.oa.model.dodata.UserDO; @@ -39,6 +40,7 @@ import java.util.regex.Pattern; @RequiredArgsConstructor public class AuthServiceImpl implements AuthService { private final UserMapper userMapper; + private final RoleMapper roleMapper; private final RoleDAO roleDAO; private final PermissionDAO permissionDAO; @@ -273,7 +275,7 @@ public class AuthServiceImpl implements AuthService { getPermissionForString = permissionDAO.getPermission(userDO.getId()); } // 获取用户角色 - RoleUserDO getUserRole = roleDAO.roleMapper.getRoleUserByUid(userDO.getId()); + RoleUserDO getUserRole = roleMapper.getRoleUserByUid(userDO.getId()); if (getUserRole == null) { getUserRole = new RoleUserDO(); getUserRole.setRid(0L) 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 1396230..35dd57d 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -93,12 +93,13 @@ public class ProjectServiceImpl implements ProjectService { } else { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } - }//增加子模块 - else { + } else { //是否是子系统的负责人 if (Objects.equals(userId, projectMapper.getPirIdbyWorkid(projectWorkVO.getPid()))) { projectDAO.projectWorkAdd(projectWorkVO); - } else return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } } return ResultUtil.success("添加成功"); @@ -231,8 +232,8 @@ public class ProjectServiceImpl implements ProjectService { //判断用户是否为老师 或者 项目负责人 - if (!Processing.checkUserIsTeacher(request, roleMapper) || - !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { + if (!Processing.checkUserIsTeacher(request, roleMapper) + || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } @@ -361,7 +362,10 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse get(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer page, Integer pageSize) { + public BaseResponse get(Integer listAll, + HttpServletRequest request, + List tags, List isFinish, + Integer page, Integer pageSize) { log.info("\t> 执行 Service 层 ProjectService.get 方法"); //获取用户 @@ -437,7 +441,11 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize) { + public BaseResponse workget(Integer listAll, + HttpServletRequest request, + List tags, + List isFinish, + Integer is, Integer page, Integer pageSize) { log.info("\t> 执行 Service 层 ProjectService.workget 方法"); //获取用户 diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java new file mode 100644 index 0000000..2157ff6 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -0,0 +1,118 @@ +package com.jsl.oa.services.impl; + + +import com.jsl.oa.dao.ProjectDAO; +import com.jsl.oa.dao.ReviewDAO; +import com.jsl.oa.dao.UserDAO; +import com.jsl.oa.mapper.ReviewMapper; +import com.jsl.oa.mapper.UserMapper; +import com.jsl.oa.model.dodata.ProjectDO; +import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ReviewDO; +import com.jsl.oa.model.vodata.ReviewVO; +import com.jsl.oa.services.ReviewService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class ReviewServiceImpl implements ReviewService { + + private final UserDAO userDAO; + private final ReviewDAO reviewDAO; + private final ProjectDAO projectDAO; + + private final UserMapper userMapper; + private final ReviewMapper reviewMapper; + + + @Override + public BaseResponse getUserReview(Long projectId, HttpServletRequest request) { + log.info("\t> 执行 Service 层 ReviewService.getUserReview 方法"); + + //获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //存储审核数据的数组 + List reviewData = new ArrayList<>(); + + //先获取用户为项目负责人的项目列表 + projectDAO.getProjectByPrincipalUser(userId); + + //先从用户为 项目负责人 的项目中获取对应 审核信息 + for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewMapper. + selectAllReviewFromProject(projectDO.getId()); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + //在从用户为 子系统负责人 的项目中获取对应 审核信息 + for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewMapper. + selectReviewFromSubsystem(projectWorkDO.getId()); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + + //在从用户为 子模块负责人 的项目中获取对应 审核信息 + for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewMapper. + selectReviewFromSubmodule(projectWorkDO.getId()); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + return ResultUtil.success(reviewData); + } + + + /** + * @Description: 封装审核的VO类 + * @Date: 2024/4/11 + * @Param reviewDOS: + **/ + public List encapsulateArrayClass(List reviewDOS) { + +// 定义封装类结果集数组 + List resultData = new ArrayList<>(); + + for (ReviewDO reviewDO : reviewDOS) { + ReviewVO reviewVO = new ReviewVO(); +// 现将相同的属性赋值 + Processing.copyProperties(reviewDO, reviewVO); +// 赋值其他属性 + reviewVO.setCategory(Processing.turnReviewCategory(reviewDO.getCategory())) + .setSenderName(userMapper.getUserById(reviewDO.getSenderId()).getNickname()) + .setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname()) + .setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName()) + .setSubsystemName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubsystemId())) + .setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId())) + .setResult(Processing.turnReviewResult(reviewDO.getReviewResult())); +// 将封装好的结果添加到结果集 + resultData.add(reviewVO); + } + + return resultData; + } + + + + + +} + + 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 260f68c..34a3b65 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -4,6 +4,7 @@ import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.exception.ClassCopyException; +import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.dodata.RoleDO; import com.jsl.oa.model.vodata.RoleAddVo; import com.jsl.oa.model.vodata.RoleEditVO; @@ -41,11 +42,13 @@ public class RoleServiceImpl implements RoleService { private final RoleDAO roleDAO; private final UserDAO userDAO; + private final RoleMapper roleMapper; + @Override @CheckUserHasPermission("role.add") public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) { log.info("\t> 执行 Service 层 RoleService.addRoleUser 方法"); - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleMapper)) { roleDAO.addRoleUser(uid, rid); return ResultUtil.success(); } else { @@ -57,7 +60,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) { log.info("\t> 执行 Service 层 RoleService.delRoleUser 方法"); - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleMapper)) { roleDAO.delRoleUser(uid); return ResultUtil.success(); } else { @@ -77,7 +80,7 @@ public class RoleServiceImpl implements RoleService { return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES); } //检测用户权限是否为管理员 - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleMapper)) { if (roleDAO.roleChangeUser(uid, rid)) { return ResultUtil.success(); } else { @@ -92,7 +95,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleGet(HttpServletRequest request, String id) { log.info("\t> 执行 Service 层 RoleService.roleGet 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 权限组 @@ -119,7 +122,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) { log.info("\t> 执行 Service 层 RoleService.roleEdit 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 相关信息 @@ -143,7 +146,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleDelete(HttpServletRequest request, Long id) { log.info("\t> 执行 Service 层 RoleService.roleDelete 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 相关信息 @@ -165,7 +168,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException { log.info("\t> 执行 Service 层 RoleService.addRole 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 检查权限名称是否重复 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 ea05552..6f5893b 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -5,7 +5,8 @@ import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; -import com.jsl.oa.model.dodata.RoleDO; +import com.jsl.oa.mapper.RoleMapper; + import com.jsl.oa.model.dodata.RoleUserDO; import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.vodata.*; @@ -22,8 +23,6 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; -import java.util.List; -import java.util.Objects; import java.util.regex.Pattern; /** @@ -42,16 +41,22 @@ import java.util.regex.Pattern; @RequiredArgsConstructor public class UserServiceImpl implements UserService { + private final RoleMapper roleMapper; private final UserDAO userDAO; private final RoleDAO roleDAO; private final PermissionDAO permissionDAO; + @Override + public UserDO getUserInfoByUsername(String username) { + return userDAO.getUserInfoByUsername(username); + } + @Override public BaseResponse userDelete(HttpServletRequest request, Long id) { log.info("\t> 执行 Service 层 UserService.userDelete 方法"); //判断用户是否存在 if (userDAO.isExistUser(id)) { - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 用户是否已删除 @@ -69,7 +74,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { log.info("\t> 执行 Service 层 UserService.userLock 方法"); - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //判断用户是否存在 @@ -127,15 +132,14 @@ public class UserServiceImpl implements UserService { return ResultUtil.success(userCurrentBackVO); } + @SuppressWarnings("checkstyle:NestedIfDepth") @Override @CheckUserAbleToUse - public BaseResponse userCurrent( - String id, - String username, - String email, - String phone, - HttpServletRequest request - ) { + public BaseResponse userCurrent(HttpServletRequest request, + String id, + String username, + String email, + String phone) { log.info("\t> 执行 Service 层 UserService.userCurrent 方法"); if (id == null && username == null && email == null && phone == null) { // Token获取信息 @@ -148,21 +152,13 @@ public class UserServiceImpl implements UserService { } else { // 检查是否是管理员用户 Long userId = Processing.getAuthHeaderToUserId(request); - if (userId != null) { - List getPermission = permissionDAO.getPermission(userId); - // 匹配权限 - if (!getPermission.contains("user.current")) { - log.info("\t> 用户权限不足,检查是否是管理员"); - // 检查用户是管理员 - RoleUserDO roleUserDO = roleDAO - .getRoleUserByUid(Objects.requireNonNull(Processing.getAuthHeaderToUserId(request))); - if (roleUserDO == null) { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); - if (!roleUserDO.getRid().equals(roleDO.getId())) { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } + if (userId != null && !permissionDAO.getPermission(userId).contains("user.current")) { + log.info("\t> 用户权限不足,检查是否是管理员"); + + RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); + + if (roleUserDO == null || !roleUserDO.getRid().equals(roleMapper.getRoleByRoleName("admin").getId())) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); } } else { return ResultUtil.error(ErrorCode.TOKEN_NOT_EXIST); @@ -192,7 +188,7 @@ public class UserServiceImpl implements UserService { public BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request) { log.info("\t> 执行 Service 层 UserService.userAdd 方法"); // 检测用户是否为管理员 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //如果用户不重复,添加用户 @@ -230,7 +226,7 @@ public class UserServiceImpl implements UserService { public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) { log.info("\t> 执行 Service 层 userEdit 方法"); // 检测用户是否为管理员 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //根据id获取用户信息 diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index 26ba713..bb01d53 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -51,7 +51,8 @@ public enum ErrorCode { PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"), PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"), PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"), - PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"); + PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"), + PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"); private final String output; diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index a46d305..16a1ea8 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -182,9 +182,9 @@ public class Processing { /** * 检查用户是否是老师 * - * @param request 请求 - * @param roleMapper RoleMapper - * @return 如果为 true 是老师,false 不是老师 + * @param request + * @param roleMapper + * @return */ public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) { RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); @@ -205,16 +205,11 @@ public class Processing { /** - * 将属性从源对象复制到目标对象。 - * - * @param 目标对象的类型。 - * @param 源对象的类型。 - * @param source 从中复制属性的源对象。 - * @param target 属性将复制到的目标对象。 - * @return 复制属性后的目标对象。 - * @throws ClassCopyException 如果在复制过程中出现错误。 - */ - @Contract(pure = true) + * @Description: VO类与实体类属性赋值 + * @Date: 2024/1/18 + * @Param source: + * @Param dest: + **/ public static T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { Class sourceClass = source.getClass(); Class targetClass = target.getClass(); @@ -285,10 +280,7 @@ public class Processing { * @return {@link BaseResponse} */ public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo( - @NotNull UserDO userDO, - RoleDAO roleDAO, - PermissionDAO permissionDAO - ) { + @NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) { UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent(); // 获取用户角色 RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId()); @@ -308,29 +300,30 @@ public class Processing { // 获取权限列表信息 getPermissionForString = permissionDAO.getPermission(userDO.getId()); } - userCurrent.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()) - .setIsDelete(userDO.getIsDelete())) - .setRole(new UserCurrentBackVO.ReturnUserRole().setRid(getUserRole.getRid())) - .setPermission(getPermissionForString); + userCurrent.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()). + setIsDelete(userDO.getIsDelete())). + setRole(new UserCurrentBackVO.ReturnUserRole(). + setRid(getUserRole.getRid())). + setPermission(getPermissionForString); return userCurrent; } @@ -356,7 +349,11 @@ public class Processing { return userDOS; } - public static void projectTosimply(ProjectSimpleVO projectSimpleVO, ProjectDO projectDO, UserDAO userDAO, ObjectMapper objectMapper) { + public static void projectTosimply( + ProjectSimpleVO projectSimpleVO, + ProjectDO projectDO, + UserDAO userDAO, + ObjectMapper objectMapper) { projectSimpleVO.setId(projectDO.getId()); projectSimpleVO.setName(projectDO.getName()); @@ -432,4 +429,39 @@ public class Processing { return vo; } + + + /** + * @Description: 转换审核的类别属性为字符串 + * @Date: 2024/4/11 + * @Param category: + **/ + public static String turnReviewCategory(Integer category) { + switch (category) { + case 0: + return "子系统"; + case 1: + return "模块"; + default: + return "其他"; + } + } + + public static String turnReviewResult(Integer result) { + switch (result) { + case 0: + return "已拒绝"; + case 1: + return "已审批"; + case 2: + return "待审核"; + default: + return "其他"; + } + } + + + + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3cbfb34..a5e9350 100755 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ maven: - timestamp: @buildDate@ + timestamp: 2024/3/10 spring: profiles: active: @profile.active@ \ No newline at end of file -- 2.43.0 From b994aeefd8db2db5323fbdd6d3b502b7a70d33f9 Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Thu, 11 Apr 2024 19:10:07 +0800 Subject: [PATCH 05/34] =?UTF-8?q?feat:=E5=AE=9A=E6=97=B6=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E5=BF=AB=E5=88=B0=E6=9C=9F=E9=A1=B9=E7=9B=AE=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/MessageController.java | 19 ----- .../java/com/jsl/oa/mapper/ProjectMapper.java | 6 ++ .../com/jsl/oa/services/MessageService.java | 2 + .../oa/services/impl/MessageServiceImpl.java | 73 ++++++++++++++++++- .../oa/services/timese/MessageTimeTask.java | 20 +++++ 5 files changed, 100 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/jsl/oa/services/timese/MessageTimeTask.java diff --git a/src/main/java/com/jsl/oa/controllers/MessageController.java b/src/main/java/com/jsl/oa/controllers/MessageController.java index d511a9f..2418ff8 100644 --- a/src/main/java/com/jsl/oa/controllers/MessageController.java +++ b/src/main/java/com/jsl/oa/controllers/MessageController.java @@ -71,24 +71,5 @@ public class MessageController { } } - /** - * 指派时消息 - * - * @param request - * @return - */ - @PostMapping("/message/assign") - public BaseResponse messageAssign( - @RequestParam Integer pId, - @RequestParam Integer systemId, - @RequestParam Integer moddleId, - @RequestParam Long uId, - @RequestParam Long isPass, - HttpServletRequest request) { - //messageService.messageAdd(pId, systemId, moddleId, uId, isPass, request); - return ResultUtil.success(); - } - - } diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index dc25d03..e25b13b 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; +import java.time.LocalDateTime; import java.util.List; @Mapper @@ -115,4 +116,9 @@ public interface ProjectMapper { @Select("select principal_id from organize_oa.oa_project_work where pid=#{id}") List getMemberBySystemId(Integer id); + + @Select("select * from organize_oa.oa_project_work " + + "where DATE(deadline) = DATE(#{threeDayLater}) and is_finish != 1") + List getProjectWorkByTime(LocalDateTime threeDayLater); + } diff --git a/src/main/java/com/jsl/oa/services/MessageService.java b/src/main/java/com/jsl/oa/services/MessageService.java index 89c2910..dd54b98 100644 --- a/src/main/java/com/jsl/oa/services/MessageService.java +++ b/src/main/java/com/jsl/oa/services/MessageService.java @@ -30,4 +30,6 @@ public interface MessageService { void messageAdd(Integer pId, Integer type, Integer systemId, HttpServletRequest request); void messageAdd(Integer pId, Integer systmeId, Integer moddleId, Integer type, HttpServletRequest request); void messageAdd(Integer pId, Integer systemId, Integer moddleId); + + void messageRemind(); } diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index 3bb8f67..4c8100c 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -4,6 +4,7 @@ import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.MessageMapper; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.model.dodata.MessageDO; +import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.vodata.MessageAddVO; import com.jsl.oa.model.vodata.MessageGetVO; import com.jsl.oa.services.MessageService; @@ -246,7 +247,7 @@ public class MessageServiceImpl implements MessageService { } /** - * 添加日报消息 + * 添加成员填写日报消息 * * @param pId 项目id * @param systemId 系统id @@ -272,6 +273,76 @@ public class MessageServiceImpl implements MessageService { messageMapper.messageAdd(messageAddVO); } + /** + * 添加提醒消息 + * 系统/模块到期提醒 + */ + @Override + public void messageRemind() { + // 当前时间 + LocalDateTime now = LocalDateTime.now(); + // 三天后时间 + LocalDateTime threeDaysLater = now.plusDays(3); + // 七天后时间 + LocalDateTime sevenDaysLater = now.plusDays(7); + // 获取三天后到期的系统/模块 + List projectWorkDOList = projectMapper.getProjectWorkByTime(threeDaysLater); + // 获取七天后到期的系统/模块 + List projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater); + if (!projectWorkDOList1.isEmpty()) { + for (ProjectWorkDO projectWorkDO : projectWorkDOList) { + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectWorkDO.getPrincipalId()); + messageAddVO.setTitle("提醒消息"); + // 0:系统 1:模块 + String projectName = projectMapper + .tgetProjectById(projectWorkDO.getProjectId().intValue()).getName(); + String systemName; + if (projectWorkDO.getType() == 1) { + systemName = projectMapper.getWorkById(projectWorkDO.getPid().intValue()).getName(); + String moddleName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" + + "还有七天就要到期了,请及时处理"); + messageAddVO.setType("跳转模块页"); + } else { + systemName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统" + + "还有七天就要到期了,请及时处理"); + messageAddVO.setType("跳转系统页"); + } + messageAddVO.setToId(projectWorkDO.getId().intValue()); + messageMapper.messageAdd(messageAddVO); + } + } + if (!projectWorkDOList.isEmpty()) { + for (ProjectWorkDO projectWorkDO : projectWorkDOList) { + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectWorkDO.getPrincipalId()); + messageAddVO.setTitle("提醒消息"); + // 0:系统 1:模块 + String projectName = projectMapper + .tgetProjectById(projectWorkDO.getProjectId().intValue()).getName(); + String systemName; + if (projectWorkDO.getType() == 1) { + systemName = projectMapper.getWorkById(projectWorkDO.getPid().intValue()).getName(); + String moddleName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" + + "还有三天就要到期了,请及时处理"); + messageAddVO.setType("跳转模块页"); + } else { + systemName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统" + + "还有三天就要到期了,请及时处理"); + messageAddVO.setType("跳转系统页"); + } + messageAddVO.setToId(projectWorkDO.getId().intValue()); + messageMapper.messageAdd(messageAddVO); + } + } + } + } diff --git a/src/main/java/com/jsl/oa/services/timese/MessageTimeTask.java b/src/main/java/com/jsl/oa/services/timese/MessageTimeTask.java new file mode 100644 index 0000000..e998487 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/timese/MessageTimeTask.java @@ -0,0 +1,20 @@ +package com.jsl.oa.services.timese; + + +import com.jsl.oa.services.MessageService; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class MessageTimeTask { + @Resource + private MessageService messageService; + + // 每天0点执行一次 + @Scheduled(cron = "0 0 0 * * ?") + public void messageRemind() { + messageService.messageRemind(); + } +} -- 2.43.0 From 5f0e58ab06154a872b4cf99b0b37d53dddc620e8 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 11 Apr 2024 19:31:16 +0800 Subject: [PATCH 06/34] =?UTF-8?q?feat:=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E7=BA=A6=E4=BF=AE=E6=94=B9=EF=BC=8CBUG=20=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...slOrganizeInternalOaRunnerApplication.java | 4 +- .../com/jsl/oa/aspect/AnnotationsAspect.java | 4 +- .../jsl/oa/common/constant/SafeConstants.java | 9 +++- .../jsl/oa/controllers/MessageController.java | 7 ++- .../oa/controllers/PermissionController.java | 6 ++- .../jsl/oa/controllers/RoleController.java | 37 +++++++------- .../jsl/oa/controllers/UserController.java | 37 +++++++++++--- src/main/java/com/jsl/oa/dao/RoleDAO.java | 29 +++++++++-- src/main/java/com/jsl/oa/dao/UserDAO.java | 6 ++- .../java/com/jsl/oa/mapper/RoleMapper.java | 3 +- .../java/com/jsl/oa/mapper/UserMapper.java | 18 ++++--- .../jsl/oa/model/dodata/ProjectCuttingDO.java | 4 +- .../com/jsl/oa/model/vodata/UserAddVO.java | 7 +-- .../com/jsl/oa/model/vodata/UserEditVO.java | 3 +- .../java/com/jsl/oa/services/RoleService.java | 4 +- .../jsl/oa/services/impl/AuthServiceImpl.java | 2 +- .../jsl/oa/services/impl/InfoServiceImpl.java | 8 +-- .../oa/services/impl/ModuleServiceImpl.java | 8 ++- .../oa/services/impl/ProjectServiceImpl.java | 14 ++--- .../jsl/oa/services/impl/RoleServiceImpl.java | 14 ++--- .../jsl/oa/services/impl/UserServiceImpl.java | 10 ++-- src/main/java/com/jsl/oa/utils/JwtUtil.java | 4 +- .../java/com/jsl/oa/utils/Processing.java | 51 +++++++++---------- .../com/jsl/oa/utils/redis/RoleRedisUtil.java | 3 +- 24 files changed, 177 insertions(+), 115 deletions(-) diff --git a/src/main/java/com/jsl/oa/JslOrganizeInternalOaRunnerApplication.java b/src/main/java/com/jsl/oa/JslOrganizeInternalOaRunnerApplication.java index 8028d1c..6ccf80f 100644 --- a/src/main/java/com/jsl/oa/JslOrganizeInternalOaRunnerApplication.java +++ b/src/main/java/com/jsl/oa/JslOrganizeInternalOaRunnerApplication.java @@ -39,7 +39,7 @@ public class JslOrganizeInternalOaRunnerApplication implements SmartInitializing public void afterSingletonsInstantiated() { // 获取数据库中的 SecurityKey try { - SafeConstants.SECRET_KEY = infoMapper.getSecurityKey().getData(); + SafeConstants.setSecretKey(infoMapper.getSecurityKey().getData()); } catch (NullPointerException exception) { // 生成密钥 String key = Processing.generateKey(System.currentTimeMillis()); @@ -53,7 +53,7 @@ public class JslOrganizeInternalOaRunnerApplication implements SmartInitializing .setData(json) .setCreatedAt(new Timestamp(System.currentTimeMillis())); infoMapper.insertSecurityKey(configDO); - SafeConstants.SECRET_KEY = key; + SafeConstants.setSecretKey(key); } } } diff --git a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java index 9356fd2..ff0b6de 100644 --- a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java +++ b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java @@ -91,12 +91,12 @@ public class AnnotationsAspect { } else { log.info("\t> 用户权限不足,检查是否是管理员"); // 检查用户是管理员 - RoleUserDO roleUserDO = roleDAO.roleMapper + RoleUserDO roleUserDO = roleDAO .getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO == null) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } - RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); + RoleDO roleDO = roleDAO.getRoleByRoleName("admin"); if (roleUserDO.getRid().equals(roleDO.getId())) { return pjp.proceed(); } else { diff --git a/src/main/java/com/jsl/oa/common/constant/SafeConstants.java b/src/main/java/com/jsl/oa/common/constant/SafeConstants.java index a9071d1..a712abe 100644 --- a/src/main/java/com/jsl/oa/common/constant/SafeConstants.java +++ b/src/main/java/com/jsl/oa/common/constant/SafeConstants.java @@ -1,5 +1,12 @@ package com.jsl.oa.common.constant; +import lombok.Getter; +import lombok.Setter; + public class SafeConstants { - public static String SECRET_KEY; + + @Getter + @Setter + private static String secretKey; + } diff --git a/src/main/java/com/jsl/oa/controllers/MessageController.java b/src/main/java/com/jsl/oa/controllers/MessageController.java index 2418ff8..76f1e50 100644 --- a/src/main/java/com/jsl/oa/controllers/MessageController.java +++ b/src/main/java/com/jsl/oa/controllers/MessageController.java @@ -1,4 +1,5 @@ package com.jsl.oa.controllers; + import com.jsl.oa.services.MessageService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -7,7 +8,10 @@ import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; @@ -70,6 +74,5 @@ public class MessageController { return messageService.messageGet(begin, end, page, pageSize, uid); } } - } diff --git a/src/main/java/com/jsl/oa/controllers/PermissionController.java b/src/main/java/com/jsl/oa/controllers/PermissionController.java index 2c003b4..c0d37f7 100755 --- a/src/main/java/com/jsl/oa/controllers/PermissionController.java +++ b/src/main/java/com/jsl/oa/controllers/PermissionController.java @@ -88,7 +88,11 @@ public class PermissionController { * @return {@link BaseResponse} 对象,包含操作结果。 */ @PutMapping("/permission/edit") - public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, BindingResult bindingResult, HttpServletRequest request) { + public BaseResponse permissionEdit( + @RequestBody @Validated PermissionEditVO permissionEditVo, + BindingResult bindingResult, + HttpServletRequest request + ) { log.info("请求接口[PUT]: /permission/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 43fe0bc..96c81dc 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -58,7 +58,11 @@ public class RoleController { * @return {@link BaseResponse} */ @PutMapping("/role/edit") - public BaseResponse roleEdit(HttpServletRequest request, @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) { + public BaseResponse roleEdit( + @RequestBody @Validated RoleEditVO roleEditVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request + ) { log.info("请求接口[PUT]: /role/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -89,7 +93,7 @@ public class RoleController { /** * 用户权限授予 * - * @return + * @return baseResponse */ @PostMapping("role/user/add") public BaseResponse roleAddUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) { @@ -104,7 +108,7 @@ public class RoleController { /** * 用户权限删除 * - * @return + * @return baseResponse */ @DeleteMapping("role/user/remove") public BaseResponse roleRemoveUser(HttpServletRequest request, @RequestParam Long uid) { @@ -116,15 +120,17 @@ public class RoleController { return roleService.roleRemoveUser(request, uid); } - /** - * @Description: 添加用户权限 - * @Date: 2024/1/19 - * @Param request: - * @Param uid: - **/ + *

角色添加

+ *
+ * 角色添加接口 + */ @PostMapping("role/add") - public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult) throws ClassCopyException { + public BaseResponse addRole( + @RequestBody @Validated RoleAddVo roleAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request + ) throws ClassCopyException { log.info("请求接口[POST]: /role/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -133,14 +139,11 @@ public class RoleController { return roleService.addRole(request, roleAddVO); } - /** - * @Description: 改变用户角色权限信息 - * @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"); diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index de4b659..74330df 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -77,7 +77,10 @@ public class UserController { * @return {@link BaseResponse} */ @PutMapping("/user/profile/edit") - public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, BindingResult bindingResult) { + public BaseResponse userEditProfile( + @RequestBody @Validated UserEditProfileVO userEditProfileVO, + BindingResult bindingResult + ) { log.info("请求接口[PUT]: /user/profile/edit"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -100,7 +103,13 @@ public class UserController { * @return {@link BaseResponse} */ @GetMapping("/user/current") - public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) { + public BaseResponse userCurrent( + @RequestParam @Nullable String id, + @RequestParam @Nullable String username, + @RequestParam @Nullable String email, + @RequestParam @Nullable String phone, + @NotNull HttpServletRequest request + ) { log.info("请求接口[GET]: /user/current"); // 检查数据是否有问题 if (id != null && !id.isEmpty()) { @@ -119,7 +128,10 @@ public class UserController { } } 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 + )) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "手机格式不正确"); } } @@ -136,8 +148,11 @@ public class UserController { * @return {@link BaseResponse} */ @PostMapping("/user/current/all") - public BaseResponse userCurrentAll(@RequestBody @Validated UserAllCurrentVO userAllCurrentVO, - HttpServletRequest request, @NotNull BindingResult bindingResult) { + public BaseResponse userCurrentAll( + @RequestBody @Validated UserAllCurrentVO userAllCurrentVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request + ) { log.info("请求接口[POST]: /user/current/all"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -154,7 +169,11 @@ public class UserController { * @Param bindingResult: **/ @PostMapping("/user/add") - public BaseResponse userAdd(@RequestBody @Validated UserAddVO userAddVo, BindingResult bindingResult, HttpServletRequest request) { + public BaseResponse userAdd( + @RequestBody @Validated UserAddVO userAddVo, + BindingResult bindingResult, + HttpServletRequest request + ) { log.info("请求接口[POST]: /user/add"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -170,7 +189,11 @@ public class UserController { * @Param bindingResult: **/ @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()) { diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java index aaf6a18..4e15499 100644 --- a/src/main/java/com/jsl/oa/dao/RoleDAO.java +++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java @@ -18,7 +18,7 @@ import java.util.List; @Component @RequiredArgsConstructor public class RoleDAO { - public final RoleMapper roleMapper; + private final RoleMapper roleMapper; private final Gson gson; private final RoleRedisUtil roleRedisUtil; @@ -26,7 +26,12 @@ public class RoleDAO { log.info("\t> 执行 DAO 层 RoleDAO.addRoleUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); roleMapper.roleAddUser(uid, rid); - roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); + roleRedisUtil.setData( + BusinessConstants.USER, + uid.toString(), + gson.toJson(roleMapper.getRoleUserByUid(uid)), + 120 + ); } public void delRoleUser(Long uid) { @@ -82,8 +87,7 @@ public class RoleDAO { public RoleDO getRoleNameByUid(Long uid) { log.info("\t> 执行 DAO 层 RoleDAO.getRoleNameByUid 方法"); log.info("\t\t> 从 MySQL 获取数据"); - RoleDO roleDO = roleMapper.getRoleById(getRoleUserByUid(uid).getRid()); - return roleDO; + return roleMapper.getRoleById(getRoleUserByUid(uid).getRid()); } @@ -122,7 +126,12 @@ public class RoleDAO { log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (roleMapper.roleChangeUser(uid, rid)) { - roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120); + roleRedisUtil.setData( + BusinessConstants.USER, + uid.toString(), + gson.toJson(roleMapper.getRoleUserByUid(uid)), + 120 + ); return true; } else { return false; @@ -140,4 +149,14 @@ public class RoleDAO { return gson.fromJson(getRedisData, RoleUserDO.class); } } + + /** + * 根据角色名获取角色信息 + * + * @param roleName 角色名 + * @return 角色信息 + */ + public RoleDO getRoleByRoleName(String roleName) { + return roleMapper.getRoleByRoleName(roleName); + } } diff --git a/src/main/java/com/jsl/oa/dao/UserDAO.java b/src/main/java/com/jsl/oa/dao/UserDAO.java index dd16fc5..9c8f619 100755 --- a/src/main/java/com/jsl/oa/dao/UserDAO.java +++ b/src/main/java/com/jsl/oa/dao/UserDAO.java @@ -133,7 +133,8 @@ public class UserDAO { UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) .setCount(userMapper.getUsersCount()); - userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); + userCurrentDO.forEach(it -> userCurrentBackVO.getUsers() + .add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; } @@ -145,7 +146,8 @@ public class UserDAO { UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); userCurrentBackVO.setUsers(new ArrayList<>()) .setCount(userMapper.getUsersCount()); - userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); + userCurrentDO.forEach(it -> userCurrentBackVO.getUsers() + .add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); return userCurrentBackVO; } diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java index e35b10b..0cf0b78 100644 --- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java @@ -30,7 +30,8 @@ public interface RoleMapper { @Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC") List getRole(); - @Update("UPDATE organize_oa.oa_role SET role_name=#{roleName},display_name=#{displayName},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}") + @Update("UPDATE organize_oa.oa_role " + + "SET role_name=#{roleName},display_name=#{displayName},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}") boolean roleEdit(RoleDO getRole); @Update("UPDATE organize_oa.oa_role_user SET rid = #{rid},updated_at = current_timestamp WHERE uid = #{uid}") diff --git a/src/main/java/com/jsl/oa/mapper/UserMapper.java b/src/main/java/com/jsl/oa/mapper/UserMapper.java index 29fdcbf..37432cc 100755 --- a/src/main/java/com/jsl/oa/mapper/UserMapper.java +++ b/src/main/java/com/jsl/oa/mapper/UserMapper.java @@ -37,7 +37,8 @@ public interface UserMapper { @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} ") + @Update("UPDATE organize_oa.oa_user " + + "SET account_no_locked = #{isLock} ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") void userLock(Long id, Long isLock); @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}") @@ -77,11 +78,11 @@ public interface UserMapper { List getRecommendUser(); - @Update("UPDATE organize_oa.oa_user " + - "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " + - "signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " + - "description = #{description} ,updated_at = current_timestamp " + - "WHERE id = #{id}") + @Update("UPDATE organize_oa.oa_user " + + "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " + + "signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " + + "description = #{description} ,updated_at = current_timestamp " + + "WHERE id = #{id}") void updateUser(UserDO userDO); @Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}") @@ -96,7 +97,8 @@ public interface UserMapper { @Select("SELECT COUNT(*) FROM organize_oa.oa_user") Long getUsersCount(); - @Select("select oa_user.id,oa_user.username,oa_role.role_name from organize_oa.oa_user join organize_oa.oa_role_user " + - "on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id") + @Select("select oa_user.id,oa_user.username,oa_role.role_name " + + "from organize_oa.oa_user join organize_oa.oa_role_user " + + "on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id") List getPrincipal(); } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java index b79a8f7..a438d9b 100755 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java @@ -27,8 +27,8 @@ public class ProjectCuttingDO { private Long cycle; private String name; private String description; - private Integer is_delete; - private Integer is_finish; + private Integer isDelete; + private Integer isFinish; private Integer status; private boolean type; private Timestamp beginTime; diff --git a/src/main/java/com/jsl/oa/model/vodata/UserAddVO.java b/src/main/java/com/jsl/oa/model/vodata/UserAddVO.java index cfca43d..4394e49 100644 --- a/src/main/java/com/jsl/oa/model/vodata/UserAddVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/UserAddVO.java @@ -1,12 +1,12 @@ package com.jsl.oa.model.vodata; -import lombok.Getter; +import lombok.Data; import javax.validation.constraints.*; -@Getter +@Data public class UserAddVO { @NotBlank(message = "用户名不能为空") @@ -20,7 +20,8 @@ public class UserAddVO { private String address; @NotBlank(message = "电话不能为空") - @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 = "电话格式错误") + @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; @NotBlank(message = "邮箱不能为空") diff --git a/src/main/java/com/jsl/oa/model/vodata/UserEditVO.java b/src/main/java/com/jsl/oa/model/vodata/UserEditVO.java index 300335e..6cc4189 100644 --- a/src/main/java/com/jsl/oa/model/vodata/UserEditVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/UserEditVO.java @@ -21,7 +21,8 @@ public class UserEditVO { 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 = "电话格式错误") + @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 = "邮箱格式错误") diff --git a/src/main/java/com/jsl/oa/services/RoleService.java b/src/main/java/com/jsl/oa/services/RoleService.java index ba46e87..61a8d32 100644 --- a/src/main/java/com/jsl/oa/services/RoleService.java +++ b/src/main/java/com/jsl/oa/services/RoleService.java @@ -16,9 +16,9 @@ import javax.servlet.http.HttpServletRequest; * @since v1.1.0 */ public interface RoleService { - BaseResponse roleAddUser(HttpServletRequest request,Long uid, Long rid); + BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid); - BaseResponse roleRemoveUser(HttpServletRequest request,Long uid); + BaseResponse roleRemoveUser(HttpServletRequest request, Long uid); BaseResponse roleGet(HttpServletRequest request, String id); 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 25776df..0ead1c9 100755 --- a/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java @@ -273,7 +273,7 @@ public class AuthServiceImpl implements AuthService { getPermissionForString = permissionDAO.getPermission(userDO.getId()); } // 获取用户角色 - RoleUserDO getUserRole = roleDAO.roleMapper.getRoleUserByUid(userDO.getId()); + RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId()); if (getUserRole == null) { getUserRole = new RoleUserDO(); getUserRole.setRid(0L) 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 7540f9f..f0c70a2 100644 --- a/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/InfoServiceImpl.java @@ -2,8 +2,8 @@ package com.jsl.oa.services.impl; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.InfoDAO; +import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; -import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.info.CarouselDO; import com.jsl.oa.model.vodata.UserProfileVo; @@ -36,9 +36,9 @@ import java.util.List; @Service @RequiredArgsConstructor public class InfoServiceImpl implements InfoService { - private final RoleMapper roleMapper; private final InfoDAO infoDAO; private final UserDAO userDAO; + private final RoleDAO roleDAO; @Override @CheckUserHasPermission("info.image.add") @@ -131,7 +131,7 @@ public class InfoServiceImpl implements InfoService { public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) { log.info("\t> 执行 Service 层 InfoService.delHeaderImage 方法"); // 用户权限校验 - if (!Processing.checkUserIsAdmin(request, roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取轮播图信息 @@ -154,7 +154,7 @@ public class InfoServiceImpl implements InfoService { public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) { log.info("\t> 执行 Service 层 InfoService.editSettingHeaderImage 方法"); // 用户权限校验 - if (!Processing.checkUserIsAdmin(request, roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取轮播图信息 diff --git a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java index f3ccf55..c8d1d39 100644 --- a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java @@ -1,10 +1,9 @@ package com.jsl.oa.services.impl; -import com.jsl.oa.dao.ModuleDAO; import com.jsl.oa.dao.ProjectDAO; +import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ModuleMapper; -import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.vodata.ProjectWorkAndNameVO; import com.jsl.oa.services.ModuleService; @@ -24,11 +23,10 @@ import java.util.List; @Service @RequiredArgsConstructor public class ModuleServiceImpl implements ModuleService { - private final RoleMapper roleMapper; - private final ModuleDAO moduleDAO; private final ProjectDAO projectDAO; private final ModuleMapper moduleMapper; private final UserDAO userDAO; + private final RoleDAO roleDAO; @Override public BaseResponse getByProjectId(Integer projectId, HttpServletRequest request) { @@ -84,7 +82,7 @@ public class ModuleServiceImpl implements ModuleService { @Override public BaseResponse deleteById(HttpServletRequest request, Long id) { // 检测是否为管理员 - if (!Processing.checkUserIsAdmin(request, roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } 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 a2916e4..a2dc66c 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -4,9 +4,9 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.ProjectDAO; +import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ProjectMapper; -import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.UserDO; @@ -46,10 +46,10 @@ public class ProjectServiceImpl implements ProjectService { private final UserMapper userMapper; private final ProjectMapper projectMapper; - private final RoleMapper roleMapper; private final ProjectDAO projectDAO; private final UserDAO userDAO; private final ObjectMapper objectMapper; + private final RoleDAO roleDAO; @Override public BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd) { @@ -86,7 +86,7 @@ public class ProjectServiceImpl implements ProjectService { //是否是增加子系统 if (projectWorkVO.getType() == 0) { //是否是老师 - if (Processing.checkUserIsTeacher(request, roleMapper)) { + if (Processing.checkUserIsTeacher(request, roleDAO)) { projectDAO.projectWorkAdd(projectWorkVO); } else { return ResultUtil.error(ErrorCode.NOT_PERMISSION); @@ -230,7 +230,7 @@ public class ProjectServiceImpl implements ProjectService { //判断用户是否为老师 或者 项目负责人 - if (!Processing.checkUserIsTeacher(request, roleMapper) + if (!Processing.checkUserIsTeacher(request, roleDAO) || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } @@ -379,7 +379,7 @@ public class ProjectServiceImpl implements ProjectService { //判断是否是老师(项目负责人) - if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) { + if (listAll != null && Processing.checkUserIsTeacher(request, roleDAO)) { List projectDOList = projectDAO.get(userId, listAll, tags, isFinish); List projectSimpleVOList = new ArrayList<>(); for (ProjectDO projectDO : projectDOList) { @@ -457,7 +457,7 @@ public class ProjectServiceImpl implements ProjectService { //判断是否是老师(项目负责人) - if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) { + if (listAll != null && Processing.checkUserIsTeacher(request, roleDAO)) { List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); List projectSimpleVOList = new ArrayList<>(); for (ProjectDO projectDO : projectDOList) { @@ -505,7 +505,7 @@ public class ProjectServiceImpl implements ProjectService { log.info("\t> 执行 Service 层 ProjectService.projectDelete 方法"); //判断用户是否为老师 或者 项目负责人 - if (!Processing.checkUserIsTeacher(request, roleMapper)) { + if (!Processing.checkUserIsTeacher(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } 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 260f68c..41be8e8 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -45,7 +45,7 @@ public class RoleServiceImpl implements RoleService { @CheckUserHasPermission("role.add") public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) { log.info("\t> 执行 Service 层 RoleService.addRoleUser 方法"); - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleDAO)) { roleDAO.addRoleUser(uid, rid); return ResultUtil.success(); } else { @@ -57,7 +57,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) { log.info("\t> 执行 Service 层 RoleService.delRoleUser 方法"); - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleDAO)) { roleDAO.delRoleUser(uid); return ResultUtil.success(); } else { @@ -77,7 +77,7 @@ public class RoleServiceImpl implements RoleService { return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES); } //检测用户权限是否为管理员 - if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (Processing.checkUserIsAdmin(request, roleDAO)) { if (roleDAO.roleChangeUser(uid, rid)) { return ResultUtil.success(); } else { @@ -92,7 +92,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleGet(HttpServletRequest request, String id) { log.info("\t> 执行 Service 层 RoleService.roleGet 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 权限组 @@ -119,7 +119,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) { log.info("\t> 执行 Service 层 RoleService.roleEdit 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 相关信息 @@ -143,7 +143,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse roleDelete(HttpServletRequest request, Long id) { log.info("\t> 执行 Service 层 RoleService.roleDelete 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 获取 Role 相关信息 @@ -165,7 +165,7 @@ public class RoleServiceImpl implements RoleService { public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException { log.info("\t> 执行 Service 层 RoleService.addRole 方法"); // 检查用户权限 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 检查权限名称是否重复 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 ea05552..3b9e296 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -51,7 +51,7 @@ public class UserServiceImpl implements UserService { log.info("\t> 执行 Service 层 UserService.userDelete 方法"); //判断用户是否存在 if (userDAO.isExistUser(id)) { - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } // 用户是否已删除 @@ -69,7 +69,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { log.info("\t> 执行 Service 层 UserService.userLock 方法"); - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //判断用户是否存在 @@ -159,7 +159,7 @@ public class UserServiceImpl implements UserService { if (roleUserDO == null) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } - RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); + RoleDO roleDO = roleDAO.getRoleByRoleName("admin"); if (!roleUserDO.getRid().equals(roleDO.getId())) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } @@ -192,7 +192,7 @@ public class UserServiceImpl implements UserService { public BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request) { log.info("\t> 执行 Service 层 UserService.userAdd 方法"); // 检测用户是否为管理员 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //如果用户不重复,添加用户 @@ -230,7 +230,7 @@ public class UserServiceImpl implements UserService { public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) { log.info("\t> 执行 Service 层 userEdit 方法"); // 检测用户是否为管理员 - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //根据id获取用户信息 diff --git a/src/main/java/com/jsl/oa/utils/JwtUtil.java b/src/main/java/com/jsl/oa/utils/JwtUtil.java index 27602fa..9858c9f 100755 --- a/src/main/java/com/jsl/oa/utils/JwtUtil.java +++ b/src/main/java/com/jsl/oa/utils/JwtUtil.java @@ -34,7 +34,7 @@ public class JwtUtil { * @return 返回生成的Token */ public static String generateToken(@NotNull Long userId) { - Key key = Keys.hmacShaKeyFor(SafeConstants.SECRET_KEY.getBytes()); + Key key = Keys.hmacShaKeyFor(SafeConstants.getSecretKey().getBytes()); return Jwts.builder() .setSubject(userId.toString()) .setExpiration(new java.util.Date(System.currentTimeMillis() + EXPIRATION_TIME)) @@ -71,7 +71,7 @@ public class JwtUtil { * @return 返回获取到的用户名 */ public static Long getUserId(String token) { - Key key = Keys.hmacShaKeyFor(SafeConstants.SECRET_KEY.getBytes()); + Key key = Keys.hmacShaKeyFor(SafeConstants.getSecretKey().getBytes()); Jws claimsJws = Jwts.parserBuilder() .setSigningKey(key) .build() diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index a46d305..cd7d9ab 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -7,7 +7,6 @@ import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.exception.ClassCopyException; -import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.dodata.*; import com.jsl.oa.model.vodata.PermissionContentVo; import com.jsl.oa.model.vodata.ProjectSimpleVO; @@ -166,13 +165,12 @@ public class Processing { * 该方法用于检查用户是否是管理员,类型封装后字节返回结果 * * @param request 请求 - * @param roleMapper RoleMapper * @return 如果为 true 是管理员,false 不是管理员 */ - public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleMapper roleMapper) { - RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); + public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleDAO roleDAO) { + RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO != null) { - RoleDO roleDO = roleMapper.getRoleByRoleName("admin"); + RoleDO roleDO = roleDAO.getRoleByRoleName("admin"); return roleUserDO.getRid().equals(roleDO.getId()); } else { return false; @@ -183,13 +181,12 @@ public class Processing { * 检查用户是否是老师 * * @param request 请求 - * @param roleMapper RoleMapper * @return 如果为 true 是老师,false 不是老师 */ - public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) { - RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); + public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleDAO roleDAO) { + RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); if (roleUserDO != null) { - RoleDO roleDO = roleMapper.getRoleByRoleName("teacher"); + RoleDO roleDO = roleDAO.getRoleByRoleName("teacher"); return roleUserDO.getRid().equals(roleDO.getId()); } else { return false; @@ -211,11 +208,10 @@ public class Processing { * @param 源对象的类型。 * @param source 从中复制属性的源对象。 * @param target 属性将复制到的目标对象。 - * @return 复制属性后的目标对象。 * @throws ClassCopyException 如果在复制过程中出现错误。 */ @Contract(pure = true) - public static T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { + public static void copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { Class sourceClass = source.getClass(); Class targetClass = target.getClass(); @@ -254,26 +250,23 @@ public class Processing { } catch (IllegalAccessException ignored) { throw new ClassCopyException(); } - return null; } - /** - * @Description: 将性别转为字符形式 - * @Date: 2024/1/18 - **/ + *

获取性别

+ *
+ * 用于获取性别 + * + * @param sex 性别ID + * @return 返回中文性别 + */ @Contract(pure = true) public static @NotNull String getSex(short sex) { - if (sex == 0) { - return "保密"; + switch (sex) { + case 1: return "男"; + case 2: return "女"; + default: return "保密"; } - if (sex == 1) { - return "男"; - } - if (sex == 2) { - return "女"; - } - return " "; } /** @@ -356,8 +349,12 @@ public class Processing { return userDOS; } - public static void projectTosimply(ProjectSimpleVO projectSimpleVO, ProjectDO projectDO, UserDAO userDAO, ObjectMapper objectMapper) { - + public static void projectTosimply( + ProjectSimpleVO projectSimpleVO, + ProjectDO projectDO, + UserDAO userDAO, + ObjectMapper objectMapper + ) { projectSimpleVO.setId(projectDO.getId()); projectSimpleVO.setName(projectDO.getName()); projectSimpleVO.setTags(projectDO.getTags()); diff --git a/src/main/java/com/jsl/oa/utils/redis/RoleRedisUtil.java b/src/main/java/com/jsl/oa/utils/redis/RoleRedisUtil.java index aa3db0d..75a3d1a 100644 --- a/src/main/java/com/jsl/oa/utils/redis/RoleRedisUtil.java +++ b/src/main/java/com/jsl/oa/utils/redis/RoleRedisUtil.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; * @see com.jsl.oa.common.constant.BusinessConstants * @see com.jsl.oa.config.redis.RedisOperating * @author xiao_lfeng + * @param 泛型 */ @Slf4j @Component @@ -59,4 +60,4 @@ public class RoleRedisUtil extends RedisOperating { redisTemplate.expire(key, time, TimeUnit.MINUTES); return true; } -} \ No newline at end of file +} -- 2.43.0 From 381de9d54b205a20cb0b0b73d5d2a2c42bd8b5a4 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 11 Apr 2024 20:22:42 +0800 Subject: [PATCH 07/34] =?UTF-8?q?patch:=20=E6=BC=8F=E6=B4=9E=E4=BF=AE?= =?UTF-8?q?=E8=A1=A5=EF=BC=8C=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsl/oa/aspect/AnnotationsAspect.java | 7 +---- .../jsl/oa/controllers/UserController.java | 2 +- .../java/com/jsl/oa/mapper/ProjectMapper.java | 29 +++++-------------- .../com/jsl/oa/model/dodata/PageBeanDO.java | 1 + .../oa/services/impl/ProjectServiceImpl.java | 26 +++++++++++++++-- .../jsl/oa/services/impl/UserServiceImpl.java | 9 +++--- 6 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java index df6051e..6578f3c 100644 --- a/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java +++ b/src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java @@ -4,8 +4,6 @@ import com.jsl.oa.annotations.CheckUserAbleToUse; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; -import com.jsl.oa.dao.UserDAO; -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; @@ -45,11 +43,8 @@ import java.util.Objects; @Component @RequiredArgsConstructor public class AnnotationsAspect { - private final UserMapper userMapper; - private final RoleMapper roleMapper; private final RoleDAO roleDAO; - private final UserDAO userDAO; private final PermissionDAO permissionDAO; /** @@ -132,7 +127,7 @@ public class AnnotationsAspect { // 获取用户信息 Long userId = Processing.getAuthHeaderToUserId(request); - UserDO userDO =userMapper.getUserById(userId); + UserDO userDO = userMapper.getUserById(userId); // 用户不存在 if (userDO == null) { return ResultUtil.error(ErrorCode.USER_NOT_EXIST); diff --git a/src/main/java/com/jsl/oa/controllers/UserController.java b/src/main/java/com/jsl/oa/controllers/UserController.java index 74330df..c58d108 100644 --- a/src/main/java/com/jsl/oa/controllers/UserController.java +++ b/src/main/java/com/jsl/oa/controllers/UserController.java @@ -136,7 +136,7 @@ public class UserController { } } // 检查是否出现错误 - return userService.userCurrent(id, username, email, phone, request); + return userService.userCurrent(request, id, username, email, phone); } /** diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 66b5e24..fd80579 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -38,12 +38,8 @@ public interface ProjectMapper { ProjectDO tgetProjectById(Integer id); @Select("select * from organize_oa.oa_project_work where principal_id=#{uid}") - //"(select id from organize_oa.oa_project_work where id in)") List projectGetUserInCutting(Long uid); - @Insert("update organize_oa.oa_project_work set principal_id =#{uid} where id=#{pid}") - void projectAddUserInCutting(Long uid, Long pid); - @Select("select data from organize_oa.oa_config where value='project_show'") String getHeader(); @@ -54,11 +50,6 @@ public interface ProjectMapper { + " updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'") boolean setProjectShow(String setProjectShow); - //@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" + - //"like concat('%',#{tags},'%')") - - //@Select("select * from organize_oa.oa_project where is_finish=#{isFinish} - // and is_delete=false and principal_id=#{userId}") List getByIsfinish(Long userId, List isFinish); List getByTags(Long userId, List tags, List isFinish); @@ -75,15 +66,6 @@ public interface ProjectMapper { @Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}") boolean deleteProject(Long id); - @Update("UPDATE organize_oa.oa_project_cutting SET name = #{name}, " - + "tag = #{tag}, engineering = #{engineering}, estimated_time = #{estimatedTime}, " - + "real_time = #{realTime}, updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") - boolean projectCuttingUpdate(ProjectCuttingDO projectCuttingDO); - @Update("UPDATE organize_oa.oa_project_user SET uid = #{uid} , updated_at = CURRENT_TIMESTAMP WHERE id = #{id}") - boolean updateUserForProjectUser(Long uid, Long id); - - - List workgetByIsfinish(Long userId, List isFinish, Integer is); List workgetByTags(Long userId, List tags, Integer is, List isFinish); @@ -108,11 +90,11 @@ public interface ProjectMapper { @Select("select principal_id from organize_oa.oa_project_work where id=#{pid}") Long getPirIdbyWorkid(Long pid); - @Select("select principal_id from organize_oa.oa_project_work where id=#{id} AND" - + "is_delete = 0") + @Select("select principal_id from organize_oa.oa_project_work where id=#{id} " + + "AND is_delete = 0") Long getPid(Integer id); - @Select("select * from organize_oa.oa_project_work where id=#{id}" + @Select("select * from organize_oa.oa_project_work where id=#{id} " + "AND is_delete = 0") ProjectWorkDO getProjectWorkById(Long id); @@ -126,4 +108,9 @@ public interface ProjectMapper { + "where DATE(deadline) = DATE(#{threeDayLater}) and is_finish != 1") List getProjectWorkByTime(LocalDateTime threeDayLater); + List getAllSubmoduleByUserId(Long uid); + + List getProjectByPrincipalUser(Long uid); + + List getAllSubsystemByUserId(Long uid); } diff --git a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java index c235f49..37a22fe 100644 --- a/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/PageBeanDO.java @@ -14,6 +14,7 @@ import java.util.List; * @since v1.1.0 * @version v1.1.0 * @author 176yunxuan + * @param */ @Data 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 aa58f7c..c3b8f0d 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -78,6 +78,11 @@ public class ProjectServiceImpl implements ProjectService { return ResultUtil.success("添加成功"); } + @Override + public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid) { + return null; + } + @Override public BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) { log.info("\t> 执行 Service 层 ProjectService.projectWorkAdd 方法"); @@ -230,7 +235,7 @@ public class ProjectServiceImpl implements ProjectService { //判断用户是否为老师 或者 项目负责人 - if (!Processing.checkUserIsTeacher(request, roleMapper) + if (!Processing.checkUserIsTeacher(request, roleDAO) || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } @@ -336,7 +341,14 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse get(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer page, Integer pageSize) { + public BaseResponse get( + Integer listAll, + HttpServletRequest request, + List tags, + List isFinish, + Integer page, + Integer pageSize + ) { log.info("\t> 执行 Service 层 ProjectService.get 方法"); //获取用户 @@ -412,7 +424,15 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is, Integer page, Integer pageSize) { + public BaseResponse workget( + Integer listAll, + HttpServletRequest request, + List tags, + List isFinish, + Integer is, + Integer page, + Integer pageSize + ) { log.info("\t> 执行 Service 层 ProjectService.workget 方法"); //获取用户 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 314870f..a3c6d7f 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -5,8 +5,7 @@ import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; -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.*; @@ -23,6 +22,8 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.List; +import java.util.Objects; import java.util.regex.Pattern; /** @@ -40,8 +41,6 @@ import java.util.regex.Pattern; @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { - - private final RoleMapper roleMapper; private final UserDAO userDAO; private final RoleDAO roleDAO; private final PermissionDAO permissionDAO; @@ -74,7 +73,7 @@ public class UserServiceImpl implements UserService { @Override public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { log.info("\t> 执行 Service 层 UserService.userLock 方法"); - if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + if (!Processing.checkUserIsAdmin(request, roleDAO)) { return ResultUtil.error(ErrorCode.NOT_ADMIN); } //判断用户是否存在 -- 2.43.0 From 5a57ea4b1c58e2468fcf000f58e9425f9e1b9bba Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 11 Apr 2024 23:53:16 +0800 Subject: [PATCH 08/34] =?UTF-8?q?patch:=20=E6=95=B0=E6=8D=AE=E8=A1=A8?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysql/oa_project_child.sql | 23 +++++++++++++++++++++++ mysql/oa_project_modules.sql | 21 +++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 mysql/oa_project_child.sql create mode 100644 mysql/oa_project_modules.sql diff --git a/mysql/oa_project_child.sql b/mysql/oa_project_child.sql new file mode 100644 index 0000000..dfb119e --- /dev/null +++ b/mysql/oa_project_child.sql @@ -0,0 +1,23 @@ +USE organize_oa; + +create table oa_project_child +( + id bigint unsigned auto_increment comment '项目id' + primary key, + project_id bigint unsigned not null comment '主要项目id', + name varchar(100) not null comment '项目名称', + principal_id bigint unsigned not null comment '项目负责人', + description json null comment '项目描述(技术选择,描述)', + cycle int unsigned not null comment '项目周期', + work_load int unsigned default '1' not null comment '工作量(人天)', + files json null comment '子项目文件', + complete_time date null comment '完成时间', + created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间', + updated_at timestamp null comment '更新时间', + is_delete tinyint(1) default 0 not null comment '项目是否删除', + constraint oa_project_child_oa_user_id_fk + foreign key (principal_id) references oa_user (id) + on update cascade +) + comment '项目表'; + diff --git a/mysql/oa_project_modules.sql b/mysql/oa_project_modules.sql new file mode 100644 index 0000000..98a0d73 --- /dev/null +++ b/mysql/oa_project_modules.sql @@ -0,0 +1,21 @@ +USE organize_oa; + +create table oa_project_modules +( + id bigint unsigned auto_increment comment '模块id' + primary key, + project_child_id bigint unsigned not null comment '子项目id', + name varchar(100) not null comment '模块名称', + principal_id bigint unsigned not null comment '模块负责人', + description json null comment '项目描述(技术选择,描述)', + work_load int unsigned default '1' not null comment '工作量(人天)', + complete_time datetime null comment '完成时间', + created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间', + updated_at timestamp null comment '更新时间', + is_delete tinyint(1) default 0 not null comment '项目是否删除', + constraint oa_project_modules_oa_user_id_fk + foreign key (principal_id) references oa_user (id) + on update cascade +) + comment '模块表'; + -- 2.43.0 From 3b9a7cfe5e335a446a2cdf3334df3627901c9047 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 08:20:28 +0800 Subject: [PATCH 09/34] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E8=8E=B7=E5=8F=96=E6=88=91?= =?UTF-8?q?=E7=9A=84=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/common/constant/ReviewConstants.java | 23 ++++++ .../jsl/oa/controllers/ReviewController.java | 22 ++++-- .../java/com/jsl/oa/mapper/ReviewMapper.java | 9 +++ .../com/jsl/oa/services/ReviewService.java | 4 +- .../oa/services/impl/ReviewServiceImpl.java | 71 ++++++++++++++++++- 5 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/jsl/oa/common/constant/ReviewConstants.java diff --git a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java new file mode 100644 index 0000000..42ffd47 --- /dev/null +++ b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java @@ -0,0 +1,23 @@ +package com.jsl.oa.common.constant; + + +/** + *

Review常量类

+ *
+ * 用于存放审核信息的审批状态常量 + * + * @version v1.1.0 + * @since v1.1.0 + * @author zrx_hhh + */ +public class ReviewConstants { + + public static final int NOT_APPROVED = 0; + + public static final int APPROVED = 1; + + public static final int PENDING = 2; + +} + + diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index dff99f8..197462d 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -5,7 +5,6 @@ import com.jsl.oa.utils.BaseResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @@ -26,16 +25,29 @@ public class ReviewController { private final ReviewService reviewService; /** - * @Description: 获取我的审核列表 + * @Description: 获取审核记录列表 * @Date: 2024/4/11 * @Param request: **/ - @GetMapping("/review/getMyReview") - public BaseResponse getUserReview(@RequestParam Long projectId, HttpServletRequest request) { + @GetMapping("/review/getReviewRecords") + public BaseResponse getUserReviewRecords(HttpServletRequest request) { log.info("请求接口[GET]: /review/getMyReview"); - return reviewService.getUserReview(projectId, request); + return reviewService.getUserReview(request); } + + /** + * @Description: 获取我的审核数据 + * @Date: 2024/4/12 + * @Param request: + **/ + @GetMapping("/review/getMyReview") + public BaseResponse getMyReview(HttpServletRequest request) { + log.info("请求接口[GET]: /review/getMyReview"); + return reviewService.getUserPendingApprovalReview(request); + } + + } diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index ea2613e..604c048 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -12,10 +12,19 @@ public interface ReviewMapper { + "AND is_delete = 0") List selectAllReviewFromProject(Long projectId); + @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}" + + "AND is_delete = 0 AND review_result = #{result}") + List selectApprovedResultReviewFromProject(Long projectId, Integer result); + @Select("SELECT * FROM organize_oa.oa_review WHERE " + "project_subsystem_id = #{subsystemId} AND is_delete = 0") List selectReviewFromSubsystem(Long subsystemId); + @Select("SELECT * FROM organize_oa.oa_review WHERE " + + "project_subsystem_id = #{subsystemId} " + + "AND is_delete = 0 AND review_result = #{result}") + List selectApprovedResultReviewsFromSubsystem(Long subsystemId, Integer result); + @Select("SELECT * FROM organize_oa.oa_review WHERE " + "project_submodule_id = #{subsystemId} AND is_delete = 0") List selectReviewFromSubmodule(Long submoduleId); diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java index af5b9a2..acd3c04 100644 --- a/src/main/java/com/jsl/oa/services/ReviewService.java +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -7,6 +7,8 @@ import javax.servlet.http.HttpServletRequest; public interface ReviewService { - BaseResponse getUserReview(Long projectId, HttpServletRequest request); + BaseResponse getUserPendingApprovalReview(HttpServletRequest request); + + BaseResponse getUserReview(HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 2157ff6..9ddcd42 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -1,6 +1,7 @@ package com.jsl.oa.services.impl; +import com.jsl.oa.common.constant.ReviewConstants; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ReviewDAO; import com.jsl.oa.dao.UserDAO; @@ -20,6 +21,8 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; @Slf4j @@ -36,7 +39,65 @@ public class ReviewServiceImpl implements ReviewService { @Override - public BaseResponse getUserReview(Long projectId, HttpServletRequest request) { + public BaseResponse getUserPendingApprovalReview(HttpServletRequest request) { + log.info("\t> 执行 Service 层 ReviewService.getUserPendingApprovalReview 方法"); + + //获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //存储审核数据的数组 + List reviewData = new ArrayList<>(); + + //先获取用户为项目负责人的项目列表 + projectDAO.getProjectByPrincipalUser(userId); + + //先从用户为 项目负责人 的项目中获取对应 审核信息 + for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewMapper. + selectApprovedResultReviewFromProject(projectDO.getId(), + ReviewConstants.PENDING); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + //在从用户为 子系统负责人 的项目中获取对应 审核信息 + for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { + //查询每个项目下状态为2的审核信息 + List reviewDOS = reviewMapper. + selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), + ReviewConstants.PENDING); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + + //在从用户为 子模块负责人 的项目中获取对应 审核信息 + for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { + //查询每个项目下所有的审核信息 + List reviewDOS = reviewMapper. + selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), + ReviewConstants.PENDING); + //封装VO类 + reviewData.addAll(encapsulateArrayClass(reviewDOS)); + } + + + //按照申请时间降序排序 + Collections.sort(reviewData, new Comparator() { + @Override + public int compare(ReviewVO review1, ReviewVO review2) { + return review2.getApplicationTime().compareTo(review1.getApplicationTime()); + } + }); + + return ResultUtil.success(reviewData); + } + + + + @Override + public BaseResponse getUserReview(HttpServletRequest request) { log.info("\t> 执行 Service 层 ReviewService.getUserReview 方法"); //获取用户 @@ -76,6 +137,14 @@ public class ReviewServiceImpl implements ReviewService { reviewData.addAll(encapsulateArrayClass(reviewDOS)); } + //按照申请时间降序排序 + Collections.sort(reviewData, new Comparator() { + @Override + public int compare(ReviewVO review1, ReviewVO review2) { + return review2.getApplicationTime().compareTo(review1.getApplicationTime()); + } + }); + return ResultUtil.success(reviewData); } -- 2.43.0 From ff34595002669108e9eb8f589d37963006f1b0b2 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 09:20:51 +0800 Subject: [PATCH 10/34] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/common/constant/ReviewConstants.java | 8 ++- .../jsl/oa/controllers/ReviewController.java | 29 +++++++++ src/main/java/com/jsl/oa/dao/ReviewDAO.java | 45 ++++++++++++- .../java/com/jsl/oa/mapper/ReviewMapper.java | 1 + .../com/jsl/oa/model/vodata/ReviewAddVO.java | 29 +++++++++ .../com/jsl/oa/services/ReviewService.java | 2 + .../oa/services/impl/ReviewServiceImpl.java | 49 ++++++++++---- .../com/jsl/oa/mapper/ReviewMapper.xml | 64 +++++++++++++++++++ 8 files changed, 212 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java create mode 100644 src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml diff --git a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java index 42ffd47..029ff85 100644 --- a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java +++ b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java @@ -4,7 +4,7 @@ package com.jsl.oa.common.constant; /** *

Review常量类

*
- * 用于存放审核信息的审批状态常量 + * 用于存放审核信息的审批状态常量与类别常量 * * @version v1.1.0 * @since v1.1.0 @@ -12,12 +12,18 @@ package com.jsl.oa.common.constant; */ public class ReviewConstants { +// 审核状态 0:未通过;1:已通过;2:未审批 public static final int NOT_APPROVED = 0; public static final int APPROVED = 1; public static final int PENDING = 2; +// 审核类型 0:子系统;1:子模块 + public static final int SUBSYSTEM = 0; + + public static final int SUBMODULE = 1; + } diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index 197462d..14f4f22 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -1,13 +1,21 @@ package com.jsl.oa.controllers; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.services.ReviewService; import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import javax.validation.constraints.NotNull; /** * 审核控制器 @@ -48,6 +56,27 @@ public class ReviewController { } + /** + * @Description: 新增审核申请 + * @Date: 2024/4/12 + * @Param null: + **/ + @PostMapping("/review/add") + public BaseResponse addReview(@RequestBody @Validated ReviewAddVO reviewAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { + log.info("请求接口[POST]: /review/add"); + + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); + } + + return reviewService.addReview(reviewAddVO, request); + } + + + + } diff --git a/src/main/java/com/jsl/oa/dao/ReviewDAO.java b/src/main/java/com/jsl/oa/dao/ReviewDAO.java index 5309e98..85083bf 100644 --- a/src/main/java/com/jsl/oa/dao/ReviewDAO.java +++ b/src/main/java/com/jsl/oa/dao/ReviewDAO.java @@ -27,13 +27,54 @@ public class ReviewDAO { private final ReviewMapper reviewMapper; private final ProjectMapper projectMapper; - public List getPrincipalUserReview(Long pid) { - return reviewMapper.selectAllReviewFromProject(pid); + + public List selectAllReviewFromProject(Long projectId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectAllReviewFromProject 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectAllReviewFromProject(projectId); } + public List selectApprovedResultReviewFromProject(Long projectId, + Integer result) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewFromProject 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectApprovedResultReviewFromProject(projectId, + result); + } + + public List selectReviewFromSubsystem(Long subsystemId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewFromSubsystem 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectReviewFromSubsystem(subsystemId); + } + + public List selectApprovedResultReviewsFromSubsystem(Long subsystemId, + Integer result) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewsFromSubsystem 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectApprovedResultReviewsFromSubsystem(subsystemId, + result); + } + + public List selectReviewFromSubmodule(Long submoduleId) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewFromSubmodule 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectReviewFromSubmodule(submoduleId); + } + + public void addReview(ReviewDO reviewDO) { + log.info("\t> 执行 DAO 层 ReviewDAO.addReview 方法"); + log.info("\t\t> 从 MySQL 插入数据"); + reviewMapper.addReview(reviewDO); + } + + public String getNameBySubproject(Long subId) { + log.info("\t> 执行 DAO 层 ReviewDAO.getNameBySubproject 方法"); + if (subId != null) { + log.info("\t\t> 从 MySQL 获取数据"); return projectMapper.getProjectWorkById(subId).getName(); } diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index 604c048..541d3f5 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -32,5 +32,6 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0") ReviewDO selectReviewById(Long id); + void addReview(ReviewDO reviewDO); } diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java new file mode 100644 index 0000000..640fcc3 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewAddVO.java @@ -0,0 +1,29 @@ +package com.jsl.oa.model.vodata; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class ReviewAddVO { + + //申请名称 + @NotBlank(message = "审核名称不能为空") + private String name; + //申请理由 + @NotBlank(message = "申请理由不能为空") + private String content; + //申请的项目id + @NotNull(message = "项目id不能为空") + private Long projectId; + //申请的子系统id + @NotNull(message = "子系统id不能为空") + private Long projectSubsystemId; + //申请的子模块id + private Long projectSubmoduleId; + +} + + diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java index acd3c04..606b3eb 100644 --- a/src/main/java/com/jsl/oa/services/ReviewService.java +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -1,6 +1,7 @@ package com.jsl.oa.services; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -11,4 +12,5 @@ public interface ReviewService { BaseResponse getUserReview(HttpServletRequest request); + BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 9ddcd42..04d3012 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -5,11 +5,11 @@ import com.jsl.oa.common.constant.ReviewConstants; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ReviewDAO; import com.jsl.oa.dao.UserDAO; -import com.jsl.oa.mapper.ReviewMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.dodata.ReviewDO; +import com.jsl.oa.model.vodata.ReviewAddVO; import com.jsl.oa.model.vodata.ReviewVO; import com.jsl.oa.services.ReviewService; import com.jsl.oa.utils.BaseResponse; @@ -20,10 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.util.*; @Slf4j @Service @@ -35,7 +32,6 @@ public class ReviewServiceImpl implements ReviewService { private final ProjectDAO projectDAO; private final UserMapper userMapper; - private final ReviewMapper reviewMapper; @Override @@ -54,7 +50,7 @@ public class ReviewServiceImpl implements ReviewService { //先从用户为 项目负责人 的项目中获取对应 审核信息 for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewFromProject(projectDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -64,7 +60,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子系统负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { //查询每个项目下状态为2的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -75,7 +71,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子模块负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 @@ -112,7 +108,7 @@ public class ReviewServiceImpl implements ReviewService { //先从用户为 项目负责人 的项目中获取对应 审核信息 for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectAllReviewFromProject(projectDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -121,7 +117,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子系统负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectReviewFromSubsystem(projectWorkDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -131,7 +127,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子模块负责人 的项目中获取对应 审核信息 for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { //查询每个项目下所有的审核信息 - List reviewDOS = reviewMapper. + List reviewDOS = reviewDAO. selectReviewFromSubmodule(projectWorkDO.getId()); //封装VO类 reviewData.addAll(encapsulateArrayClass(reviewDOS)); @@ -149,6 +145,35 @@ public class ReviewServiceImpl implements ReviewService { } + + @Override + public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) { + log.info("\t> 执行 Service 层 ReviewService.addReview 方法"); + + //获取用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //定义要添加的审核实体类 + ReviewDO reviewDO = new ReviewDO(); + //现将属性相同的值拷贝 + Processing.copyProperties(reviewAddVO, reviewDO); + + //定义审核的类型(子模块id为空则为 子系统类型,否则为子模块类型) + if (reviewAddVO.getProjectSubmoduleId() == null) { + reviewDO.setCategory(ReviewConstants.SUBSYSTEM); + } else if (reviewAddVO.getProjectSubmoduleId() != null) { + reviewDO.setCategory(ReviewConstants.SUBMODULE); + } + + //定义申请者id + reviewDO.setSenderId(userId); + //添加数据 + reviewDAO.addReview(reviewDO); + + return ResultUtil.success("申请成功"); + } + + /** * @Description: 封装审核的VO类 * @Date: 2024/4/11 diff --git a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml new file mode 100644 index 0000000..2a59034 --- /dev/null +++ b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml @@ -0,0 +1,64 @@ + + + + + + insert into organize_oa.oa_review + + + + name = #{name}, + + + + content = #{content}, + + + + sender_id = #{sender_id}, + + + + recipient_id = #{recipient_id}, + + + + category = #{category}, + + + + project_id = #{project_id}, + + + + project_subsystem_id = #{project_subsystem_id}, + + + + project_submodule_id = #{project_submodule_id}, + + + + application_time = #{application_time}, + + + + review_time = #{review_time}, + + + + review_result = #{review_result}, + + + + is_delete = #{is_delete}, + + + + where id = #{id} + + + + \ No newline at end of file -- 2.43.0 From ec45c0b233094e3de7fe0b4e8e0b7a1e7dd840d4 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 14:28:28 +0800 Subject: [PATCH 11/34] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/common/constant/ReviewConstants.java | 10 ++-- .../jsl/oa/controllers/ReviewController.java | 21 +++++-- src/main/java/com/jsl/oa/dao/ReviewDAO.java | 16 +++++- .../java/com/jsl/oa/mapper/ReviewMapper.java | 6 +- .../com/jsl/oa/model/dodata/ReviewDO.java | 6 +- .../oa/model/vodata/ReviewUpdateResultVO.java | 23 ++++++++ .../com/jsl/oa/services/ReviewService.java | 3 + .../oa/services/impl/ReviewServiceImpl.java | 28 +++++++++ src/main/java/com/jsl/oa/utils/ErrorCode.java | 3 +- .../java/com/jsl/oa/utils/Processing.java | 4 +- .../com/jsl/oa/mapper/ReviewMapper.xml | 57 +++++++++++++++++++ 11 files changed, 158 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/vodata/ReviewUpdateResultVO.java diff --git a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java index 029ff85..3468ef4 100644 --- a/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java +++ b/src/main/java/com/jsl/oa/common/constant/ReviewConstants.java @@ -13,16 +13,16 @@ package com.jsl.oa.common.constant; public class ReviewConstants { // 审核状态 0:未通过;1:已通过;2:未审批 - public static final int NOT_APPROVED = 0; + public static final short NOT_APPROVED = 0; - public static final int APPROVED = 1; + public static final short APPROVED = 1; - public static final int PENDING = 2; + public static final short PENDING = 2; // 审核类型 0:子系统;1:子模块 - public static final int SUBSYSTEM = 0; + public static final short SUBSYSTEM = 0; - public static final int SUBMODULE = 1; + public static final short SUBMODULE = 1; } diff --git a/src/main/java/com/jsl/oa/controllers/ReviewController.java b/src/main/java/com/jsl/oa/controllers/ReviewController.java index 14f4f22..d0d1659 100644 --- a/src/main/java/com/jsl/oa/controllers/ReviewController.java +++ b/src/main/java/com/jsl/oa/controllers/ReviewController.java @@ -1,6 +1,7 @@ package com.jsl.oa.controllers; import com.jsl.oa.model.vodata.ReviewAddVO; +import com.jsl.oa.model.vodata.ReviewUpdateResultVO; import com.jsl.oa.services.ReviewService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -9,10 +10,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.NotNull; @@ -76,6 +74,21 @@ public class ReviewController { + @PutMapping("/review/updateReview") + public BaseResponse updateReview(@RequestBody @Validated ReviewUpdateResultVO reviewUpdateResultVOVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { + log.info("请求接口[PUT]: /review/updateReview"); + + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); + } + + return reviewService.updateReviewResult(reviewUpdateResultVOVO, request); + } + + + } diff --git a/src/main/java/com/jsl/oa/dao/ReviewDAO.java b/src/main/java/com/jsl/oa/dao/ReviewDAO.java index 85083bf..11f8989 100644 --- a/src/main/java/com/jsl/oa/dao/ReviewDAO.java +++ b/src/main/java/com/jsl/oa/dao/ReviewDAO.java @@ -35,7 +35,7 @@ public class ReviewDAO { } public List selectApprovedResultReviewFromProject(Long projectId, - Integer result) { + short result) { log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewFromProject 方法"); log.info("\t\t> 从 MySQL 获取数据"); return reviewMapper.selectApprovedResultReviewFromProject(projectId, @@ -49,7 +49,7 @@ public class ReviewDAO { } public List selectApprovedResultReviewsFromSubsystem(Long subsystemId, - Integer result) { + short result) { log.info("\t> 执行 DAO 层 ReviewDAO.selectApprovedResultReviewsFromSubsystem 方法"); log.info("\t\t> 从 MySQL 获取数据"); return reviewMapper.selectApprovedResultReviewsFromSubsystem(subsystemId, @@ -68,6 +68,18 @@ public class ReviewDAO { reviewMapper.addReview(reviewDO); } + public ReviewDO selectReviewById(Long id) { + log.info("\t> 执行 DAO 层 ReviewDAO.selectReviewById 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return reviewMapper.selectReviewById(id); + } + + public void updateReview(ReviewDO reviewDO) { + log.info("\t> 执行 DAO 层 ReviewDAO.updateReview 方法"); + log.info("\t\t> 从 MySQL 更新数据"); + reviewMapper.updateReview(reviewDO); + } + public String getNameBySubproject(Long subId) { diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index 541d3f5..f1ed6b8 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -14,7 +14,7 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}" + "AND is_delete = 0 AND review_result = #{result}") - List selectApprovedResultReviewFromProject(Long projectId, Integer result); + List selectApprovedResultReviewFromProject(Long projectId, short result); @Select("SELECT * FROM organize_oa.oa_review WHERE " + "project_subsystem_id = #{subsystemId} AND is_delete = 0") @@ -23,7 +23,7 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE " + "project_subsystem_id = #{subsystemId} " + "AND is_delete = 0 AND review_result = #{result}") - List selectApprovedResultReviewsFromSubsystem(Long subsystemId, Integer result); + List selectApprovedResultReviewsFromSubsystem(Long subsystemId, short result); @Select("SELECT * FROM organize_oa.oa_review WHERE " + "project_submodule_id = #{subsystemId} AND is_delete = 0") @@ -32,6 +32,8 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0") ReviewDO selectReviewById(Long id); + void updateReview(ReviewDO reviewDO); + void addReview(ReviewDO reviewDO); } diff --git a/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java index e4423d1..467c2e5 100644 --- a/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ReviewDO.java @@ -31,7 +31,7 @@ public class ReviewDO { //审核者用户id private Long recipientId; //审核类别(0:子系统;1:子模块) - private Integer category; + private Short category; //申请的项目id private Long projectId; //申请的子系统id @@ -43,9 +43,9 @@ public class ReviewDO { //审核时间 private Date reviewTime; //审核结果(0:未通过;1:通过;2:未审批) - private Integer reviewResult; + private Short reviewResult; //是否删除(0:未删除;1:已删除) - private Integer isDelete; + private String isDelete; } diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewUpdateResultVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewUpdateResultVO.java new file mode 100644 index 0000000..11d8741 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewUpdateResultVO.java @@ -0,0 +1,23 @@ +package com.jsl.oa.model.vodata; + +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +@Data +public class ReviewUpdateResultVO { + + @NotNull + private Long id; + + @NotNull + @Min(value = 0, message = "未通过:0,已通过:1,待审批:2") + @Max(value = 2, message = "未通过:0,已通过:1,待审批:2") + private Short result; + + +} + + diff --git a/src/main/java/com/jsl/oa/services/ReviewService.java b/src/main/java/com/jsl/oa/services/ReviewService.java index 606b3eb..0457d36 100644 --- a/src/main/java/com/jsl/oa/services/ReviewService.java +++ b/src/main/java/com/jsl/oa/services/ReviewService.java @@ -2,6 +2,7 @@ package com.jsl.oa.services; import com.jsl.oa.model.vodata.ReviewAddVO; +import com.jsl.oa.model.vodata.ReviewUpdateResultVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -13,4 +14,6 @@ public interface ReviewService { BaseResponse getUserReview(HttpServletRequest request); BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request); + + BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVOVO, HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 04d3012..74b72c1 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -10,9 +10,11 @@ import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.dodata.ReviewDO; import com.jsl.oa.model.vodata.ReviewAddVO; +import com.jsl.oa.model.vodata.ReviewUpdateResultVO; import com.jsl.oa.model.vodata.ReviewVO; import com.jsl.oa.services.ReviewService; 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; @@ -174,6 +176,32 @@ public class ReviewServiceImpl implements ReviewService { } + + @Override + public BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVO, HttpServletRequest request) { + + //获取当前用户 + Long userId = Processing.getAuthHeaderToUserId(request); + + //获取对应审核信息 + ReviewDO reviewDO = reviewDAO.selectReviewById(reviewUpdateResultVO.getId()); + + if (reviewDO == null) { + return ResultUtil.error(ErrorCode.REVIEW_NOT_EXIST); + } + + //设置对应属性 + reviewDO.setReviewTime(new Date()); + reviewDO.setRecipientId(userId); + reviewDO.setReviewResult(reviewUpdateResultVO.getResult()); + + //更新数据 + reviewDAO.updateReview(reviewDO); + + return ResultUtil.success(); + } + + /** * @Description: 封装审核的VO类 * @Date: 2024/4/11 diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index bb01d53..05e988d 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -52,7 +52,8 @@ public enum ErrorCode { PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"), PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"), PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"), - PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"); + PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"), + REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息"); private final String output; diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index ab81654..b588f47 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -434,7 +434,7 @@ public class Processing { * @Date: 2024/4/11 * @Param category: **/ - public static String turnReviewCategory(Integer category) { + public static String turnReviewCategory(short category) { switch (category) { case 0: return "子系统"; @@ -445,7 +445,7 @@ public class Processing { } } - public static String turnReviewResult(Integer result) { + public static String turnReviewResult(short result) { switch (result) { case 0: return "已拒绝"; diff --git a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml index 2a59034..492ae12 100644 --- a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml @@ -61,4 +61,61 @@ + + update organize_oa.oa_review + + + + name = #{name}, + + + + content = #{content}, + + + + sender_id = #{sender_id}, + + + + recipient_id = #{recipient_id}, + + + + category = #{category}, + + + + project_id = #{project_id}, + + + + project_subsystem_id = #{project_subsystem_id}, + + + + project_submodule_id = #{project_submodule_id}, + + + + application_time = #{application_time}, + + + + review_time = #{review_time}, + + + + review_result = #{review_result}, + + + + is_delete = #{is_delete}, + + + + where id = #{id} + + + \ No newline at end of file -- 2.43.0 From 49247fd88fde72bdbecd77794923492f96c320f4 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 18:42:06 +0800 Subject: [PATCH 12/34] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正xml文件的部分bug --- .../java/com/jsl/oa/mapper/ProjectMapper.java | 13 +- .../java/com/jsl/oa/mapper/ReviewMapper.java | 4 +- .../oa/services/impl/ReviewServiceImpl.java | 17 +- .../com/jsl/oa/mapper/ReviewMapper.xml | 182 ++++++++++-------- 4 files changed, 124 insertions(+), 92 deletions(-) diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index fd80579..7504948 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -108,9 +108,18 @@ public interface ProjectMapper { + "where DATE(deadline) = DATE(#{threeDayLater}) and is_finish != 1") List getProjectWorkByTime(LocalDateTime threeDayLater); + @Select("select * from organize_oa.oa_project_work where " + + "principal_id=#{uid} " + + "AND is_delete = 0 AND type = 1") List getAllSubmoduleByUserId(Long uid); - List getProjectByPrincipalUser(Long uid); - + @Select("select * from organize_oa.oa_project_work where " + + "principal_id=#{uid} " + + "AND is_delete = 0 AND type = 0") List getAllSubsystemByUserId(Long uid); + + @Select("select * from organize_oa.oa_project where " + + "principal_id=#{uid} " + + "AND is_delete = 0") + List getProjectByPrincipalUser(Long uid); } diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index f1ed6b8..144a832 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -8,11 +8,11 @@ import java.util.List; @Mapper public interface ReviewMapper { - @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}" + @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId} " + "AND is_delete = 0") List selectAllReviewFromProject(Long projectId); - @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}" + @Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId} " + "AND is_delete = 0 AND review_result = #{result}") List selectApprovedResultReviewFromProject(Long projectId, short result); diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 74b72c1..4e7993b 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -93,7 +93,6 @@ public class ReviewServiceImpl implements ReviewService { } - @Override public BaseResponse getUserReview(HttpServletRequest request) { log.info("\t> 执行 Service 层 ReviewService.getUserReview 方法"); @@ -147,7 +146,6 @@ public class ReviewServiceImpl implements ReviewService { } - @Override public BaseResponse addReview(ReviewAddVO reviewAddVO, HttpServletRequest request) { log.info("\t> 执行 Service 层 ReviewService.addReview 方法"); @@ -176,7 +174,6 @@ public class ReviewServiceImpl implements ReviewService { } - @Override public BaseResponse updateReviewResult(ReviewUpdateResultVO reviewUpdateResultVO, HttpServletRequest request) { @@ -216,14 +213,19 @@ public class ReviewServiceImpl implements ReviewService { ReviewVO reviewVO = new ReviewVO(); // 现将相同的属性赋值 Processing.copyProperties(reviewDO, reviewVO); -// 赋值其他属性 +// 赋值其他非空属性 reviewVO.setCategory(Processing.turnReviewCategory(reviewDO.getCategory())) .setSenderName(userMapper.getUserById(reviewDO.getSenderId()).getNickname()) - .setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname()) .setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName()) .setSubsystemName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubsystemId())) - .setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId())) .setResult(Processing.turnReviewResult(reviewDO.getReviewResult())); +// 赋值可为空属性并进行判断 + if (reviewDO.getRecipientId() != null) { + reviewVO.setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname()); + } + if (reviewDO.getProjectSubmoduleId() != null) { + reviewVO.setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId())); + } // 将封装好的结果添加到结果集 resultData.add(reviewVO); } @@ -232,9 +234,6 @@ public class ReviewServiceImpl implements ReviewService { } - - - } diff --git a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml index 492ae12..1d4c6ed 100644 --- a/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ReviewMapper.xml @@ -4,118 +4,142 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - insert into organize_oa.oa_review - - + + INSERT INTO organize_oa.oa_review + - name = #{name}, + name, - - content = #{content}, + content, - - - sender_id = #{sender_id}, + + sender_id, - - - recipient_id = #{recipient_id}, + + recipient_id, - - category = #{category}, + category, - - - project_id = #{project_id}, + + project_id, - - - project_subsystem_id = #{project_subsystem_id}, + + project_subsystem_id, - - - project_submodule_id = #{project_submodule_id}, + + project_submodule_id, - - - application_time = #{application_time}, + + application_time, - - - review_time = #{review_time}, + + review_time, - - - review_result = #{review_result}, + + review_result, - - - is_delete = #{is_delete}, + + is_delete, - - - where id = #{id} + + + + #{name}, + + + #{content}, + + + #{senderId}, + + + #{recipientId}, + + + #{category}, + + + #{projectId}, + + + #{projectSubsystemId}, + + + #{projectSubmoduleId}, + + + #{applicationTime}, + + + #{reviewTime}, + + + #{reviewResult}, + + + #{isDelete}, + + update organize_oa.oa_review - + + + name = #{name}, + - - name = #{name}, - + + content = #{content}, + - - content = #{content}, - + + sender_id = #{senderId}, + - - sender_id = #{sender_id}, - + + recipient_id = #{recipientId}, + - - recipient_id = #{recipient_id}, - + + category = #{category}, + - - category = #{category}, - + + project_id = #{projectId}, + - - project_id = #{project_id}, - + + project_subsystem_id = #{projectSubsystemId}, + - - project_subsystem_id = #{project_subsystem_id}, - + + project_submodule_id = #{projectSubmoduleId}, + - - project_submodule_id = #{project_submodule_id}, - + + application_time = #{applicationTime}, + - - application_time = #{application_time}, - + + review_time = #{reviewTime}, + - - review_time = #{review_time}, - + + review_result = #{reviewResult}, + - - review_result = #{review_result}, - - - - is_delete = #{is_delete}, - - - + + is_delete = #{isDelete}, + + where id = #{id} + + \ No newline at end of file -- 2.43.0 From 36964d44475e3d3461289e1816b62f6c41c34577 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 19:07:27 +0800 Subject: [PATCH 13/34] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=BF=A1=E6=81=AF=E3=80=81=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加审核信息接口:增加判断审核名称是否重复 获取审核信息接口:在子模块名称为空时,返回无,而不是返回null --- src/main/java/com/jsl/oa/mapper/ReviewMapper.java | 2 ++ .../java/com/jsl/oa/services/impl/ReviewServiceImpl.java | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index 144a832..16dac5c 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -36,4 +36,6 @@ public interface ReviewMapper { void addReview(ReviewDO reviewDO); + @Select("SELECT * FROM organize_oa.oa_review WHERE name = #{name} AND is_delete = 0") + List selectReviewByName(String name); } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 4e7993b..e92f5e0 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -153,6 +153,11 @@ public class ReviewServiceImpl implements ReviewService { //获取用户 Long userId = Processing.getAuthHeaderToUserId(request); + //检查审核事项名称是否重复 + if (!reviewDAO.checkNameIsExist(reviewAddVO.getName())) { + return ResultUtil.error(ErrorCode.REVIEW_NAME_REPEAT); + } + //定义要添加的审核实体类 ReviewDO reviewDO = new ReviewDO(); //现将属性相同的值拷贝 @@ -225,6 +230,8 @@ public class ReviewServiceImpl implements ReviewService { } if (reviewDO.getProjectSubmoduleId() != null) { reviewVO.setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId())); + } else { + reviewVO.setSubsystemName("无"); } // 将封装好的结果添加到结果集 resultData.add(reviewVO); -- 2.43.0 From cd51b261e14a36addfd71b9d780d286a62a22f31 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Fri, 12 Apr 2024 19:24:24 +0800 Subject: [PATCH 14/34] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正部分查询逻辑 --- .../oa/services/impl/ReviewServiceImpl.java | 53 +++++++++++++------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index e92f5e0..1323ea6 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -43,8 +44,9 @@ public class ReviewServiceImpl implements ReviewService { //获取用户 Long userId = Processing.getAuthHeaderToUserId(request); + //存储审核数据的数组 - List reviewData = new ArrayList<>(); + List reviewData = new ArrayList<>(); //先获取用户为项目负责人的项目列表 projectDAO.getProjectByPrincipalUser(userId); @@ -56,7 +58,7 @@ public class ReviewServiceImpl implements ReviewService { selectApprovedResultReviewFromProject(projectDO.getId(), ReviewConstants.PENDING); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } //在从用户为 子系统负责人 的项目中获取对应 审核信息 @@ -66,7 +68,7 @@ public class ReviewServiceImpl implements ReviewService { selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } @@ -77,19 +79,30 @@ public class ReviewServiceImpl implements ReviewService { selectApprovedResultReviewsFromSubsystem(projectWorkDO.getId(), ReviewConstants.PENDING); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } + //根据id进行去重 + reviewData = reviewData.stream() + .collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing)) + .values() + .stream() + .collect(Collectors.toList()); + + //按照申请时间降序排序 - Collections.sort(reviewData, new Comparator() { + Collections.sort(reviewData, new Comparator() { @Override - public int compare(ReviewVO review1, ReviewVO review2) { + public int compare(ReviewDO review1, ReviewDO review2) { return review2.getApplicationTime().compareTo(review1.getApplicationTime()); } }); - return ResultUtil.success(reviewData); + //封装对应VO类 + List result = encapsulateArrayClass(reviewData); + + return ResultUtil.success(result); } @@ -101,7 +114,7 @@ public class ReviewServiceImpl implements ReviewService { Long userId = Processing.getAuthHeaderToUserId(request); //存储审核数据的数组 - List reviewData = new ArrayList<>(); + List reviewData = new ArrayList<>(); //先获取用户为项目负责人的项目列表 projectDAO.getProjectByPrincipalUser(userId); @@ -112,7 +125,7 @@ public class ReviewServiceImpl implements ReviewService { List reviewDOS = reviewDAO. selectAllReviewFromProject(projectDO.getId()); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } //在从用户为 子系统负责人 的项目中获取对应 审核信息 @@ -121,7 +134,7 @@ public class ReviewServiceImpl implements ReviewService { List reviewDOS = reviewDAO. selectReviewFromSubsystem(projectWorkDO.getId()); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } @@ -131,18 +144,28 @@ public class ReviewServiceImpl implements ReviewService { List reviewDOS = reviewDAO. selectReviewFromSubmodule(projectWorkDO.getId()); //封装VO类 - reviewData.addAll(encapsulateArrayClass(reviewDOS)); + reviewData.addAll(reviewDOS); } + //根据id进行去重 + reviewData = reviewData.stream() + .collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing)) + .values() + .stream() + .collect(Collectors.toList()); + //按照申请时间降序排序 - Collections.sort(reviewData, new Comparator() { + Collections.sort(reviewData, new Comparator() { @Override - public int compare(ReviewVO review1, ReviewVO review2) { + public int compare(ReviewDO review1, ReviewDO review2) { return review2.getApplicationTime().compareTo(review1.getApplicationTime()); } }); - return ResultUtil.success(reviewData); + //封装对应VO类 + List result = encapsulateArrayClass(reviewData); + + return ResultUtil.success(result); } @@ -231,7 +254,7 @@ public class ReviewServiceImpl implements ReviewService { if (reviewDO.getProjectSubmoduleId() != null) { reviewVO.setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId())); } else { - reviewVO.setSubsystemName("无"); + reviewVO.setSubmoduleName("无"); } // 将封装好的结果添加到结果集 resultData.add(reviewVO); -- 2.43.0 From 55cd033a7ee3df9accb713699fe7023ec0541cfd Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Sat, 13 Apr 2024 20:42:42 +0800 Subject: [PATCH 15/34] =?UTF-8?q?fix:=E5=88=9D=E6=AD=A5=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/MessageController.java | 14 ++ .../jsl/oa/controllers/ProjectController.java | 53 +++--- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 31 ++-- .../java/com/jsl/oa/mapper/ModuleMapper.java | 8 +- .../java/com/jsl/oa/mapper/ProjectMapper.java | 57 +++--- ...jectCuttingDO.java => ProjectChildDO.java} | 14 +- .../com/jsl/oa/model/dodata/ProjectDO.java | 11 +- ...rojectWorkDO.java => ProjectModuleDO.java} | 14 +- .../jsl/oa/model/vodata/ProjectInfoVO.java | 8 +- .../com/jsl/oa/services/MessageService.java | 14 +- .../com/jsl/oa/services/ProjectService.java | 10 +- .../oa/services/impl/MessageServiceImpl.java | 105 +++++++---- .../oa/services/impl/ModuleServiceImpl.java | 12 +- .../oa/services/impl/ProjectServiceImpl.java | 173 +++--------------- .../oa/services/impl/ReviewServiceImpl.java | 6 +- .../com/jsl/oa/mapper/ModuleMapper.xml | 4 +- .../com/jsl/oa/mapper/ProjectMapper.xml | 20 +- 17 files changed, 238 insertions(+), 316 deletions(-) rename src/main/java/com/jsl/oa/model/dodata/{ProjectCuttingDO.java => ProjectChildDO.java} (74%) mode change 100755 => 100644 rename src/main/java/com/jsl/oa/model/dodata/{ProjectWorkDO.java => ProjectModuleDO.java} (67%) diff --git a/src/main/java/com/jsl/oa/controllers/MessageController.java b/src/main/java/com/jsl/oa/controllers/MessageController.java index 76f1e50..e1a5ad1 100644 --- a/src/main/java/com/jsl/oa/controllers/MessageController.java +++ b/src/main/java/com/jsl/oa/controllers/MessageController.java @@ -74,5 +74,19 @@ public class MessageController { return messageService.messageGet(begin, end, page, pageSize, uid); } } + + @GetMapping("/message/get/id") + public BaseResponse messageGetById( + @RequestParam Long id, + HttpServletRequest request) { + log.info("请求接口[GET]:/message/get/id"); + String token = request.getHeader("Authorization").replace("Bearer ", ""); + Long uid = JwtUtil.getUserId(token); + if (uid == null) { + return ResultUtil.error(ErrorCode.USER_NOT_EXIST); + } else { + return messageService.messageGetById(id, uid); + } + } } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 615ee35..13c3f23 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -48,17 +48,10 @@ public class ProjectController { return projectService.getHeader(id); } - /** - * @param id 获取项目 id - * @return {@link BaseResponse} - */ - @GetMapping("/project/get/id") - public BaseResponse projectGetById(@RequestParam Integer id) { - return projectService.getById(id); - } + /** - * @param id 获取项目 id + * @param id 要查询的 id * @return {@link BaseResponse} */ @GetMapping("/project/getwork/id") @@ -66,19 +59,28 @@ public class ProjectController { return projectService.getWorkById(id); } + /** + * @param id 要查询项目的 id + * @return {@link BaseResponse} + */ + @GetMapping("/project/get/id") + public BaseResponse projectGetById(@RequestParam Integer id) { + return projectService.getById(id); + } + /** * 游客获取项目 * * @return {@link BaseResponse} */ @GetMapping("/project/get/custom") - public BaseResponse projectGetCustom(@RequestParam(required = false) Integer id, + public BaseResponse projectGetCustom( @RequestParam(required = false) List tags, - @RequestParam(required = false) List isFinish, + @RequestParam(required = false) List isFinish, @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize) { - log.info("请求接口[GET]: /project/all/get"); - return projectService.tget(id, tags, isFinish, page, pageSize); + log.info("请求接口[GET]: /project/get/custom"); + return projectService.tget(tags, isFinish, page, pageSize); } /** @@ -87,31 +89,31 @@ public class ProjectController { * @return {@link BaseResponse} */ @GetMapping("/project/get") - public BaseResponse projectGet(@RequestParam(required = false) Integer listAll, + public BaseResponse projectGet( @RequestParam(required = false) List tags, - @RequestParam(required = false) List isFinish, + @RequestParam(required = false) List isFinish, @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize, HttpServletRequest request) { log.info("请求接口[GET]: /project/get"); - return projectService.get(listAll, request, tags, isFinish, page, pageSize); + return projectService.get(request, tags, isFinish, page, pageSize); } /** - * 我管理的查询 + * 我管理的页面的项目查询 * * @return {@link BaseResponse} */ - @GetMapping("/project/work/get") - public BaseResponse projectWorkGet(@RequestParam(required = false) Integer listAll, + @GetMapping("/project/child/get") + public BaseResponse projectWorkGet( @RequestParam(required = false) List tags, - @RequestParam(required = false) List isFinish, + @RequestParam(required = false) List isFinish, @RequestParam(required = false) Integer is, @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize, HttpServletRequest request) { log.info("请求接口[GET]: /project/work/get"); - return projectService.workget(listAll, request, tags, isFinish, is, page, pageSize); + return projectService.workget(request, tags, isFinish, is, page, pageSize); } /** @@ -191,6 +193,15 @@ public class ProjectController { } + /** + * 项目添加 + * + * @param request 请求 + * @param projectInfoVO 项目信息 + * @param bindingResult 参数校验 + * @return {@link BaseResponse} + */ + @PostMapping("/project/add") public BaseResponse projectAdd(HttpServletRequest request, @RequestBody @Validated ProjectInfoVO projectInfoVO, diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index a9a9adf..5f55995 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -2,7 +2,7 @@ package com.jsl.oa.dao; import com.google.gson.Gson; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.model.dodata.ProjectDO; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectInfoVO; @@ -115,7 +115,7 @@ public class ProjectDAO { return projectMapper.getProjectById(id); } - public List get(Long userId, Integer listAll, List tags, List isFinish) { + public List get(Long userId, List tags, List isFinish) { log.info("\t> 执行 DAO 层 ProjectDAO.get 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (tags != null && !tags.isEmpty()) { @@ -128,15 +128,11 @@ public class ProjectDAO { return projectMapper.getByIsfinish(userId, isFinish); } - if (listAll == 0) { - return projectMapper.get(userId); - } else { - return projectMapper.get1(userId); - } + return projectMapper.get(userId); + } - public List workget(Long userId, Integer listAll, - List tags, List isFinish, Integer is) { + public List workget(Long userId, List tags, List isFinish, Integer is) { log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法"); log.info("\t\t> 从 MySQL 获取数据"); if (tags != null && !tags.isEmpty()) { @@ -146,12 +142,8 @@ public class ProjectDAO { if (isFinish != null && !isFinish.isEmpty()) { return projectMapper.workgetByIsfinish(userId, isFinish, is); } + return projectMapper.workget(userId, is); - if (listAll == 0) { - return projectMapper.workget(userId, is); - } else { - return projectMapper.workget1(userId, is); - } } public ProjectDO getByName(String name) { @@ -181,7 +173,7 @@ public class ProjectDAO { } - public List tget(Integer id, List isFinish, List tags) { + public List tget(List isFinish, List tags) { log.info("DAO层tget"); if (tags != null && !tags.isEmpty()) { @@ -191,11 +183,10 @@ public class ProjectDAO { if (isFinish != null && !isFinish.isEmpty()) { return projectMapper.tgetByIsfinish(isFinish); } - - return projectMapper.tget(id); + return projectMapper.getAllProject(); } - public ProjectWorkDO getProjectWorkerById(Long id) { + public ProjectModuleDO getProjectWorkerById(Long id) { return projectMapper.getProjectWorkById(id); } @@ -205,13 +196,13 @@ public class ProjectDAO { return projectMapper.getProjectByPrincipalUser(uid); } - public List getAllSubsystemByUserId(Long uid) { + public List getAllSubsystemByUserId(Long uid) { log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubsystemByUserId 方法"); log.info("\t\t> 从 MySQL 获取数据"); return projectMapper.getAllSubsystemByUserId(uid); } - public List getAllSubmoduleByUserId(Long uid) { + public List getAllSubmoduleByUserId(Long uid) { log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubmoduleByUserId 方法"); log.info("\t\t> 从 MySQL 获取数据"); return projectMapper.getAllSubmoduleByUserId(uid); diff --git a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java index dbfa8bd..4e5eee1 100644 --- a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java @@ -1,6 +1,6 @@ package com.jsl.oa.mapper; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -12,9 +12,9 @@ public interface ModuleMapper { - List getByProjectId(Integer projectId, Long userId, int is); + List getByProjectId(Integer projectId, Long userId, int is); - List getBySysId(Integer sysId, Long userId, int is); + List getBySysId(Integer sysId, Long userId, int is); @Select("select principal_id from organize_oa.oa_project where id=#{projectId}") Long getPidByProjectid(Integer projectId); @@ -26,7 +26,7 @@ public interface ModuleMapper { void deleteMoudule(Long id); @Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ") - List getAllMoudleByPid(Long id); + List getAllMoudleByPid(Long id); @Select("select principal_id from organize_oa.oa_project where id=(select project_id " + "from organize_oa.oa_project_work where oa_project_work.id = #{sysId})") diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index fd80579..82b67b0 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -1,7 +1,7 @@ package com.jsl.oa.mapper; -import com.jsl.oa.model.dodata.ProjectCuttingDO; +import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectWorkSimpleVO; import com.jsl.oa.model.vodata.ProjectWorkVO; @@ -17,10 +17,10 @@ import java.util.List; public interface ProjectMapper { @Insert("insert into organize_oa.oa_project " - + "(name, description, principal_id, cycle,file,complete_time," - + "deadline,status,is_finish,tags,work_load) " - + "value (#{name},#{description},#{principalId},#{cycle},#{file}" - + ",#{completeTime},#{deadline},#{status},#{isFinish},#{tags},#{workLoad})") + + "(name, description, principal_id, cycle,files,complete_time," + + "dead_line,status,tags,work_load) " + + "value (#{name},#{description},#{principalId},#{cycle},#{files}" + + ",#{completeTime},#{deadLine},#{status},#{tags},#{workLoad})") void projectAdd(ProjectInfoVO projectAdd); @Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id," @@ -37,8 +37,8 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project where id=#{id}") ProjectDO tgetProjectById(Integer id); - @Select("select * from organize_oa.oa_project_work where principal_id=#{uid}") - List projectGetUserInCutting(Long uid); + @Select("select * from organize_oa.oa_project where is_delete=false") + List getAllProject(); @Select("select data from organize_oa.oa_config where value='project_show'") String getHeader(); @@ -50,11 +50,11 @@ public interface ProjectMapper { + " updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'") boolean setProjectShow(String setProjectShow); - List getByIsfinish(Long userId, List isFinish); + List getByIsfinish(Long userId, List isFinish); - List getByTags(Long userId, List tags, List isFinish); + List getByTags(Long userId, List tags, List isFinish); - @Select("select * from organize_oa.oa_project where is_delete=false and status=1 and principal_id=#{userId}") + @Select("select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId}") List get(Long userId); @Select("select * from organize_oa.oa_project where status =1 and principal_id=#{userId}") @@ -66,9 +66,9 @@ public interface ProjectMapper { @Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}") boolean deleteProject(Long id); - List workgetByIsfinish(Long userId, List isFinish, Integer is); + List workgetByIsfinish(Long userId, List isFinish, Integer is); - List workgetByTags(Long userId, List tags, Integer is, List isFinish); + List workgetByTags(Long userId, List tags, Integer is, List isFinish); //@Select("select * from organize_oa.oa_project where id in(select project_id from " + //"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)") @@ -80,37 +80,44 @@ public interface ProjectMapper { List tget(Integer id); - List tgetByIsfinish(List isFinish); + List tgetByIsfinish(List isFinish); - List tgetBytags(List tags, List isFinish); + List tgetBytags(List tags, List isFinish); - @Select("select * from organize_oa.oa_project_work where id=#{id}") + @Select("select * from organize_oa.oa_project_child where id=#{id}") ProjectWorkSimpleVO getWorkById(Integer id); + @Select("select * from organize_oa.oa_project_modules where id=#{id}") + ProjectModuleDO getModuleById(Integer id); + @Select("select principal_id from organize_oa.oa_project_work where id=#{pid}") Long getPirIdbyWorkid(Long pid); - @Select("select principal_id from organize_oa.oa_project_work where id=#{id} " + @Select("select principal_id from organize_oa.oa_project_modules where project_child_id=#{id} " + "AND is_delete = 0") Long getPid(Integer id); @Select("select * from organize_oa.oa_project_work where id=#{id} " + "AND is_delete = 0") - ProjectWorkDO getProjectWorkById(Long id); + ProjectModuleDO getProjectWorkById(Long id); - @Select("select principal_id from organize_oa.oa_project_work where project_id=#{id}") + @Select("select principal_id from organize_oa.oa_project_child where project_id=#{id}") List getMemberByProjectId(Integer id); - @Select("select principal_id from organize_oa.oa_project_work where pid=#{id}") + @Select("select principal_id from organize_oa.oa_project_modules where project_child_id=#{id}") List getMemberBySystemId(Integer id); - @Select("select * from organize_oa.oa_project_work " - + "where DATE(deadline) = DATE(#{threeDayLater}) and is_finish != 1") - List getProjectWorkByTime(LocalDateTime threeDayLater); + @Select("select * from organize_oa.oa_project_modules " + + "where DATE(deadline) = DATE(#{threeDayLater}) and status = 0") + List getProjectWorkByTime(LocalDateTime threeDayLater); - List getAllSubmoduleByUserId(Long uid); + List getAllSubmoduleByUserId(Long uid); List getProjectByPrincipalUser(Long uid); - List getAllSubsystemByUserId(Long uid); + List getAllSubsystemByUserId(Long uid); + + @Select("select * from organize_oa.oa_project_child where " + + "DATE (created_at) = DATE (#{threeDaysLater}) and status = 0") + List getProjectChildByTime(LocalDateTime threeDaysLater); } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectChildDO.java old mode 100755 new mode 100644 similarity index 74% rename from src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java rename to src/main/java/com/jsl/oa/model/dodata/ProjectChildDO.java index a438d9b..2be895e --- a/src/main/java/com/jsl/oa/model/dodata/ProjectCuttingDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectChildDO.java @@ -18,19 +18,17 @@ import java.sql.Timestamp; @Data @Accessors(chain = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class ProjectCuttingDO { +public class ProjectChildDO { private Long id; private Long principalId; private Long projectId; - private Long pid; - private Long workLoad; - private Long cycle; + private Integer workLoad; + private Integer cycle; private String name; private String description; private Integer isDelete; - private Integer isFinish; - private Integer status; - private boolean type; - private Timestamp beginTime; + private String files; + private Timestamp createdAt; private Timestamp completeTime; + private Timestamp updatedAt; } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectDO.java index 172ab0d..b5d013c 100755 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectDO.java @@ -23,20 +23,19 @@ public class ProjectDO { private Long id; private Long principalId; private String tags; - private Long cycle; + private Integer cycle; private String name; private String file; private String description; private Integer isDelete; - private Integer isFinish; - private Long workLoad; - private Integer status; + private Integer workLoad; + private String status; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") private Timestamp beginTime; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") private Timestamp completeTime; - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") private Timestamp deadline; + private Timestamp createdAt; + private Timestamp updatedAt; } diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectWorkDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java similarity index 67% rename from src/main/java/com/jsl/oa/model/dodata/ProjectWorkDO.java rename to src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java index b707532..d42f39f 100644 --- a/src/main/java/com/jsl/oa/model/dodata/ProjectWorkDO.java +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectModuleDO.java @@ -9,19 +9,15 @@ import java.sql.Timestamp; @Data @Accessors(chain = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class ProjectWorkDO { +public class ProjectModuleDO { private Long id; - private Long pid; - private Long projectId; + private Long projectChildId; private Long principalId; - private Integer cycle; private Integer workLoad; - private Integer type; - private String name; private String description; + private String name; private Integer isDelete; - private Integer isFinish; - private boolean status; - private Timestamp beginTime; + private Timestamp createdAt; + private Timestamp updatedAt; private Timestamp completeTime; } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectInfoVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectInfoVO.java index e5a5784..2adf8ec 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectInfoVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectInfoVO.java @@ -20,10 +20,10 @@ public class ProjectInfoVO { @NotNull(message = "工作量不能为空") private Long workLoad; private String tags; - private String file; + private String files; + private Timestamp beginTime; private Timestamp completeTime; - private Timestamp deadline; - private Integer status; - private Integer isFinish; + private Timestamp deadLine; + private String status; } diff --git a/src/main/java/com/jsl/oa/services/MessageService.java b/src/main/java/com/jsl/oa/services/MessageService.java index dd54b98..5885df9 100644 --- a/src/main/java/com/jsl/oa/services/MessageService.java +++ b/src/main/java/com/jsl/oa/services/MessageService.java @@ -25,11 +25,17 @@ public interface MessageService { Integer pageSize, Long uid); - void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, HttpServletRequest request); - void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, Long isPass, HttpServletRequest request); - void messageAdd(Integer pId, Integer type, Integer systemId, HttpServletRequest request); - void messageAdd(Integer pId, Integer systmeId, Integer moddleId, Integer type, HttpServletRequest request); + void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, + HttpServletRequest request); + void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, Long isPass, + HttpServletRequest request); + void messageAdd(Integer pId, Integer type, Integer systemId, + HttpServletRequest request); + void messageAdd(Integer pId, Integer systmeId, Integer moddleId, Integer type, + HttpServletRequest request); void messageAdd(Integer pId, Integer systemId, Integer moddleId); void messageRemind(); + + BaseResponse messageGetById(Long id, Long uid); } diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 6b57050..9753e00 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -19,10 +19,10 @@ public interface ProjectService { BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); - BaseResponse get(Integer listAll, + BaseResponse get( HttpServletRequest request, List tags, - List isFinish, + List isFinish, Integer page, Integer pageSize); @@ -34,17 +34,17 @@ public interface ProjectService { BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid); - BaseResponse workget(Integer listAll, + BaseResponse workget( HttpServletRequest request, List tags, - List isFinish, + List isFinish, Integer is, Integer page, Integer pageSize); BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); - BaseResponse tget(Integer id, List tags, List isFinish, Integer page, Integer pageSize); + BaseResponse tget(List tags, List isFinish, Integer page, Integer pageSize); BaseResponse projectFileGet(HttpServletRequest request, Long projectId); diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java index 4c8100c..d774276 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -4,7 +4,8 @@ import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.MessageMapper; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.model.dodata.MessageDO; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectChildDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.MessageAddVO; import com.jsl.oa.model.vodata.MessageGetVO; import com.jsl.oa.services.MessageService; @@ -117,13 +118,14 @@ public class MessageServiceImpl implements MessageService { if (moddleId == null) { messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统给您"); } else { - String moddleName = projectMapper.getWorkById(moddleId).getName(); + String moddleName = projectMapper.getModuleById(moddleId).getName(); messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统的" + moddleName + "子模块给您"); } messageAddVO.setType("跳转审批页"); messageMapper.messageAdd(messageAddVO); } + /** * 添加审批消息 * @@ -149,7 +151,7 @@ public class MessageServiceImpl implements MessageService { MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(uid); messageAddVO.setTitle("审批消息"); - String moddleName = projectMapper.getWorkById(moddleId).getName(); + String moddleName = projectMapper.getModuleById(moddleId).getName(); if (isPass == 1) { messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人已通过"); } else { @@ -216,7 +218,7 @@ public class MessageServiceImpl implements MessageService { String projectName = projectMapper.tgetProjectById(pId).getName(); String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername(); String systemName = projectMapper.getWorkById(systmeId).getName(); - String moddleName = projectMapper.getWorkById(moddleId).getName(); + String moddleName = projectMapper.getModuleById(moddleId).getName(); // 添加消息 // 1:删除模块 2:修改简介 3:修改周期 if (type == 1) { @@ -261,7 +263,7 @@ public class MessageServiceImpl implements MessageService { // 获取项目名,系统名,模块名,负责人名 String projectName = projectMapper.tgetProjectById(pId).getName(); String systemName = projectMapper.getWorkById(systemId).getName(); - String moddleName = projectMapper.getWorkById(moddleId).getName(); + String moddleName = projectMapper.getModuleById(moddleId).getName(); String principalName = userDAO.getUserById(projectMapper.getPid(moddleId)).getUsername(); // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); @@ -285,62 +287,87 @@ public class MessageServiceImpl implements MessageService { LocalDateTime threeDaysLater = now.plusDays(3); // 七天后时间 LocalDateTime sevenDaysLater = now.plusDays(7); - // 获取三天后到期的系统/模块 - List projectWorkDOList = projectMapper.getProjectWorkByTime(threeDaysLater); - // 获取七天后到期的系统/模块 - List projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater); + // 获取三天后到期的模块 + List projectWorkDOList = projectMapper.getProjectWorkByTime(threeDaysLater); + // 获取七天后到期的模块 + List projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater); if (!projectWorkDOList1.isEmpty()) { - for (ProjectWorkDO projectWorkDO : projectWorkDOList) { + for (ProjectModuleDO projectWorkDO : projectWorkDOList) { // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectWorkDO.getPrincipalId()); messageAddVO.setTitle("提醒消息"); - // 0:系统 1:模块 String projectName = projectMapper - .tgetProjectById(projectWorkDO.getProjectId().intValue()).getName(); - String systemName; - if (projectWorkDO.getType() == 1) { - systemName = projectMapper.getWorkById(projectWorkDO.getPid().intValue()).getName(); - String moddleName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); - messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" - + "还有七天就要到期了,请及时处理"); - messageAddVO.setType("跳转模块页"); - } else { - systemName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); - messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统" - + "还有七天就要到期了,请及时处理"); - messageAddVO.setType("跳转系统页"); - } + .tgetProjectById(projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()) + .getProjectId().intValue()).getName(); + + String systemName = projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()).getName(); + String moddleName = projectWorkDO.getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" + + "还有七天就要到期了,请及时处理"); + messageAddVO.setType("跳转模块页"); messageAddVO.setToId(projectWorkDO.getId().intValue()); messageMapper.messageAdd(messageAddVO); } } if (!projectWorkDOList.isEmpty()) { - for (ProjectWorkDO projectWorkDO : projectWorkDOList) { + for (ProjectModuleDO projectWorkDO : projectWorkDOList) { // 添加消息 MessageAddVO messageAddVO = new MessageAddVO(); messageAddVO.setUid(projectWorkDO.getPrincipalId()); messageAddVO.setTitle("提醒消息"); - // 0:系统 1:模块 String projectName = projectMapper - .tgetProjectById(projectWorkDO.getProjectId().intValue()).getName(); - String systemName; - if (projectWorkDO.getType() == 1) { - systemName = projectMapper.getWorkById(projectWorkDO.getPid().intValue()).getName(); - String moddleName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); - messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" + .tgetProjectById(projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()) + .getPrincipalId().intValue()).getName(); + + String systemName = projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()).getName(); + String moddleName = projectWorkDO.getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块" + "还有三天就要到期了,请及时处理"); messageAddVO.setType("跳转模块页"); - } else { - systemName = projectMapper.getWorkById(projectWorkDO.getId().intValue()).getName(); - messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统" - + "还有三天就要到期了,请及时处理"); - messageAddVO.setType("跳转系统页"); - } messageAddVO.setToId(projectWorkDO.getId().intValue()); messageMapper.messageAdd(messageAddVO); } } + + // 获取七天后到期的系统 + List projectChildDOList = projectMapper.getProjectChildByTime(sevenDaysLater); + if (!projectChildDOList.isEmpty()) { + for (ProjectChildDO projectChildDO : projectChildDOList) { + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectChildDO.getPrincipalId()); + messageAddVO.setTitle("提醒消息"); + String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName(); + String systemName = projectChildDO.getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有七天就要到期了,请及时处理"); + messageAddVO.setType("跳转系统页"); + messageAddVO.setToId(projectChildDO.getId().intValue()); + messageMapper.messageAdd(messageAddVO); + } + } + // 获取三天后到期的系统 + List projectChildDOList1 = projectMapper.getProjectChildByTime(threeDaysLater); + if (!projectChildDOList1.isEmpty()) { + for (ProjectChildDO projectChildDO : projectChildDOList1) { + // 添加消息 + MessageAddVO messageAddVO = new MessageAddVO(); + messageAddVO.setUid(projectChildDO.getPrincipalId()); + messageAddVO.setTitle("提醒消息"); + String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName(); + String systemName = projectChildDO.getName(); + messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有三天就要到期了,请及时处理"); + messageAddVO.setType("跳转系统页"); + messageAddVO.setToId(projectChildDO.getId().intValue()); + messageMapper.messageAdd(messageAddVO); + } + + } + } + + @Override + public BaseResponse messageGetById(Long id, Long uid) { + return ResultUtil.success(messageMapper.getMessageById(id)); } } diff --git a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java index c8d1d39..ac75a22 100644 --- a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java @@ -4,7 +4,7 @@ import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ModuleMapper; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectWorkAndNameVO; import com.jsl.oa.services.ModuleService; import com.jsl.oa.utils.BaseResponse; @@ -42,7 +42,7 @@ public class ModuleServiceImpl implements ModuleService { is = 0; } - List projectWorkDOList = moduleMapper.getByProjectId(projectId, userId, is); + List projectWorkDOList = moduleMapper.getByProjectId(projectId, userId, is); return ResultUtil.success(projectWorkDOList); } @@ -61,10 +61,10 @@ public class ModuleServiceImpl implements ModuleService { is = 0; } - List projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is); + List projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is); // 封装VO类 List projectWorkAndNameVOS = new ArrayList<>(); - for (ProjectWorkDO projectWorkDO : projectWorkDOList) { + for (ProjectModuleDO projectWorkDO : projectWorkDOList) { ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO(); Processing.copyProperties(projectWorkDO, projectWorkAndNameVO); // 添加负责人和子系统名称 @@ -94,9 +94,9 @@ public class ModuleServiceImpl implements ModuleService { // 删除子模块方法 public void deleteMoudule(Long id) { //获取所有父Id=id的子模块 - List projectWorkDOS = moduleMapper.getAllMoudleByPid(id); + List projectWorkDOS = moduleMapper.getAllMoudleByPid(id); - for (ProjectWorkDO workDO : projectWorkDOS) { + for (ProjectModuleDO workDO : projectWorkDOS) { deleteMoudule(workDO.getId()); } 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 c3b8f0d..4a46276 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -13,6 +13,7 @@ import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.vodata.*; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; +import com.jsl.oa.services.MessageService; import com.jsl.oa.services.ProjectService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -22,7 +23,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; - import javax.servlet.http.HttpServletRequest; import java.sql.Timestamp; import java.util.ArrayList; @@ -50,6 +50,7 @@ public class ProjectServiceImpl implements ProjectService { private final UserDAO userDAO; private final ObjectMapper objectMapper; private final RoleDAO roleDAO; + private final MessageService messageService; @Override public BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd) { @@ -71,7 +72,7 @@ public class ProjectServiceImpl implements ProjectService { tag = new StringBuilder(tag.substring(0, tag.length() - 2)); } projectAdd.setTags(open + tag + close); - projectAdd.setFile("{\"URI\":\"" + projectAdd.getFile() + "\"}"); + projectAdd.setFiles("{\"URI\":\"" + projectAdd.getFiles() + "\"}"); projectDAO.projectAdd(projectAdd); @@ -109,54 +110,11 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse tget(Integer id, List tags, List isFinish, Integer page, Integer pageSize) { + public BaseResponse tget(List tags, List isFinish, Integer page, Integer pageSize) { log.info("\t> 执行 Service 层 ProjectService.tget 方法"); - //根据id查询 - if (id != null) { - ProjectDO projectDO = projectMapper.tgetProjectById(id); - ProjectSimpleVO projectSimpleVO = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO, projectDO, userDAO, objectMapper); - return ResultUtil.success(projectSimpleVO); - } - //根据标签查询 - if (tags != null && !tags.isEmpty()) { - List projectDOList = projectDAO.tget(id, isFinish, tags); + List projectDOList = projectDAO.tget(isFinish, tags); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } - - //根据状态查询 - if (isFinish != null && !isFinish.isEmpty()) { - List projectDOList = projectDAO.tget(id, isFinish, tags); - - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } - - List projectDOList = projectDAO.tget(id, isFinish, tags); List projectSimpleVOList = new ArrayList<>(); for (ProjectDO projectDO : projectDOList) { ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); @@ -169,6 +127,7 @@ public class ProjectServiceImpl implements ProjectService { List pageData = projectSimpleVOList.subList(start, Math.min(end, projectSimpleVOList.size())); return ResultUtil.success(pageData); + } @Override @@ -342,10 +301,9 @@ public class ProjectServiceImpl implements ProjectService { @Override public BaseResponse get( - Integer listAll, HttpServletRequest request, List tags, - List isFinish, + List isFinish, Integer page, Integer pageSize ) { @@ -355,7 +313,7 @@ public class ProjectServiceImpl implements ProjectService { Long userId = Processing.getAuthHeaderToUserId(request); //根据标签查询 if (tags != null && !tags.isEmpty()) { - List projectDOList = projectDAO.get(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.get(userId, tags, isFinish); List projectSimpleVOList = new ArrayList<>(); for (ProjectDO projectDO : projectDOList) { @@ -373,40 +331,7 @@ public class ProjectServiceImpl implements ProjectService { //根据状态查询 if (isFinish != null && !isFinish.isEmpty()) { - List projectDOList = projectDAO.get(userId, listAll, tags, isFinish); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } - - - //判断是否是老师(项目负责人) - if (listAll != null && Processing.checkUserIsTeacher(request, roleDAO)) { - List projectDOList = projectDAO.get(userId, listAll, tags, isFinish); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } else { - listAll = 0; - List projectDOList = projectDAO.get(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.get(userId, tags, isFinish); List projectSimpleVOList = new ArrayList<>(); for (ProjectDO projectDO : projectDOList) { ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); @@ -420,90 +345,38 @@ public class ProjectServiceImpl implements ProjectService { Math.min(end, projectSimpleVOList.size())); return ResultUtil.success(pageData); } + return ResultUtil.success(projectMapper.get(userId)); } @Override public BaseResponse workget( - Integer listAll, HttpServletRequest request, List tags, - List isFinish, + List isFinish, Integer is, Integer page, Integer pageSize ) { log.info("\t> 执行 Service 层 ProjectService.workget 方法"); - //获取用户 Long userId = Processing.getAuthHeaderToUserId(request); - //根据标签查询 - if (tags != null && !tags.isEmpty()) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); + List projectDOList = projectDAO.workget(userId, tags, isFinish, is); + List projectSimpleVOList = new ArrayList<>(); + for (ProjectDO projectDO : projectDOList) { + ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); + Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); + projectSimpleVOList.add(projectSimpleVO1); } + //分页返回 + int start = (page - 1) * pageSize; + int end = start + pageSize; + List pageData = projectSimpleVOList.subList(start, + Math.min(end, projectSimpleVOList.size())); - //根据状态查询 - if (isFinish != null && !isFinish.isEmpty()) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } + return ResultUtil.success(pageData); - - //判断是否是老师(项目负责人) - if (listAll != null && Processing.checkUserIsTeacher(request, roleDAO)) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } else { - listAll = 0; - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); - List projectSimpleVOList = new ArrayList<>(); - for (ProjectDO projectDO : projectDOList) { - ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); - Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper); - projectSimpleVOList.add(projectSimpleVO1); - } - //分页返回 - int start = (page - 1) * pageSize; - int end = start + pageSize; - List pageData = projectSimpleVOList.subList(start, - Math.min(end, projectSimpleVOList.size())); - return ResultUtil.success(pageData); - } } diff --git a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java index 2157ff6..7f8859b 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -7,7 +7,7 @@ import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ReviewMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectDO; -import com.jsl.oa.model.dodata.ProjectWorkDO; +import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.ReviewDO; import com.jsl.oa.model.vodata.ReviewVO; import com.jsl.oa.services.ReviewService; @@ -58,7 +58,7 @@ public class ReviewServiceImpl implements ReviewService { } //在从用户为 子系统负责人 的项目中获取对应 审核信息 - for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { + for (ProjectModuleDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) { //查询每个项目下所有的审核信息 List reviewDOS = reviewMapper. selectReviewFromSubsystem(projectWorkDO.getId()); @@ -68,7 +68,7 @@ public class ReviewServiceImpl implements ReviewService { //在从用户为 子模块负责人 的项目中获取对应 审核信息 - for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { + for (ProjectModuleDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) { //查询每个项目下所有的审核信息 List reviewDOS = reviewMapper. selectReviewFromSubmodule(projectWorkDO.getId()); diff --git a/src/main/resources/com/jsl/oa/mapper/ModuleMapper.xml b/src/main/resources/com/jsl/oa/mapper/ModuleMapper.xml index bdd6c94..7e2f098 100644 --- a/src/main/resources/com/jsl/oa/mapper/ModuleMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ModuleMapper.xml @@ -5,14 +5,14 @@ - select * from organize_oa.oa_project_work where project_id=#{projectId} and type=0 and (principal_id=#{userId} or principal_id is null) - select * from organize_oa.oa_project_work where pid=#{sysId} and type=1 and (principal_id=#{userId} or principal_id is null) diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml index 1295372..b6d4b88 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml @@ -49,10 +49,10 @@