Compare commits

..

No commits in common. "96fdab94f74666d7442bf0e981e8257d292423f7" and "88ed6e0ca92b964698584901303342833157640f" have entirely different histories.

11 changed files with 70 additions and 156 deletions

2
.gitignore vendored
View File

@ -35,5 +35,3 @@ build/
### 自定义 ### ### 自定义 ###
*.pdf *.pdf
/src/main/resources/application-dev.yml /src/main/resources/application-dev.yml
**/.DS_Store
/logs

View File

@ -17,8 +17,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
@Slf4j @Slf4j
@RestController @RestController
@ -29,7 +27,6 @@ public class ProjectController {
/** /**
* 项目展示获取 * 项目展示获取
* 项目轮播图
* *
* @param id * @param id
* @return * @return
@ -46,17 +43,13 @@ public class ProjectController {
* @return * @return
*/ */
@GetMapping("/project/get") @GetMapping("/project/get")
public BaseResponse projectGet(@RequestParam(required = false) Integer listAll, public BaseResponse projectGet() {
@RequestParam(required = false) List<String> tags,
@RequestParam(required = false) Integer isFinish,
HttpServletRequest request) {
log.info("请求接口[GET]: /project/get"); log.info("请求接口[GET]: /project/get");
return projectService.get(listAll,request,tags,isFinish); return projectService.get();
} }
/** /**
* 单个项目的详细 * 单个项目的详细
* 项目轮播图
* *
* @param name * @param name
* @return * @return
@ -69,7 +62,6 @@ public class ProjectController {
/** /**
* 增加项目展示 * 增加项目展示
* 项目轮播图
* *
* @param projectShowVO * @param projectShowVO
* @param request * @param request
@ -89,7 +81,6 @@ public class ProjectController {
/** /**
* 编辑展示的项目 * 编辑展示的项目
* 项目轮播图
* *
* @param projectShowVO * @param projectShowVO
* @param id * @param id
@ -115,7 +106,6 @@ public class ProjectController {
/** /**
* 删除项目展示 * 删除项目展示
* 项目轮播图
* *
* @param id * @param id
* @param request * @param request

View File

@ -105,20 +105,10 @@ public class ProjectDAO {
return projectMapper.setProjectShow(setProjectShow); return projectMapper.setProjectShow(setProjectShow);
} }
public List<ProjectDO> get(Long userId,Integer listAll,List<String> tags,Integer isFinish) { public List<ProjectDO> get() {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
if(isFinish != null){ return projectMapper.get();
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) { public ProjectDO getByName(String name) {

View File

@ -5,7 +5,6 @@ import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.ProjectUserDO; import com.jsl.oa.model.doData.ProjectUserDO;
import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectInfoVO;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -13,10 +12,8 @@ import java.util.List;
public interface ProjectMapper { public interface ProjectMapper {
@Insert("insert into organize_oa.oa_project " + @Insert("insert into organize_oa.oa_project " +
"(name, description, principal_id, cycle,file,complete_time," + "(name, description, introduction, core_code, git,type, reward) " +
"deadline,status,is_finish) " + "value (#{name},#{description},#{introduction},#{coreCode},#{git},#{type},#{reward})")
"value (#{name},#{description},#{principalId},#{cycle},#{file}" +
",#{completeTime},#{deadline},#{status},#{isFinish})")
void projectAdd(ProjectInfoVO projectAdd); void projectAdd(ProjectInfoVO projectAdd);
@ -25,11 +22,11 @@ public interface ProjectMapper {
@Select("select * from organize_oa.oa_project where id=#{id}") @Select("select * from organize_oa.oa_project where id=#{id}")
ProjectDO getProjectById(Long id); ProjectDO getProjectById(Long id);
@Select("select * from organize_oa.oa_project_work where principal_id=#{uid}") @Select("select * from organize_oa.oa_project_cutting where id in" +
//"(select id from organize_oa.oa_project_work where id in)") "(select pid from organize_oa.oa_project_user where uid=#{uid})")
List<ProjectCuttingDO> projectGetUserInCutting(Long uid); List<ProjectCuttingDO> projectGetUserInCutting(Long uid);
@Insert("update organize_oa.oa_project_work set principal_id =#{uid} where id=#{pid}") @Insert("insert into organize_oa.oa_project_user(uid, pid)value (#{uid},#{pid})")
void projectAddUserInCutting(Long uid, Long pid); void projectAddUserInCutting(Long uid, Long pid);
@Select("select data from organize_oa.oa_config where value='project_show'") @Select("select data from organize_oa.oa_config where value='project_show'")
@ -41,18 +38,8 @@ public interface ProjectMapper {
@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); boolean setProjectShow(String setProjectShow);
//@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" + @Select("select * from organize_oa.oa_permissions")
//"like concat('%',#{tags},'%')") List<ProjectDO> get();
@Select("select * from organize_oa.oa_project where is_finish=#{isFinish} and is_delete=false")
List<ProjectDO>getByIsfinish(Integer isFinish);
List<ProjectDO>getByTags(List<String> tags);
@Select("select * from organize_oa.oa_project where is_delete=false and status =1")
List<ProjectDO> get(Long userId);
@Select("select * from organize_oa.oa_project where status =1 and status=1")
List<ProjectDO> get1(Long userId);
@Select("select * from organize_oa.oa_project where name=#{name}") @Select("select * from organize_oa.oa_project where name=#{name}")
ProjectDO getByName(String name); ProjectDO getByName(String name);

View File

@ -20,17 +20,12 @@ import java.sql.Timestamp;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class ProjectCuttingDO { public class ProjectCuttingDO {
private Long id; private Long id;
private Long principalId;
private Long projectId;
private Long pid; private Long pid;
private Long workLoad;
private Long cycle;
private String name; private String name;
private String description; private String tag;
private Integer is_delete; private Short engineering;
private Integer is_finish; private Integer estimatedTime;
private Integer status; private Integer realTime;
private boolean type; private Timestamp createdAt;
private Timestamp beginTime; private Timestamp updatedAt;
private Timestamp completeTime;
} }

View File

@ -4,8 +4,6 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.sql.Timestamp;
/** /**
* <h1>project 数据表</h1> * <h1>project 数据表</h1>
* <hr/> * <hr/>
@ -20,16 +18,14 @@ import java.sql.Timestamp;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class ProjectDO { public class ProjectDO {
private Long id; private Long id;
private Long principalId;
private String tags;
private Long cycle;
private String name; private String name;
private String file;
private String description; private String description;
private Integer is_delete; private String introduction;
private Integer is_finish; private Short codeOpen;
private boolean status; private String coreCode;
private Timestamp beginTime; private String git;
private Timestamp completeTime; private Short difficultyLevel;
private Timestamp deadline; private Integer type;
private Long reward;
private Short status;
} }

View File

@ -4,23 +4,36 @@ import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
@Data @Data
public class ProjectInfoVO { public class ProjectInfoVO {
@NotNull(message = "id不能为空")
private Long id; private Long id;
@NotNull(message = "负责人id不能为空")
private Long principalId;
@NotBlank(message = "项目名不能为空")
private String name;
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 name;
@NotBlank(message = "简介不能为空")
private String description;
@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;
} }

View File

@ -7,7 +7,6 @@ import com.jsl.oa.model.voData.business.info.ProjectShowVO;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface ProjectService { public interface ProjectService {
BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd); BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd);
@ -26,7 +25,7 @@ public interface ProjectService {
BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id);
BaseResponse get(Integer listAll, HttpServletRequest request, List<String> tags, Integer isFinish); BaseResponse get();
BaseResponse getByName(String name); BaseResponse getByName(String name);

View File

@ -3,7 +3,6 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.UserDAO; 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.ProjectCuttingDO;
import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.ProjectDO;
import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.UserDO;
@ -21,7 +20,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp; import java.sql.Timestamp;
@ -43,7 +41,6 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectServiceImpl implements ProjectService { public class ProjectServiceImpl implements ProjectService {
private final RoleMapper roleMapper;
private final ProjectDAO projectDAO; private final ProjectDAO projectDAO;
private final UserDAO userDAO; private final UserDAO userDAO;
@ -184,30 +181,10 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public BaseResponse get(Integer listAll, HttpServletRequest request, List<String> tags, Integer isFinish) { public BaseResponse get() {
log.info("\t> 执行 Service 层 ProjectService.get 方法"); log.info("\t> 执行 Service 层 ProjectService.get 方法");
//获取用户 List<ProjectDO> projectDOList = projectDAO.get();
Long userId= Processing.getAuthHeaderToUserId(request); return ResultUtil.success(projectDOList);
//根据状态查询
if(isFinish != null){
List<ProjectDO> projectDOList = projectDAO.get(userId,listAll,tags,isFinish);
return ResultUtil.success(projectDOList);
}
//根据标签查询
if(tags != null && !tags.isEmpty()){
List<ProjectDO> projectDOList = projectDAO.get(userId,listAll,tags,isFinish);
return ResultUtil.success(projectDOList);
}
//判断是否是老师(项目负责人)
if(listAll != null && Processing.checkUserIsTeacher(request,roleMapper)){
List<ProjectDO> projectDOList = projectDAO.get(userId,listAll,tags,isFinish);
return ResultUtil.success(projectDOList);
}else {
List<ProjectDO> projectDOList = projectDAO.get(userId,0,tags,isFinish);
return ResultUtil.success(projectDOList);
}
} }
@Override @Override

View File

@ -177,22 +177,6 @@ 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) { private static char getCharFromIndex(int index) {
// 生成字符集合可以根据需要自定义 // 生成字符集合可以根据需要自定义
String charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; String charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

View File

@ -13,47 +13,32 @@
<if test="description != null and description != ''"> <if test="description != null and description != ''">
description = #{description}, description = #{description},
</if> </if>
<if test="principal_id != null and principal_id != ''"> <if test="introduction != null and introduction != ''">
principal_id = #{principal_id}, introduction = #{introduction},
</if> </if>
<if test="tags != null and tags != ''"> <if test="codeOpen != null and codeOpen != ''">
tags = #{tags}, code_open = #{codeOpen},
</if> </if>
<if test="cycle != null and cycle != ''"> <if test="coreCode != null and coreCode != ''">
cycle = #{cycle}, core_code = #{coreCode},
</if> </if>
<if test="file != null and file != ''"> <if test="git != null and git != ''">
file = #{file}, git = #{git},
</if> </if>
<if test="begin_time != null and begin_time != ''"> <if test="difficultyLevel != null and difficultyLevel != ''">
begin_time = #{begin_time}, difficulty_level = #{difficultyLevel},
</if> </if>
<if test="complete_time != null and complete_time != ''"> <if test="type != null and type != ''">
complete_time = #{complete_time}, type = #{type},
</if> </if>
<if test="deadline != null and deadline != ''"> <if test="reward != null and reward != ''">
deadline = #{deadline}, reward = #{reward},
</if> </if>
<if test="status != null and status != ''"> <if test="status != null and status != ''">
status = #{status}, status = #{status},
</if> </if>
<if test="is_finish != null and is_finish != ''">
is_finish = #{is_finish},
</if>
<if test="is_delete != null and is_delete != ''">
is_delete = #{is_delete},
</if>
</set> </set>
where id = #{id} where id = #{id}
</update> </update>
<select id="getByTags" resultType="com.jsl.oa.model.doData.ProjectDO">
select * from organize_oa.oa_project where
<foreach collection="tags" item="tag" separator=",'%') and json_extract(tags,'$.tags')like concat('%',"
open="json_extract(tags,'$.tags')like concat('%',"
close=",'%') and is_delete=false">
#{tag}
</foreach>
</select>
</mapper> </mapper>