diff --git a/.gitignore b/.gitignore index feff169..d5c6f11 100755 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ build/ ### 自定义 ### *.pdf /src/main/resources/application-dev.yml +**/.DS_Store +/logs diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index a7c556d..580d3a8 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -17,6 +17,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; @Slf4j @RestController @@ -27,6 +29,7 @@ public class ProjectController { /** * 项目展示获取 + * 项目轮播图 * * @param id * @return @@ -43,13 +46,17 @@ public class ProjectController { * @return */ @GetMapping("/project/get") - public BaseResponse projectGet() { + public BaseResponse projectGet(@RequestParam(required = false) Integer listAll, + @RequestParam(required = false) List tags, + @RequestParam(required = false) Integer isFinish, + HttpServletRequest request) { log.info("请求接口[GET]: /project/get"); - return projectService.get(); + return projectService.get(listAll,request,tags,isFinish); } /** * 单个项目的详细 + * 项目轮播图 * * @param name * @return @@ -62,6 +69,7 @@ public class ProjectController { /** * 增加项目展示 + * 项目轮播图 * * @param projectShowVO * @param request @@ -81,6 +89,7 @@ public class ProjectController { /** * 编辑展示的项目 + * 项目轮播图 * * @param projectShowVO * @param id @@ -106,6 +115,7 @@ public class ProjectController { /** * 删除项目展示 + * 项目轮播图 * * @param id * @param request diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 0ec8691..be19ea8 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -105,10 +105,20 @@ public class ProjectDAO { return projectMapper.setProjectShow(setProjectShow); } - public List get() { + public List get(Long userId,Integer listAll,List tags,Integer isFinish) { log.info("\t> 执行 DAO 层 ProjectDAO.get 方法"); log.info("\t\t> 从 MySQL 获取数据"); - return projectMapper.get(); + if(isFinish != null){ + return projectMapper.getByIsfinish(isFinish); + } + if(tags != null && !tags.isEmpty()){ + return projectMapper.getByTags(tags); + } + if(listAll == 0) { + return projectMapper.get(userId); + }else { + return projectMapper.get1(userId); + } } public ProjectDO getByName(String name) { diff --git a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index cb423f8..4453bf9 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -5,6 +5,7 @@ import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.ProjectUserDO; import com.jsl.oa.model.voData.ProjectInfoVO; import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -12,8 +13,10 @@ import java.util.List; public interface ProjectMapper { @Insert("insert into organize_oa.oa_project " + - "(name, description, introduction, core_code, git,type, reward) " + - "value (#{name},#{description},#{introduction},#{coreCode},#{git},#{type},#{reward})") + "(name, description, principal_id, cycle,file,complete_time," + + "deadline,status,is_finish) " + + "value (#{name},#{description},#{principalId},#{cycle},#{file}" + + ",#{completeTime},#{deadline},#{status},#{isFinish})") void projectAdd(ProjectInfoVO projectAdd); @@ -22,11 +25,11 @@ public interface ProjectMapper { @Select("select * from organize_oa.oa_project where id=#{id}") ProjectDO getProjectById(Long id); - @Select("select * from organize_oa.oa_project_cutting where id in" + - "(select pid from organize_oa.oa_project_user where uid=#{uid})") + @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("insert into organize_oa.oa_project_user(uid, pid)value (#{uid},#{pid})") + @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'") @@ -38,8 +41,18 @@ public interface ProjectMapper { @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_permissions") - List get(); + //@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") + ListgetByIsfinish(Integer isFinish); + + ListgetByTags(List tags); + + @Select("select * from organize_oa.oa_project where is_delete=false and status =1") + List get(Long userId); + + @Select("select * from organize_oa.oa_project where status =1 and status=1") + List get1(Long userId); @Select("select * from organize_oa.oa_project where name=#{name}") ProjectDO getByName(String name); 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 8d723f9..3642285 100755 --- a/src/main/java/com/jsl/oa/model/doData/ProjectCuttingDO.java +++ b/src/main/java/com/jsl/oa/model/doData/ProjectCuttingDO.java @@ -20,12 +20,17 @@ import java.sql.Timestamp; @JsonInclude(JsonInclude.Include.NON_NULL) public class ProjectCuttingDO { private Long id; + private Long principalId; + private Long projectId; private Long pid; + private Long workLoad; + private Long cycle; private String name; - private String tag; - private Short engineering; - private Integer estimatedTime; - private Integer realTime; - private Timestamp createdAt; - private Timestamp updatedAt; + private String description; + private Integer is_delete; + private Integer is_finish; + private Integer status; + private boolean type; + private Timestamp beginTime; + private Timestamp completeTime; } 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 f9d383e..6f494d6 100755 --- a/src/main/java/com/jsl/oa/model/doData/ProjectDO.java +++ b/src/main/java/com/jsl/oa/model/doData/ProjectDO.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; import lombok.experimental.Accessors; +import java.sql.Timestamp; + /** *

project 数据表

