From 71bd92d18e2b0ca1811d7f4139d0abf597448edd Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 10:18:35 +0800 Subject: [PATCH 01/10] =?UTF-8?q?patch:=E4=BF=AE=E6=AD=A3review=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=A1=A8=20=E5=88=A0=E9=99=A4=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=94=99=E8=AF=AF=E5=A4=96=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mysql/oa_review.sql | 5 ---- src/main/resources/mysql/organize_oa.sql | 38 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/main/resources/mysql/oa_review.sql b/src/main/resources/mysql/oa_review.sql index c2bd1ff..e8bdd59 100644 --- a/src/main/resources/mysql/oa_review.sql +++ b/src/main/resources/mysql/oa_review.sql @@ -27,9 +27,4 @@ create table oa_review create index oa_review_project_id_oa_project_id_fk on oa_review (project_id); -create index oa_review_project_project_submodule_id_oa_project_work_id_fk - on oa_review (project_module_id); - -create index oa_review_project_subsystem_id_oa_project_work_id_fk - on oa_review (project_child_id); diff --git a/src/main/resources/mysql/organize_oa.sql b/src/main/resources/mysql/organize_oa.sql index 8d09fa0..253153a 100755 --- a/src/main/resources/mysql/organize_oa.sql +++ b/src/main/resources/mysql/organize_oa.sql @@ -203,6 +203,44 @@ CREATE TABLE `oa_user` DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT ='用户表'; +-- -------------------------------------------------------- + +-- +-- 表的结构 `oa_review` +-- + + +create table oa_review +( + id bigint unsigned auto_increment comment '主键' + primary key, + name varchar(255) not null comment '申请名称', + content longtext not null comment '申请理由', + sender_id bigint unsigned not null comment '申请者用户id', + recipient_id bigint unsigned null comment '审核者用户id', + category tinyint default 1 null comment '审核类别(0:子系统;1:子模块)', + project_id bigint unsigned not null comment '申请的项目id', + project_child_id bigint unsigned not null comment '申请的子系统id', + project_module_id bigint unsigned null comment '申请的子模块id', + application_time datetime default CURRENT_TIMESTAMP not null comment '申请时间', + review_time datetime null comment '审核时间', + review_result tinyint default 2 not null comment '审核结果(0:未通过;1:通过;2:未审批)', + is_delete tinyint default 0 not null comment '是否删除(0:未删除;1:已删除)', + created_time datetime default CURRENT_TIMESTAMP not null comment '创建时间', + updated_time datetime null comment '更新时间', + constraint oa_review_recipient_id_oa_user_id_fk + foreign key (recipient_id) references oa_user (id) + on update cascade on delete cascade, + constraint oa_review_sender_id_oa_user_id_fk + foreign key (sender_id) references oa_user (id) + on update cascade on delete cascade +); + +create index oa_review_project_id_oa_project_id_fk + on oa_review (project_id); + + + -- -- 转储表的索引 -- From 121b87c6832412778855eadba0244addec668dd7 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 15:01:05 +0800 Subject: [PATCH 02/10] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=97=A5=E5=BF=97=E6=B7=BB=E5=8A=A0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/ProjectDailyController.java | 60 +++++++++++++++ .../java/com/jsl/oa/dao/ProjectDailyDAO.java | 38 ++++++++++ .../com/jsl/oa/mapper/ProjectDailyMapper.java | 22 ++++++ .../jsl/oa/model/dodata/ProjectDailyDO.java | 55 ++++++++++++++ .../oa/model/vodata/ProjectDailyAddVO.java | 21 ++++++ .../jsl/oa/model/vodata/ProjectDailyVO.java | 16 ++++ .../jsl/oa/services/ProjectDailyService.java | 25 +++++++ .../impl/ProjectDailyServiceImpl.java | 73 +++++++++++++++++++ .../com/jsl/oa/mapper/ProjectDailyMapper.xml | 28 +++++++ 9 files changed, 338 insertions(+) create mode 100644 src/main/java/com/jsl/oa/controllers/ProjectDailyController.java create mode 100644 src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java create mode 100644 src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java create mode 100644 src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java create mode 100644 src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java create mode 100644 src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java create mode 100644 src/main/java/com/jsl/oa/services/ProjectDailyService.java create mode 100644 src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java create mode 100644 src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java new file mode 100644 index 0000000..9b4ccae --- /dev/null +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -0,0 +1,60 @@ +package com.jsl.oa.controllers; + + +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.services.ProjectDailyService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; + +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + +/** + * 项目日报(ProjectDaily)表控制层 + * + * @author zrx + * @since 2024-04-18 11:40:52 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +public class ProjectDailyController { + /** + * 服务对象 + */ + + private final ProjectDailyService projectDailyService; + + /** + * 新增日报 + * + * @param projectDailyAddVO 日报添加实体 + * @return 新增结果 + */ + @PostMapping("/daily/add") + public BaseResponse add(@RequestBody @Validated ProjectDailyAddVO projectDailyAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request) { + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + + return projectDailyService.addDaily(projectDailyAddVO, request); + } + + + +} + + + diff --git a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java new file mode 100644 index 0000000..a9264d2 --- /dev/null +++ b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java @@ -0,0 +1,38 @@ +package com.jsl.oa.dao; +/* + 张睿相 Java +*/ + +import com.jsl.oa.mapper.ProjectDailyMapper; +import com.jsl.oa.model.dodata.ProjectDailyDO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + + + +/** + * ProjectDailyDAO + *
+ * 用于处理日报相关的请求, 包括获取日报、添加日报信息、编辑日报信息等 + * + * @author zrx_hhh + * @version v1.0.0 + * @since v1.0.0-SNAPSHOT + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class ProjectDailyDAO { + + private final ProjectDailyMapper projectDailyMapper; + + + public void addProjectDaily(ProjectDailyDO projectDailyDO) { + projectDailyMapper.insert(projectDailyDO); + } + + +} + + diff --git a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java new file mode 100644 index 0000000..0f9ddb6 --- /dev/null +++ b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java @@ -0,0 +1,22 @@ +package com.jsl.oa.mapper; + + +import com.jsl.oa.model.dodata.ProjectDailyDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 项目日报(ProjectDaily)表数据库访问层 + * + * @author zrx + * @since 2024-04-18 11:40:56 + */ +@Mapper +public interface ProjectDailyMapper { + + + void insert(ProjectDailyDO projectDailyDO); +} + + + diff --git a/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java new file mode 100644 index 0000000..4df4917 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/dodata/ProjectDailyDO.java @@ -0,0 +1,55 @@ +package com.jsl.oa.model.dodata; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + + +/** + * 项目日报(ProjectDaily)实体类 + * + * @author zrx + * @since 2024-04-18 11:40:56 + */ +@Data +@Accessors(chain = true) +public class ProjectDailyDO { + + /** + * 日报主键 自增 + */ + private Long id; + /** + * 用户id + */ + private Long userId; + /** + * 项目id + */ + private Long projectId; + /** + * 日报内容 + */ + private String content; + /** + * 日志发布时间 + */ + private Date dailyTime; + /** + * 创建时间 + */ + private Date createdAt; + /** + * 修改时间 + */ + private Date updatedAt; + /** + * 是否删除 + */ + private Integer isDelete; + +} + + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java new file mode 100644 index 0000000..ab4114e --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyAddVO.java @@ -0,0 +1,21 @@ +package com.jsl.oa.model.vodata; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + + +@Data +public class ProjectDailyAddVO { + + @NotNull(message = "项目id不能为空") + private Long projectId; + + @NotBlank(message = "日报内容不能为空") + private String content; + +} + + diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java new file mode 100644 index 0000000..9bc827e --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectDailyVO.java @@ -0,0 +1,16 @@ +package com.jsl.oa.model.vodata; +/* + 张睿相 Java +*/ + +/** + * 总体描述 + *

创建时间:2024/4/18 13:50

+ * + * @author 张睿相 + * @since v1.0 + */ +public class ProjectDailyVO { +} + + diff --git a/src/main/java/com/jsl/oa/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java new file mode 100644 index 0000000..b134f71 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -0,0 +1,25 @@ +package com.jsl.oa.services; + + + +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.utils.BaseResponse; + +import javax.servlet.http.HttpServletRequest; + + + +/** + * 项目日报(ProjectDaily)表服务接口 + * + * @author zrx + * @since 2024-04-18 11:40:53 + */ +public interface ProjectDailyService { + + + BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request); + +} + + diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java new file mode 100644 index 0000000..591bf7b --- /dev/null +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -0,0 +1,73 @@ +package com.jsl.oa.services.impl; +/* + 张睿相 Java +*/ + +import com.jsl.oa.dao.ProjectDAO; +import com.jsl.oa.dao.ProjectDailyDAO; +import com.jsl.oa.exception.BusinessException; +import com.jsl.oa.model.dodata.ProjectDailyDO; +import com.jsl.oa.model.vodata.ProjectDailyAddVO; +import com.jsl.oa.services.ProjectDailyService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; +import com.jsl.oa.utils.Processing; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +/** + *

日志服务层实现类

+ *
+ * 用于日志服务层的实现类 + * + * @author xiao_lfeng | 176yunxuan | xiangZr-hhh + * @version v1.1.0 + * @see com.jsl.oa.services.ProjectService + * @since v1.1.0 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProjectDailyServiceImpl implements ProjectDailyService { + + private final ProjectDAO projectDAO; + + private final ProjectDailyDAO projectDailyDAO; + + + @Override + public BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request) { + +// 获取用户id + Long userId = Processing.getAuthHeaderToUserId(request); +// 从请求体中获取项目id + Long projectId = projectDailyAddVO.getProjectId(); +// 检查项目是否存在 + if (!projectDAO.isExistProjectById(projectId)) { + throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + } + +// 赋值数据库表实体类相关属性 + ProjectDailyDO projectDailyDO = new ProjectDailyDO(); + Processing.copyProperties(projectDailyAddVO, projectDailyDO); + projectDailyDO.setUserId(userId) + .setDailyTime(new Date()); + +// 向数据库添加数据 + projectDailyDAO.addProjectDaily(projectDailyDO); + + return ResultUtil.success(); + } + + + + + +} + + diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml new file mode 100644 index 0000000..eb7b246 --- /dev/null +++ b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + insert into oa_project_daily + + user_id, + project_id, + content, + daily_time, + created_at + + values + + #{userId}, + #{projectId}, + #{content}, + #{dailyTime}, + NOW() + + + + \ No newline at end of file From 9c4cb174ebc2c0fc56e87ab0a9e063fea48ba30c Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 16:08:40 +0800 Subject: [PATCH 03/10] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E6=97=A5=E6=8A=A5?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=9F=A5=E8=AF=A2=E6=88=91=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E6=8A=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/ProjectDailyController.java | 4 ++ .../java/com/jsl/oa/dao/ProjectDailyDAO.java | 39 +++++++++++++++++++ .../com/jsl/oa/mapper/ProjectDailyMapper.java | 7 ++++ .../jsl/oa/services/ProjectDailyService.java | 1 + .../impl/ProjectDailyServiceImpl.java | 11 ++++++ .../com/jsl/oa/mapper/ProjectDailyMapper.xml | 13 +++++++ 6 files changed, 75 insertions(+) diff --git a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java index 9b4ccae..88d12ba 100644 --- a/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectDailyController.java @@ -53,6 +53,10 @@ public class ProjectDailyController { } + @GetMapping("/daily/getMyDaily") + public BaseResponse getMyDaily(HttpServletRequest request) { + return projectDailyService.getMyDaily(request); + } } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java index a9264d2..ad6805d 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDailyDAO.java @@ -4,11 +4,17 @@ package com.jsl.oa.dao; */ import com.jsl.oa.mapper.ProjectDailyMapper; +import com.jsl.oa.mapper.ProjectMapper; +import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectDailyDO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; /** @@ -26,6 +32,7 @@ import org.springframework.stereotype.Component; public class ProjectDailyDAO { private final ProjectDailyMapper projectDailyMapper; + private final ProjectMapper projectMapper; public void addProjectDaily(ProjectDailyDO projectDailyDO) { @@ -33,6 +40,38 @@ public class ProjectDailyDAO { } + public List getMyProjectDaily(Long userId) { + +// 日报数据数组 + List projectDailyDOList = new ArrayList<>(); + +// 先获取我负责的项目下的日报数据 + //获取我负责的项目 + List projectDOS = projectMapper.getAllProjectByUserId(userId); + //获取项目下对应日报 + for (ProjectDO projectDO:projectDOS) { + List dailyFromProject = projectDailyMapper.getProjectDailyByProject(projectDO.getId()); + projectDailyDOList.addAll(dailyFromProject); + } + +// 在获取本人的发布日报 + List myProjectDaily = projectDailyMapper.getProjectDailyByUser(userId); + projectDailyDOList.addAll(myProjectDaily); + +// 去除重复的日报信息 + projectDailyDOList = projectDailyDOList.stream() + // 根据 id 属性进行去重 + .collect(Collectors.toMap(ProjectDailyDO::getId, + Function.identity(), (existing, replacement) -> existing)) + .values().stream() + .collect(Collectors.toList()); + + return projectDailyDOList; + } + + + + } diff --git a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java index 0f9ddb6..3425a7e 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectDailyMapper.java @@ -4,6 +4,8 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.dodata.ProjectDailyDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 项目日报(ProjectDaily)表数据库访问层 @@ -16,6 +18,11 @@ public interface ProjectDailyMapper { void insert(ProjectDailyDO projectDailyDO); + + List getProjectDailyByUser(Long uid); + + List getProjectDailyByProject(Long pid); + } diff --git a/src/main/java/com/jsl/oa/services/ProjectDailyService.java b/src/main/java/com/jsl/oa/services/ProjectDailyService.java index b134f71..3d6fad9 100644 --- a/src/main/java/com/jsl/oa/services/ProjectDailyService.java +++ b/src/main/java/com/jsl/oa/services/ProjectDailyService.java @@ -20,6 +20,7 @@ public interface ProjectDailyService { BaseResponse addDaily(ProjectDailyAddVO projectDailyAddVO, HttpServletRequest request); + BaseResponse getMyDaily(HttpServletRequest request); } diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java index 591bf7b..8194080 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectDailyServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.Date; +import java.util.List; /** *

日志服务层实现类

@@ -64,8 +65,18 @@ public class ProjectDailyServiceImpl implements ProjectDailyService { return ResultUtil.success(); } + @Override + public BaseResponse getMyDaily(HttpServletRequest request) { +// 获取用户id + Long userId = Processing.getAuthHeaderToUserId(request); +// 获取 我发布的及自己负责的项目下 的日报 + List projectDailyDOList = + projectDailyDAO.getMyProjectDaily(userId); + return ResultUtil.success(projectDailyDOList); + + } } diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml index eb7b246..bc48bd9 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectDailyMapper.xml @@ -25,4 +25,17 @@ + + + + + \ No newline at end of file From 0d05ea08fbd6a2eed1a3cc7f81e6151cba599e40 Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 16:53:11 +0800 Subject: [PATCH 04/10] =?UTF-8?q?fix:=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加部分权限判断 --- src/main/java/com/jsl/oa/dao/ReviewDAO.java | 5 ++++ .../java/com/jsl/oa/mapper/ReviewMapper.java | 4 ++++ .../oa/services/impl/ReviewServiceImpl.java | 23 +++++++++++++++++++ src/main/java/com/jsl/oa/utils/ErrorCode.java | 2 ++ 4 files changed, 34 insertions(+) diff --git a/src/main/java/com/jsl/oa/dao/ReviewDAO.java b/src/main/java/com/jsl/oa/dao/ReviewDAO.java index 012825b..90f4055 100644 --- a/src/main/java/com/jsl/oa/dao/ReviewDAO.java +++ b/src/main/java/com/jsl/oa/dao/ReviewDAO.java @@ -58,6 +58,11 @@ public class ReviewDAO { result); } + public List getReviewByUser(Long uid) { + return reviewMapper.selectReviewByUser(uid); + } + + public void addReview(ReviewDO reviewDO) { reviewMapper.addReview(reviewDO); diff --git a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java index 0561dda..aa6a2e9 100644 --- a/src/main/java/com/jsl/oa/mapper/ReviewMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ReviewMapper.java @@ -43,4 +43,8 @@ public interface ReviewMapper { @Select("SELECT * FROM organize_oa.oa_review WHERE name = #{name} AND is_delete = 0") List selectReviewByName(String name); + + @Select("SELECT * FROM organize_oa.oa_review WHERE sender_id = #{uid} AND " + + "is_delete = 0") + List selectReviewByUser(Long uid); } 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 b537ee8..8e65ced 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -5,6 +5,7 @@ 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.exception.BusinessException; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.model.dodata.ProjectChildDO; @@ -155,6 +156,11 @@ public class ReviewServiceImpl implements ReviewService { reviewData.addAll(reviewDOS); } +// 获取自己的审核记录 + List myReviewDO = reviewDAO.getReviewByUser(userId); + reviewData.addAll(myReviewDO); + + //根据id进行去重 reviewData = reviewData.stream() .collect(Collectors.toMap(ReviewDO::getId, review -> review, (existing, replacement) -> existing)) @@ -186,6 +192,23 @@ public class ReviewServiceImpl implements ReviewService { //获取用户 Long userId = Processing.getAuthHeaderToUserId(request); + //检查对应项目,子系统,子模块是否存在 + if (!projectDAO.isExistProjectById(reviewAddVO.getProjectId())) { + throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); + } + if (projectMapper.getProjectChildById( + Math.toIntExact(reviewAddVO.getProjectChildId())) != null) { + throw new BusinessException(ErrorCode.PROJECT_CHILD_NOT_EXIST); + } + +// 子模块id不为空时查询,否则直接跳过 + if (reviewAddVO.getProjectModuleId() != null) { + if (projectMapper.getModuleById( + Math.toIntExact(reviewAddVO.getProjectModuleId())) != null) { + throw new BusinessException(ErrorCode.MODULE_NOT_EXIST); + } + } + //定义要添加的审核实体类 ReviewDO reviewDO = new ReviewDO(); //现将属性相同的值拷贝 diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index 05e988d..8bb67cc 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -53,6 +53,8 @@ public enum ErrorCode { PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"), PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"), PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户"), + PROJECT_CHILD_NOT_EXIST("ProjectChildNotExist", 40021, "子系统不存在"), + MODULE_NOT_EXIST("ModuleNotExist", 40022, "模块不存在"), REVIEW_NOT_EXIST("ReviewNotExit", 40101, "未找到对应审核信息"); From f491d9a97ffa789c1907923dea90a83dfd556e3d Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 17:04:30 +0800 Subject: [PATCH 05/10] =?UTF-8?q?fix:=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsl/oa/services/impl/ReviewServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 8e65ced..f80504b 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -196,6 +196,7 @@ public class ReviewServiceImpl implements ReviewService { if (!projectDAO.isExistProjectById(reviewAddVO.getProjectId())) { throw new BusinessException(ErrorCode.PROJECT_NOT_EXIST); } + if (projectMapper.getProjectChildById( Math.toIntExact(reviewAddVO.getProjectChildId())) != null) { throw new BusinessException(ErrorCode.PROJECT_CHILD_NOT_EXIST); @@ -255,7 +256,6 @@ public class ReviewServiceImpl implements ReviewService { } - @Override public BaseResponse searchReview(String content, Short statue, @@ -437,6 +437,9 @@ public class ReviewServiceImpl implements ReviewService { reviewData.addAll(reviewDOS); } + // 获取自己的审核记录 + List myReviewDO = reviewDAO.getReviewByUser(userId); + reviewData.addAll(myReviewDO); //根据id进行去重 reviewData = reviewData.stream() From 84b2ab983a2644c7bf385ae2d9c00b76e058652c Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 18 Apr 2024 17:32:08 +0800 Subject: [PATCH 06/10] =?UTF-8?q?fix:=E5=AE=A1=E6=A0=B8=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 返回数据增加部分属性 --- src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java | 6 +++++- .../java/com/jsl/oa/services/impl/ReviewServiceImpl.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java b/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java index 7700711..6a45106 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ReviewDataVO.java @@ -8,7 +8,11 @@ import java.util.List; @Data public class ReviewDataVO { - private Integer dataTotal; + private Integer totalCount; + + private Integer currentPage; + + private Integer pageSize; private List reviews; } 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 f80504b..cc6c4d7 100644 --- a/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ReviewServiceImpl.java @@ -469,7 +469,9 @@ public class ReviewServiceImpl implements ReviewService { List reviewsOnPage = allReviews.subList(startIndex, endIndex); reviewDataVO.setReviews(reviewsOnPage); - reviewDataVO.setDataTotal(total); + reviewDataVO.setTotalCount(allReviews.size()); + reviewDataVO.setPageSize(pageSize); + reviewDataVO.setCurrentPage(page); return reviewDataVO; } From 5c33818e3dc954753f4822a5dc2362266cd05567 Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Thu, 18 Apr 2024 19:55:59 +0800 Subject: [PATCH 07/10] =?UTF-8?q?fix:=E6=96=B0=E5=A2=9E=E5=AD=90=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=EF=BC=8C=E5=AD=90=E6=A8=A1=E5=9D=97=EF=BC=8C=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=80=BB=E6=95=B0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/config/startup/PermissionList.java | 6 +++ .../jsl/oa/controllers/ProjectController.java | 40 +++++++++++--- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 6 +-- .../java/com/jsl/oa/mapper/ProjectMapper.java | 21 +++++--- ...jectWorkVO.java => ProjectChildAddVO.java} | 15 +++--- .../oa/model/vodata/ProjectModuleAddVO.java | 25 +++++++++ .../com/jsl/oa/model/vodata/ReturnGetVO.java | 7 ++- .../com/jsl/oa/services/ProjectService.java | 7 ++- .../oa/services/impl/MessageServiceImpl.java | 3 +- .../oa/services/impl/ProjectServiceImpl.java | 53 ++++++++++++------- 10 files changed, 131 insertions(+), 52 deletions(-) rename src/main/java/com/jsl/oa/model/vodata/{ProjectWorkVO.java => ProjectChildAddVO.java} (61%) create mode 100644 src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java diff --git a/src/main/java/com/jsl/oa/config/startup/PermissionList.java b/src/main/java/com/jsl/oa/config/startup/PermissionList.java index 2ae0d8f..29615c9 100644 --- a/src/main/java/com/jsl/oa/config/startup/PermissionList.java +++ b/src/main/java/com/jsl/oa/config/startup/PermissionList.java @@ -23,16 +23,22 @@ public class PermissionList { permissionList.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionList.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionList.add(new PermissionVO("info:delete_header_image", "删除头部图片")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); permissionPrincipal.add(new PermissionVO("auth:change_password", "修改密码")); permissionPrincipal.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionPrincipal.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionPrincipal.add(new PermissionVO("info:delete_header_image", "删除头部图片")); permissionPrincipal.add(new PermissionVO("project:add", "增加项目")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); permissionDeveloper.add(new PermissionVO("auth:change_password", "修改密码")); permissionDeveloper.add(new PermissionVO("info:get_header_image", "获取头部图片")); permissionDeveloper.add(new PermissionVO("info:edit_header_image", "编辑头部图片")); permissionDeveloper.add(new PermissionVO("info:delete_header_image", "删除头部图片")); + permissionPrincipal.add(new PermissionVO("project:child:add", "增加子系统")); + permissionPrincipal.add(new PermissionVO("project:module:add", "增加子模块")); } } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index a7beabf..ce89c30 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -3,7 +3,8 @@ package com.jsl.oa.controllers; import com.jsl.oa.annotations.NeedPermission; 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.ProjectChildAddVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.services.ProjectService; import com.jsl.oa.utils.BaseResponse; @@ -209,7 +210,7 @@ public class ProjectController { * @return */ @GetMapping("/project/participate/get") -public BaseResponse projectParticipateGet( + public BaseResponse projectParticipateGet( @RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize, HttpServletRequest request) { @@ -217,25 +218,47 @@ public BaseResponse projectParticipateGet( } + /** + * 增加子模块 + * + * @param projectModuleAddVO + * @param bindingResult + * @param request + * @return + */ + @PostMapping("/project/module/add") + @NeedPermission("project:module:add") + public BaseResponse projectModuleAdd( + @RequestBody @Validated ProjectModuleAddVO projectModuleAddVO, + @NotNull BindingResult bindingResult, + HttpServletRequest request + ) { + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + return projectService.projectModuleAdd(request, projectModuleAddVO); + } /** - * 子系统子模块的增加 + * 子系统的增加 * * @param request 请求 * @param bindingResult 参数校验 * @return {@link BaseResponse} */ - @PostMapping("/project/work/add") - public BaseResponse projectWorkAdd( + @PostMapping("/project/child/add") + @NeedPermission("project:child:add") + public BaseResponse projectChildAdd( HttpServletRequest request, - @RequestBody @Validated ProjectWorkVO projectWorkVO, + @RequestBody @Validated ProjectChildAddVO projectChildAddVO, @NotNull BindingResult bindingResult ) { // 判断是否有参数错误 if (bindingResult.hasErrors()) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); } - return projectService.projectWorkAdd(request, projectWorkVO); + return projectService.projectChildAdd(request, projectChildAddVO); } @@ -262,6 +285,9 @@ public BaseResponse projectParticipateGet( return projectService.projectAdd(request, projectInfoVO); } + + + /** * 获取负责人id * diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 80a6007..32a597a 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -7,7 +7,7 @@ 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; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; import com.jsl.oa.utils.Processing; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -35,10 +35,10 @@ public class ProjectDAO { projectMapper.projectAdd(projectAdd); } - public void projectWorkAdd(ProjectWorkVO projectWorkVO) { + public void projectWorkAdd(ProjectChildAddVO projectChildAddVO) { log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法"); log.info("\t\t> 从 MySQL 获取数据"); - projectMapper.projectWorkAdd(projectWorkVO); + projectMapper.projectWorkAdd(projectChildAddVO); } public ProjectDO projectEdit(@NotNull ProjectEditVO projectEdit, Long projectId) { diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index dcaad1f..b53e758 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -3,8 +3,9 @@ import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.vodata.ProjectInfoVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.ProjectWorkSimpleVO; -import com.jsl.oa.model.vodata.ProjectWorkVO; +import com.jsl.oa.model.vodata.ProjectChildAddVO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -23,11 +24,17 @@ public interface ProjectMapper { + ",#{completeTime},#{deadLine},#{status},#{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})") - void projectWorkAdd(ProjectWorkVO projectWorkVO); + @Insert("insert into organize_oa.oa_project_child (project_id,name, principal_id," + + " work_load, description, cycle,status,dead_line) " + + "value (#{projectId},#{name},#{principalId},#{workLoad}," + + "#{description},#{cycle},#{status},#{deadLine})") + void projectWorkAdd(ProjectChildAddVO projectChildAddVO); + + @Insert("insert into organize_oa.oa_project_modules (project_child_id, name, principal_id," + + " work_load, description, status, dead_line) " + + "value (#{projectChildId},#{name},#{principalId},#{workLoad}," + + "#{description},#{status},#{deadLine})") + void projectModuleAdd(ProjectModuleAddVO projectModuleAddVO); void projectEdit(ProjectDO projectEdit); @@ -150,4 +157,6 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project where name like CONCAT('%',#{name},'%')") List getByLikeName(String name); + + } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java similarity index 61% rename from src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java rename to src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java index 80630b9..7ede1ea 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ProjectWorkVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectChildAddVO.java @@ -6,24 +6,21 @@ import javax.validation.constraints.NotNull; import java.sql.Timestamp; @Data -public class ProjectWorkVO { +public class ProjectChildAddVO { - private Long pid; @NotNull(message = "项目id不能为空") private Long projectId; private Long principalId; @NotNull(message = "周期不能为空") private Integer cycle; + @NotNull(message = "工作量不能为空") private Integer workLoad; - @NotNull(message = "类型不能为空") - private Integer type; @NotNull(message = "名字不能为空") private String name; private String description; - private Integer isDelete; - private Integer isFinish; - private Integer status; - private Timestamp beginTime; - private Timestamp completeTime; + private String status; + @NotNull(message = "截止时间不能为空") + private Timestamp deadLine; + } diff --git a/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java b/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java new file mode 100644 index 0000000..23bd4e2 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/vodata/ProjectModuleAddVO.java @@ -0,0 +1,25 @@ +package com.jsl.oa.model.vodata; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.sql.Timestamp; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ProjectModuleAddVO { + @NotNull(message = "子系统id不能为空") + private Long projectChildId; + private Long principalId; + @NotNull(message = "工作量不能为空") + private Integer workLoad; + @NotNull(message = "名字不能为空") + private String name; + private String description; + private String status; + @NotNull(message = "截止时间不能为空") + private Timestamp deadLine; +} diff --git a/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java b/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java index 8fb1afc..c198806 100644 --- a/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/ReturnGetVO.java @@ -1,17 +1,16 @@ package com.jsl.oa.model.vodata; -import com.fasterxml.jackson.annotation.JsonInclude; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; + @Data @NoArgsConstructor @AllArgsConstructor -@Accessors(chain = true) -@JsonInclude(JsonInclude.Include.NON_NULL) + /** * 模糊查询返回,系统/项目/模块 名字和id diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 2e71184..ac4ea4f 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -2,7 +2,8 @@ package com.jsl.oa.services; 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.ProjectChildAddVO; +import com.jsl.oa.model.vodata.ProjectModuleAddVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.utils.BaseResponse; @@ -35,7 +36,7 @@ public interface ProjectService { Integer page, Integer pageSize); - BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); + BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO); BaseResponse tGet(List tags, List isFinish, Integer page, Integer pageSize); @@ -69,4 +70,6 @@ public interface ProjectService { BaseResponse projectModuleDelete(HttpServletRequest request, List id); BaseResponse projectGetName(String name, HttpServletRequest request); + + BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO); } 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 e436f37..7fb8615 100644 --- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java @@ -70,6 +70,7 @@ public class MessageServiceImpl implements MessageService { } PageHelper.startPage(page, pageSize); List messageDOList = messageMapper.page(beginTime, endTime, uid); + //封装返回数据 List messageGetVOList = new ArrayList<>(); for (MessageDO messageDO : messageDOList) { @@ -89,9 +90,9 @@ public class MessageServiceImpl implements MessageService { } messageGetVOList.add(messageGetVO1); } - //分页返回 PageInfo pageInfo = new PageInfo<>(messageGetVOList); + pageInfo.setTotal(messageMapper.page(beginTime, endTime, uid).size()); return ResultUtil.success(pageInfo); } 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 df0bf35..ea53981 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -88,26 +88,19 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) { - //获取用户id - Long userId = Processing.getAuthHeaderToUserId(request); - //是否是增加子系统 - if (projectWorkVO.getType() == 0) { - //是否是老师 - if (Processing.checkUserIsPrincipal(request, roleDAO)) { - projectDAO.projectWorkAdd(projectWorkVO); - } else { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - } else { - //是否是子系统的负责人 - if (Objects.equals(userId, projectMapper.getPirIdbyId(projectWorkVO.getPid()))) { - projectDAO.projectWorkAdd(projectWorkVO); - } else { - return ResultUtil.error(ErrorCode.NOT_PERMISSION); - } - } + public BaseResponse projectChildAdd(HttpServletRequest request, ProjectChildAddVO projectChildAddVO) { + //是否是项目负责人 + if (projectMapper.getProjectById(projectChildAddVO.getProjectId()).getPrincipalId() + .equals(Processing.getAuthHeaderToUserId(request)) + ) { + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectChildAddVO.getDescription()); + projectChildAddVO.setDescription(gson.toJson(descriptionMap)); + projectDAO.projectWorkAdd(projectChildAddVO); + } else { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } return ResultUtil.success("添加成功"); } @@ -183,6 +176,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectDAO.get(userId, null, null).size()); return ResultUtil.success(pageInfo); } @@ -202,6 +196,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectMapper.getParticipateProject(userId).size()); return ResultUtil.success(pageInfo); } @@ -246,11 +241,28 @@ public class ProjectServiceImpl implements ProjectService { for (ProjectDO projectDO : projectDOList) { ReturnGetVO returnGetVO = new ReturnGetVO(); Processing.copyProperties(projectDO, returnGetVO); - returnGetVOList.add(returnGetVO); } return ResultUtil.success(returnGetVOList); } + @Override + public BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO) { + //判断是否是子系统负责人或项目负责人 + if (!Objects.equals(Processing.getAuthHeaderToUserId(request), + projectMapper.getProjectChildById(projectModuleAddVO.getProjectChildId().intValue()).getPrincipalId()) + // 项目负责人 + && !Objects.equals(Processing.getAuthHeaderToUserId(request), + projectMapper.getPirIdbyId(projectModuleAddVO.getProjectChildId()))) { + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } else { + HashMap descriptionMap = new HashMap<>(); + descriptionMap.put("description", projectModuleAddVO.getDescription()); + projectModuleAddVO.setDescription(gson.toJson(descriptionMap)); + projectMapper.projectModuleAdd(projectModuleAddVO); + } + return ResultUtil.success("添加成功"); + } + @Override public BaseResponse getModuleById(Integer id) { ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id); @@ -426,6 +438,7 @@ public class ProjectServiceImpl implements ProjectService { } //分页返回 PageInfo pageInfo = new PageInfo<>(projectSimpleVOList); + pageInfo.setTotal(projectDAO.workget(userId, tags, isFinish, is).size()); return ResultUtil.success(pageInfo); } From 7d958bfa69c56f8ea189d700bac207d7d30f6faf Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Thu, 18 Apr 2024 22:25:07 +0800 Subject: [PATCH 08/10] =?UTF-8?q?fix:=E7=94=B3=E8=AF=B7=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=90=8D=E5=AD=97=E6=9F=A5=E8=AF=A2=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=8C=E7=B3=BB=E7=BB=9F=EF=BC=8C=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/ProjectController.java | 32 ++++++++++++++++++- .../java/com/jsl/oa/mapper/ProjectMapper.java | 8 +++++ .../com/jsl/oa/services/ProjectService.java | 4 +++ .../oa/services/impl/ProjectServiceImpl.java | 27 ++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index ce89c30..2537b38 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -349,7 +349,13 @@ public class ProjectController { return projectService.projectModuleDelete(request, id); } - + /** + * 项目名模糊查询项目 + * + * @param name + * @param request + * @return + */ @GetMapping("/project/get/name") public BaseResponse projectGetName( @RequestParam String name, @@ -358,4 +364,28 @@ public class ProjectController { return projectService.projectGetName(name, request); } + /** + * 项目名查询子系统 + * + * @param name + * @param request + * @return + */ + @GetMapping("/project/child/get/name") + public BaseResponse projectChildGetName( + @RequestParam String name, + HttpServletRequest request + ) { + return projectService.projectChildGetName(name, request); + } + + @GetMapping("/project/module/get/name") + public BaseResponse projectModuleGetName( + @RequestParam String projectName, + @RequestParam String childName, + HttpServletRequest request + ) { + return projectService.projectModuleGetName(projectName, childName, request); + } + } diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index b53e758..510a65b 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -159,4 +159,12 @@ public interface ProjectMapper { List getByLikeName(String name); + @Select("select * from organize_oa.oa_project_child where project_id = " + + "(select id from organize_oa.oa_project where name =#{name})") + List getChildByLikeName(String name); + + @Select("select * from organize_oa.oa_project_modules where project_child_id = " + + "(select id from organize_oa.oa_project_child where name =#{childName} " + + "and project_id = (select id from organize_oa.oa_project where name =#{projectName}))") + List getModuleByName(String projectName, String childName); } diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index ac4ea4f..851edeb 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -72,4 +72,8 @@ public interface ProjectService { BaseResponse projectGetName(String name, HttpServletRequest request); BaseResponse projectModuleAdd(HttpServletRequest request, ProjectModuleAddVO projectModuleAddVO); + + BaseResponse projectChildGetName(String name, HttpServletRequest request); + + BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request); } 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 ea53981..00abac7 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -12,6 +12,7 @@ import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.UserMapper; +import com.jsl.oa.model.dodata.ProjectChildDO; import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectModuleDO; import com.jsl.oa.model.dodata.UserDO; @@ -241,6 +242,7 @@ public class ProjectServiceImpl implements ProjectService { for (ProjectDO projectDO : projectDOList) { ReturnGetVO returnGetVO = new ReturnGetVO(); Processing.copyProperties(projectDO, returnGetVO); + returnGetVOList.add(returnGetVO); } return ResultUtil.success(returnGetVOList); } @@ -263,6 +265,31 @@ public class ProjectServiceImpl implements ProjectService { return ResultUtil.success("添加成功"); } + @Override + public BaseResponse projectChildGetName(String name, HttpServletRequest request) { + + List projectChildDOList = projectMapper.getChildByLikeName(name); + List returnGetVOList = new ArrayList<>(); + for (ProjectChildDO projectChildDO : projectChildDOList) { + ReturnGetVO returnGetVO = new ReturnGetVO(); + Processing.copyProperties(projectChildDO, returnGetVO); + returnGetVOList.add(returnGetVO); + } + return ResultUtil.success(returnGetVOList); + } + + @Override + public BaseResponse projectModuleGetName(String projectName, String childName, HttpServletRequest request) { + List projectModuleDOList = projectMapper.getModuleByName(projectName, childName); + List returnGetVOList = new ArrayList<>(); + for (ProjectModuleDO projectModuleDO : projectModuleDOList) { + ReturnGetVO returnGetVO = new ReturnGetVO(); + Processing.copyProperties(projectModuleDO, returnGetVO); + returnGetVOList.add(returnGetVO); + } + return ResultUtil.success(returnGetVOList); + } + @Override public BaseResponse getModuleById(Integer id) { ProjectModuleDO projectWorkSimpleVO = projectMapper.getModuleById(id); From acb3fab074a3f2d7a9b3c72328b5d15088be0a35 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 18 Apr 2024 22:32:39 +0800 Subject: [PATCH 09/10] =?UTF-8?q?fix(=E4=B8=9A=E5=8A=A1):=20=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit json 补丁 --- .../com/jsl/oa/model/vodata/PermissionContentVO.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java b/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java index 5b5bddd..a23a1d8 100644 --- a/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java +++ b/src/main/java/com/jsl/oa/model/vodata/PermissionContentVO.java @@ -2,13 +2,17 @@ package com.jsl.oa.model.vodata; import lombok.Data; +import java.util.List; + @Data public class PermissionContentVO { - // 主键 + private Long id; - // 权限名称 private String name; - // 权限描述 - private String description; + private String code; + private Short type; + private List children; + } + From b9aa1b25cc47e2e9350f16a8566a6a8bab229793 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 18 Apr 2024 22:34:03 +0800 Subject: [PATCH 10/10] =?UTF-8?q?fix(=E4=B8=9A=E5=8A=A1):=20=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 数据库建表内容修改 --- src/main/resources/mysql/oa_project_child.sql | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/resources/mysql/oa_project_child.sql b/src/main/resources/mysql/oa_project_child.sql index c750c63..f4f771c 100644 --- a/src/main/resources/mysql/oa_project_child.sql +++ b/src/main/resources/mysql/oa_project_child.sql @@ -2,7 +2,7 @@ create table oa_project_child ( id bigint unsigned auto_increment comment '项目id' primary key, - project_id bigint unsigned not null comment '主要项目id', + project_id bigint unsigned null comment '主要项目id', name varchar(100) not null comment '项目名称', principal_id bigint unsigned not null comment '项目负责人', description json null comment '项目描述(技术选择,描述)', @@ -13,11 +13,8 @@ create table oa_project_child created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间', updated_at timestamp null comment '更新时间', is_delete tinyint(1) default 0 not null comment '项目是否删除', - dead_line timestamp not null comment '子系统的截止时间', - status varchar(8) default 'progress' not null comment '系统状态(draft: 草稿,progress: 进行,pause: 暂停,abnormal: 异常,complete: 完成)', constraint oa_project_child_oa_user_id_fk foreign key (principal_id) references oa_user (id) on update cascade ) - comment '项目表'; - + comment '项目表'; \ No newline at end of file