From 9280fa7d5d3d77614b150f67500e587ce5efd726 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Tue, 12 Mar 2024 21:04:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Tag=E4=BF=A1=E6=81=AF=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsl/oa/controllers/TagController.java | 52 +++++++++++++++++++ src/main/java/com/jsl/oa/dao/ProjectDAO.java | 8 ++- src/main/java/com/jsl/oa/dao/TagDAO.java | 41 +++++++++++++++ .../java/com/jsl/oa/mapper/TagMapper.java | 32 ++++++++++++ .../com/jsl/oa/model/doData/TagProjectDO.java | 24 +++++++++ .../java/com/jsl/oa/services/TagService.java | 25 +++++++++ .../oa/services/impl/ProjectServiceImpl.java | 15 +++--- .../jsl/oa/services/impl/TagServiceImpl.java | 45 ++++++++++++++++ 8 files changed, 229 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/jsl/oa/controllers/TagController.java create mode 100644 src/main/java/com/jsl/oa/dao/TagDAO.java create mode 100644 src/main/java/com/jsl/oa/mapper/TagMapper.java create mode 100644 src/main/java/com/jsl/oa/model/doData/TagProjectDO.java create mode 100644 src/main/java/com/jsl/oa/services/TagService.java create mode 100644 src/main/java/com/jsl/oa/services/impl/TagServiceImpl.java diff --git a/src/main/java/com/jsl/oa/controllers/TagController.java b/src/main/java/com/jsl/oa/controllers/TagController.java new file mode 100644 index 0000000..bbc7a62 --- /dev/null +++ b/src/main/java/com/jsl/oa/controllers/TagController.java @@ -0,0 +1,52 @@ +package com.jsl.oa.controllers; + +import com.jsl.oa.services.TagService; +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.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.regex.Pattern; + +/** + * TagController + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @author xiao_lfeng + * @version v1.0.0 + * @since v1.0.0-SNAPSHOT + */ +@Slf4j +@RestController +@RequestMapping("/tags") +@RequiredArgsConstructor +public class TagController { + private final TagService tagService; + + @GetMapping("/project/list") + public BaseResponse getTagsProjectList( + @RequestParam(required = false) String page, + @RequestParam(required = false) String limit, + @RequestParam(required = false) String order + ) { + log.info("[Controller] 请求 getProjectList 接口"); + // 处理默认数据 + if (page == null || !Pattern.matches("^[0-9]+$", page) || Integer.parseInt(page) < 1) { + page = "1"; + } + if (limit == null || !Pattern.matches("^[0-9]+$", limit) || Integer.parseInt(limit) < 1) { + limit = "20"; + } + if ((!"asc".equals(order) && !"desc".equals(order))) { + order = "id asc"; + } else { + order = "id " + order; + } + // 业务操作 + return tagService.getTagsProjectList(Integer.valueOf(page), Integer.valueOf(limit), order); + } +} diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 2a6d2be..a442012 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; @Slf4j @Component @@ -207,14 +208,11 @@ public class ProjectDAO { log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法"); log.info("\t\t> 从 MySQL 获取数据"); ProjectDO projectDO = projectMapper.getProjectById(projectId); - if(uid == projectDO.getPrincipalId()){ - return true; - } - return false; + return Objects.equals(uid, projectDO.getPrincipalId()); } - public List tget(Integer id) { + public List tget(Integer id, List tags, Integer isFinish) { log.info("DAO层"); return projectMapper.tget(id); } diff --git a/src/main/java/com/jsl/oa/dao/TagDAO.java b/src/main/java/com/jsl/oa/dao/TagDAO.java new file mode 100644 index 0000000..462e385 --- /dev/null +++ b/src/main/java/com/jsl/oa/dao/TagDAO.java @@ -0,0 +1,41 @@ +package com.jsl.oa.dao; + +import com.jsl.oa.mapper.TagMapper; +import com.jsl.oa.model.doData.TagProjectDO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; + +/** + * TagDAO + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @since v1.0.0-SNAPSHOT + * @version v1.0.0 + * @author xiao_lfeng + */ +@Slf4j +@Repository +@RequiredArgsConstructor +public class TagDAO { + private final TagMapper tagMapper; + + /** + * 获取标签列表 + *
+ * 该接口提供标签列表的查询功能。用户在成功登录后,可以请求此接口来获取标签列表. + * + * @param page 页码 + * @param limit 每页数量 + * @param order 排序 + */ + public ArrayList getTagsProjectList(Integer page, Integer limit, String order) { + log.info("[DAO] 请求 getTagsProjectList 接口"); + // 获取标签列表 + page = (page - 1) * limit; + return (ArrayList) tagMapper.getTagsProjectList(order, limit, page); + } +} diff --git a/src/main/java/com/jsl/oa/mapper/TagMapper.java b/src/main/java/com/jsl/oa/mapper/TagMapper.java new file mode 100644 index 0000000..14aa675 --- /dev/null +++ b/src/main/java/com/jsl/oa/mapper/TagMapper.java @@ -0,0 +1,32 @@ +package com.jsl.oa.mapper; + +import com.jsl.oa.model.doData.TagProjectDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * TagMapper + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @since v1.0.0-SNAPSHOT + * @version v1.0.0 + * @author xiao_lfeng + */ +@Mapper +public interface TagMapper { + + /** + * 获取标签列表 + *
+ * 该接口提供标签列表的查询功能。用户在成功登录后,可以请求此接口来获取标签列表. + * + * @param page 页码 + * @param limit 每页数量 + * @param order 排序 + */ + @Select("SELECT * FROM organize_oa.oa_project_tags ORDER BY ${order} LIMIT #{limit} OFFSET #{page}") + List getTagsProjectList(String order, Integer limit, Integer page); +} diff --git a/src/main/java/com/jsl/oa/model/doData/TagProjectDO.java b/src/main/java/com/jsl/oa/model/doData/TagProjectDO.java new file mode 100644 index 0000000..22a558e --- /dev/null +++ b/src/main/java/com/jsl/oa/model/doData/TagProjectDO.java @@ -0,0 +1,24 @@ +package com.jsl.oa.model.doData; + +import lombok.Data; + +import java.sql.Timestamp; + +/** + * TagProjectDO + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @since v1.0.0-SNAPSHOT + * @version v1.0.0 + * @author xiao_lfeng + */ +@Data +public class TagProjectDO { + private String id; + private String name; + private Long pid; + private Timestamp createdAt; + private Timestamp updatedAt; + private Boolean isDelete; +} diff --git a/src/main/java/com/jsl/oa/services/TagService.java b/src/main/java/com/jsl/oa/services/TagService.java new file mode 100644 index 0000000..7d0ea31 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/TagService.java @@ -0,0 +1,25 @@ +package com.jsl.oa.services; + +import com.jsl.oa.utils.BaseResponse; + +/** + * TagService + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @since v1.0.0-SNAPSHOT + * @version v1.0.0 + * @author xiao_lfeng + */ +public interface TagService { + /** + * 获取标签列表 + *
+ * 该接口提供标签列表的查询功能。用户在成功登录后,可以请求此接口来获取标签列表. + * + * @param page 页码 + * @param limit 每页数量 + * @return BaseResponse 返回标签列表 + */ + BaseResponse getTagsProjectList(Integer page, Integer limit, String order); +} 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 f54d986..33f7f9a 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -65,17 +65,17 @@ public class ProjectServiceImpl implements ProjectService { log.info("\t> 执行 Service 层 ProjectService.tget 方法"); //根据状态查询 - if(isFinish != null){ - List projectDOList = projectDAO.tget(id,tags,isFinish); + if (isFinish != null) { + List projectDOList = projectDAO.tget(id, tags, isFinish); return ResultUtil.success(projectDOList); } //根据标签查询 - if(tags != null && !tags.isEmpty()){ - List projectDOList = projectDAO.tget(id,tags,isFinish); + if (tags != null && !tags.isEmpty()) { + List projectDOList = projectDAO.tget(id, tags, isFinish); return ResultUtil.success(projectDOList); } - List projectDOList = projectDAO.tget(id,tags,isFinish); + List projectDOList = projectDAO.tget(id, tags, isFinish); return ResultUtil.success(projectDOList); } @@ -84,7 +84,6 @@ public class ProjectServiceImpl implements ProjectService { log.info("\t> 执行 Service 层 ProjectService.projectEdit 方法"); - //判断用户是否为老师 或者 项目负责人 if (!Processing.checkUserIsTeacher(request, roleMapper) || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { @@ -94,7 +93,7 @@ public class ProjectServiceImpl implements ProjectService { //判断项目是否存在 if (projectDAO.isExistProject(projectId)) { //更新数据 - return ResultUtil.success(projectDAO.projectEdit(projectEdit,projectId)); + return ResultUtil.success(projectDAO.projectEdit(projectEdit, projectId)); } else { return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); } @@ -290,7 +289,7 @@ public class ProjectServiceImpl implements ProjectService { //判断用户是否为老师 或者 项目负责人 或管理员 if (!Processing.checkUserIsTeacher(request, roleMapper) && !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), id) - && !Processing.checkUserIsAdmin(request, roleMapper)) { + && !Processing.checkUserIsAdmin(request, roleMapper)) { return ResultUtil.error(ErrorCode.NOT_PERMISSION); } diff --git a/src/main/java/com/jsl/oa/services/impl/TagServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/TagServiceImpl.java new file mode 100644 index 0000000..9df16d8 --- /dev/null +++ b/src/main/java/com/jsl/oa/services/impl/TagServiceImpl.java @@ -0,0 +1,45 @@ +package com.jsl.oa.services.impl; + +import com.jsl.oa.dao.TagDAO; +import com.jsl.oa.model.doData.TagProjectDO; +import com.jsl.oa.services.TagService; +import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ResultUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; + +/** + * TagServiceImpl + *
+ * 用于处理标签相关的请求, 包括获取标签列表、编辑标签信息等 + * + * @since v1.0.0-SNAPSHOT + * @version v1.0.0 + * @author xiao_lfeng + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TagServiceImpl implements TagService { + private final TagDAO tagDAO; + + /** + * 获取标签列表 + *
+ * 该接口提供标签列表的查询功能。用户在成功登录后,可以请求此接口来获取标签列表. + * + * @param page 页码 + * @param limit 每页数量 + * @return BaseResponse 返回标签列表 + */ + @Override + public BaseResponse getTagsProjectList(Integer page, Integer limit, String order) { + log.info("[Service] 请求 getTagsProjectList 接口"); + // 获取标签列表 + ArrayList getTagList = tagDAO.getTagsProjectList(page, limit, order); + return ResultUtil.success(getTagList); + } +} From 6813b5195d6008547b1870d3f5a61bddeda760a3 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Tue, 12 Mar 2024 21:05:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Tag=E4=BF=A1=E6=81=AF=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index a442012..b9009ee 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -212,7 +212,7 @@ public class ProjectDAO { } - public List tget(Integer id, List tags, Integer isFinish) { + public List tget(Integer id) { log.info("DAO层"); return projectMapper.tget(id); }