*
@@ -18,14 +20,16 @@ import lombok.experimental.Accessors; @JsonInclude(JsonInclude.Include.NON_NULL) public class ProjectDO { private Long id; + private Long principalId; + private String tags; + private Long cycle; private String name; + private String file; private String description; - private String introduction; - private Short codeOpen; - private String coreCode; - private String git; - private Short difficultyLevel; - private Integer type; - private Long reward; - private Short status; + private Integer is_delete; + private Integer is_finish; + private boolean status; + private Timestamp beginTime; + private Timestamp completeTime; + private Timestamp deadline; } 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 1bc32e9..d66c177 100644 --- a/src/main/java/com/jsl/oa/model/voData/ProjectInfoVO.java +++ b/src/main/java/com/jsl/oa/model/voData/ProjectInfoVO.java @@ -4,36 +4,23 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.sql.Timestamp; @Data public class ProjectInfoVO { - @NotNull(message = "id不能为空") + private Long id; - - @NotBlank(message = "项目名不为空") + @NotNull(message = "负责人id不能为空") + private Long principalId; + @NotBlank(message = "项目名不能为空") private String name; - - @NotBlank(message = "简介不能为空") private String description; + @NotNull(message = "周期不能为空") + private Long cycle; + private String file; + private Timestamp completeTime; + private Timestamp deadline; + private Integer status; + private Integer isFinish; - @NotBlank(message = "描述不能为空") - private String introduction; - - //@NotNull(message = "填写是否开放") - private Short codeOpen; - - private String coreCode; - - private String git; - - //@NotNull(message = "难度等级不能为空") - private Short difficultyLevel; - - @NotNull(message = "项目类型不能为空") - private Integer type; - - private Long reward; - - //@NotNull(message = "项目状态不能为空") - private Short status; } diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 17e5f69..ed29493 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -7,6 +7,7 @@ import com.jsl.oa.model.voData.business.info.ProjectShowVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; +import java.util.List; public interface ProjectService { BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd); @@ -25,7 +26,7 @@ public interface ProjectService { BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); - BaseResponse get(); + BaseResponse get(Integer listAll, HttpServletRequest request, List tags, Integer isFinish); BaseResponse getByName(String name); 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 c2aee5f..9a914ea 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -3,6 +3,7 @@ package com.jsl.oa.services.impl; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.UserDAO; +import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.UserDO; @@ -20,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletRequest; import java.sql.Timestamp; @@ -41,6 +43,7 @@ import java.util.List; @RequiredArgsConstructor public class ProjectServiceImpl implements ProjectService { + private final RoleMapper roleMapper; private final ProjectDAO projectDAO; private final UserDAO userDAO; @@ -181,10 +184,30 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse get() { + public BaseResponse get(Integer listAll, HttpServletRequest request, List tags, Integer isFinish) { log.info("\t> 执行 Service 层 ProjectService.get 方法"); - List projectDOList = projectDAO.get(); - return ResultUtil.success(projectDOList); + //获取用户 + Long userId= Processing.getAuthHeaderToUserId(request); + //根据状态查询 + if(isFinish != null){ + List projectDOList = projectDAO.get(userId,listAll,tags,isFinish); + return ResultUtil.success(projectDOList); + } + //根据标签查询 + if(tags != null && !tags.isEmpty()){ + List projectDOList = projectDAO.get(userId,listAll,tags,isFinish); + return ResultUtil.success(projectDOList); + } + + //判断是否是老师(项目负责人) + if(listAll != null && Processing.checkUserIsTeacher(request,roleMapper)){ + List projectDOList = projectDAO.get(userId,listAll,tags,isFinish); + return ResultUtil.success(projectDOList); + }else { + List projectDOList = projectDAO.get(userId,0,tags,isFinish); + return ResultUtil.success(projectDOList); + } + } @Override diff --git a/src/main/java/com/jsl/oa/utils/Processing.java b/src/main/java/com/jsl/oa/utils/Processing.java index 10e1e28..1e1ea50 100755 --- a/src/main/java/com/jsl/oa/utils/Processing.java +++ b/src/main/java/com/jsl/oa/utils/Processing.java @@ -177,6 +177,22 @@ public class Processing { } } + /** + * 检查用户是否是老师 + * @param request + * @param roleMapper + * @return + */ + public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) { + RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); + if (roleUserDO != null) { + RoleDO roleDO = roleMapper.getRoleByRoleName("teacher"); + return roleUserDO.getRid().equals(roleDO.getId()); + } else { + return false; + } + } + private static char getCharFromIndex(int index) { // 生成字符集合,可以根据需要自定义 String charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml index 9aa3d90..07cbe27 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml @@ -13,32 +13,47 @@ description = #{description}, - - introduction = #{introduction}, + + principal_id = #{principal_id}, - - code_open = #{codeOpen}, + + tags = #{tags}, - - core_code = #{coreCode}, + + cycle = #{cycle}, - - git = #{git}, + + file = #{file}, - - difficulty_level = #{difficultyLevel}, + + begin_time = #{begin_time}, - - type = #{type}, + + complete_time = #{complete_time}, - - reward = #{reward}, + + deadline = #{deadline}, status = #{status}, + + is_finish = #{is_finish}, + + + is_delete = #{is_delete}, + where id = #{id} + + \ No newline at end of file