From d62b516f7e48b10bbf71ad42449db1df0cdfd6ee Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Wed, 25 Aug 2021 15:35:08 +0800 Subject: [PATCH] =?UTF-8?q?common-=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9D=83=E9=99=90=20signin-=E8=AE=BE=E7=BD=AE=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=88=B6=E5=AD=90=E7=BB=93=E6=9E=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?/=E8=AE=BE=E7=BD=AE=E9=A1=B9=E7=9B=AE=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/common/bean/dto/CProjectDto.java | 11 +++ .../ccsens/common/service/IPowerService.java | 17 ++++ .../ccsens/common/service/PowerService.java | 33 ++++++++ .../ccsens/common/service/TaskService.java | 2 +- pom.xml | 2 +- .../ccsens/signin/api/ProjectController.java | 16 ++++ .../ccsens/signin/bean/dto/ProjectDto.java | 39 +++++++++ .../ccsens/signin/bean/po/SysUserProject.java | 11 +++ .../signin/bean/po/SysUserProjectExample.java | 60 ++++++++++++++ .../com/ccsens/signin/bean/vo/ProjectVo.java | 4 + .../ccsens/signin/config/SpringConfig.java | 26 +++--- .../signin/config/TokenInterceptor.java | 80 +++++++++++++++++++ .../ccsens/signin/persist/dao/ProjectDao.java | 23 ++++++ .../signin/service/IProjectService.java | 14 ++++ .../ccsens/signin/service/ProjectService.java | 70 ++++++++++++++++ .../com/ccsens/signin/util/TallConstant.java | 3 + signin/src/main/resources/application-dev.yml | 3 +- .../src/main/resources/application-prod.yml | 3 +- .../src/main/resources/application-test.yml | 2 +- .../main/resources/mapper_dao/ProjectDap.xml | 55 +++++++++++++ .../mapper_raw/SysUserProjectMapper.xml | 29 +++++-- .../main/java/com/ccsens/util/CodeEnum.java | 3 + .../main/java/com/ccsens/util/PropUtil.java | 6 ++ .../ccsens/util/notice/NoticePropUtil.java | 2 +- 24 files changed, 488 insertions(+), 26 deletions(-) create mode 100644 common/src/main/java/com/ccsens/common/service/IPowerService.java create mode 100644 common/src/main/java/com/ccsens/common/service/PowerService.java create mode 100644 signin/src/main/java/com/ccsens/signin/config/TokenInterceptor.java diff --git a/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java b/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java index 4dc31b4d..5063c1ab 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java +++ b/common/src/main/java/com/ccsens/common/bean/dto/CProjectDto.java @@ -56,4 +56,15 @@ public class CProjectDto { @ApiModelProperty("项目id") private Long projectId; } + + @Data + @ApiModel("查询用户在项目内的权限") + public static class QueryPower { + @NotNull(message = "请选择项目") + @ApiModelProperty("项目id") + private Long projectId; + @NotNull(message = "userId不能为空") + @ApiModelProperty("userId") + private Long userId; + } } diff --git a/common/src/main/java/com/ccsens/common/service/IPowerService.java b/common/src/main/java/com/ccsens/common/service/IPowerService.java new file mode 100644 index 00000000..3e54c9b9 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/IPowerService.java @@ -0,0 +1,17 @@ +package com.ccsens.common.service; + +import com.ccsens.common.bean.dto.CProjectDto; +import com.ccsens.util.bean.dto.QueryDto; + +/** + * @author AUSU + */ +public interface IPowerService { + /** + * 查询项目内的权限 + * @param projectId 项目id + * @param userId 用户id + * @return 权限 + */ + Integer queryUserPower(Long projectId,Long userId); +} diff --git a/common/src/main/java/com/ccsens/common/service/PowerService.java b/common/src/main/java/com/ccsens/common/service/PowerService.java new file mode 100644 index 00000000..8d6d39c4 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/service/PowerService.java @@ -0,0 +1,33 @@ +package com.ccsens.common.service; + +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.common.bean.dto.CProjectDto; +import com.ccsens.common.persist.dao.ProRoleDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + * @author AUSU + */ +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +public class PowerService implements IPowerService{ + + @Resource + private ProRoleDao roleDao; + + + @Override + public Integer queryUserPower(Long projectId, Long userId) { + Integer power = roleDao.isPmByUserId(userId, projectId); + if (ObjectUtil.isNull(power)) { + return 0; + } + return power; + } +} diff --git a/common/src/main/java/com/ccsens/common/service/TaskService.java b/common/src/main/java/com/ccsens/common/service/TaskService.java index 206b0a9c..df024aba 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -328,7 +328,7 @@ public class TaskService implements ITaskService { //验证是否是任务负责人 Integer executor = roleDao.isExecutorByUserId(userId, proTaskSub.getTaskDetailId()); //只有负责人或者是项目经理才能操作任务的状态 - if (pm < 2 && executor == 0) { + if (pm < 1 && executor == 0) { throw new BaseException(CommonCodeError.NOT_PERMISSION); } //获取当前时间 diff --git a/pom.xml b/pom.xml index 38547f11..7a58dae1 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ cloudutil util - + tall diff --git a/signin/src/main/java/com/ccsens/signin/api/ProjectController.java b/signin/src/main/java/com/ccsens/signin/api/ProjectController.java index c4a045f3..cdd68988 100644 --- a/signin/src/main/java/com/ccsens/signin/api/ProjectController.java +++ b/signin/src/main/java/com/ccsens/signin/api/ProjectController.java @@ -50,4 +50,20 @@ public class ProjectController { List projectById = projectService.haveProjectDay(params.getParam(), params.getUserId()); return JsonResponse.newInstance().ok(projectById); } + + @MustLogin + @ApiOperation(value = "设置项目父子结构", notes = "设置项目父子结构") + @RequestMapping(value = "/setProjectRelation", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse setProjectRelation(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + projectService.setProjectRelation(params.getParam(), params.getUserId()); + return JsonResponse.newInstance().ok(); + } + + @MustLogin + @ApiOperation(value = "设置项目顺序", notes = "设置项目顺序") + @RequestMapping(value = "/setProjectSort", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse setProjectSort(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + projectService.setProjectSort(params.getParam(), params.getUserId()); + return JsonResponse.newInstance().ok(); + } } diff --git a/signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java b/signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java index a821648a..89abbd9b 100644 --- a/signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java +++ b/signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.util.List; import java.util.Set; @@ -48,4 +49,42 @@ public class ProjectDto { @ApiModelProperty("结束时间") private Long endTime = 1627632296000L; } + + + @Data + @ApiModel("设置项目父子结构") + public static class SetProjectRelation { + @ApiModelProperty("当前移动的项目的id") + private Long id; + @ApiModelProperty("父项目的id") + private Long parentId; + } + + @Data + @ApiModel("查询业务权限") + public static class QueryPower { + @NotNull(message = "被移动的项目id不能为空") + @ApiModelProperty("当前移动的项目的id") + private Long projectId; + @NotNull(message = "项目id不能为空") + @ApiModelProperty("用户id") + private Long userId; + } + + + @Data + @ApiModel("设置项目顺序") + public class SetProjectSort { + @NotNull(message = "被移动的项目id不能为空") + @ApiModelProperty("项目id") + private List projectIdList; + } + @Data + @ApiModel("项目id与顺序") + public static class ProjectAndSort{ + @ApiModelProperty("项目id") + private Long projectId; + @ApiModelProperty("顺序") + private Integer sort; + } } diff --git a/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProject.java b/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProject.java index 89da8221..72869c65 100644 --- a/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProject.java +++ b/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProject.java @@ -16,6 +16,8 @@ public class SysUserProject implements Serializable { private Byte recStatus; + private Integer sort; + private static final long serialVersionUID = 1L; public Long getId() { @@ -66,6 +68,14 @@ public class SysUserProject implements Serializable { this.recStatus = recStatus; } + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -78,6 +88,7 @@ public class SysUserProject implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", sort=").append(sort); sb.append("]"); return sb.toString(); } diff --git a/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProjectExample.java b/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProjectExample.java index dead9220..bbd2940e 100644 --- a/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProjectExample.java +++ b/signin/src/main/java/com/ccsens/signin/bean/po/SysUserProjectExample.java @@ -464,6 +464,66 @@ public class SysUserProjectExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(Integer value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(Integer value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(Integer value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(Integer value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(Integer value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(Integer value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(Integer value1, Integer value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(Integer value1, Integer value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/signin/src/main/java/com/ccsens/signin/bean/vo/ProjectVo.java b/signin/src/main/java/com/ccsens/signin/bean/vo/ProjectVo.java index e9bf14ba..7006f8bc 100644 --- a/signin/src/main/java/com/ccsens/signin/bean/vo/ProjectVo.java +++ b/signin/src/main/java/com/ccsens/signin/bean/vo/ProjectVo.java @@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * @author 逗 */ @@ -26,6 +28,8 @@ public class ProjectVo { private byte status; @ApiModelProperty("访问路径)") private String url; + @ApiModelProperty("子项目") + private List sonProjectList; public Byte getStatus() { long current = System.currentTimeMillis(); diff --git a/signin/src/main/java/com/ccsens/signin/config/SpringConfig.java b/signin/src/main/java/com/ccsens/signin/config/SpringConfig.java index 32352642..b5219b97 100644 --- a/signin/src/main/java/com/ccsens/signin/config/SpringConfig.java +++ b/signin/src/main/java/com/ccsens/signin/config/SpringConfig.java @@ -128,17 +128,17 @@ public class SpringConfig implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { //addPathPatterns 用于添加拦截规则 //excludePathPatterns 用于排除拦截 -// registry.addInterceptor(tokenInterceptor()) + registry.addInterceptor(tokenInterceptor()) // .addPathPatterns("/projects/**") // .addPathPatterns("/messages/**") -// .addPathPatterns("/users/**") -// .excludePathPatterns("/users/signin") -// .excludePathPatterns("/users/smscode") -// .excludePathPatterns("/users/signup") -// .excludePathPatterns("/users/password") -// .excludePathPatterns("/users/account") -// .excludePathPatterns("/users/token") -// .excludePathPatterns("/users/claims") + .addPathPatterns("/users/**") + .excludePathPatterns("/users/signin") + .excludePathPatterns("/users/smscode") + .excludePathPatterns("/users/signup") + .excludePathPatterns("/users/password") + .excludePathPatterns("/users/account") + .excludePathPatterns("/users/token") + .excludePathPatterns("/users/claims"); // .addPathPatterns("/plugins/**") // .addPathPatterns("/delivers/**") // .addPathPatterns("/tasks/**") @@ -148,10 +148,10 @@ public class SpringConfig implements WebMvcConfigurer { //super.addInterceptors(registry); } // -// @Bean -// public TokenInterceptor tokenInterceptor(){ -// return new TokenInterceptor(); -// } + @Bean + public TokenInterceptor tokenInterceptor(){ + return new TokenInterceptor(); + } /** * 配置数据源(单数据源) diff --git a/signin/src/main/java/com/ccsens/signin/config/TokenInterceptor.java b/signin/src/main/java/com/ccsens/signin/config/TokenInterceptor.java new file mode 100644 index 00000000..02f2a0d6 --- /dev/null +++ b/signin/src/main/java/com/ccsens/signin/config/TokenInterceptor.java @@ -0,0 +1,80 @@ +package com.ccsens.signin.config; + +import com.ccsens.signin.bean.po.SysUser; +import com.ccsens.signin.service.IUserService; +import com.ccsens.signin.service.IUserService; +import com.ccsens.util.*; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.SignatureException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class TokenInterceptor implements HandlerInterceptor { + @Autowired + private IUserService userService; + + @Override + public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { + // 验证token是否存在 + final String authHeader = httpServletRequest.getHeader(WebConstant.HEADER_KEY_TOKEN); + if (authHeader == null || !authHeader.startsWith(WebConstant.HEADER_KEY_TOKEN_PREFIX)) { + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().tokenNotFound())); + return false; + } + final String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length()); + + //验证token是否有效 + Claims claims = null; + try { + claims = JwtUtil.parseJWT(token, WebConstant.JWT_ACCESS_TOKEN_SECERT); + }catch(SignatureException e){ + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().tokenSignatureFail(e.getMessage()))); + return false; + }catch(ExpiredJwtException e){ + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().tokenExpire(e.getMessage()))); + return false; + }catch(Exception e){ + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().tokenFailed(e.getMessage()))); + return false; + } + + //验证用户存根 + if(userService.tokenNotExistInCache(Long.valueOf(claims.getSubject()))){ + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().tokenStubNotFound())); + return false; + } + + + //验证用户是否禁用 + SysUser user = userService.getUserById(Long.valueOf(claims.getSubject())); + if(user.getRecStatus() == WebConstant.REC_STATUS.Disabled.value){ + HttpServletUtil.responseJson(httpServletResponse, + JacksonUtil.beanToJson(JsonResponse.newInstance().userDisabled())); + return false; + } + + //在request中存放claims + httpServletRequest.setAttribute(WebConstant.REQUEST_KEY_CLAIMS,claims); + return true; + } + + @Override + public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + + } + + @Override + public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { + + } +} diff --git a/signin/src/main/java/com/ccsens/signin/persist/dao/ProjectDao.java b/signin/src/main/java/com/ccsens/signin/persist/dao/ProjectDao.java index 66a7c34c..6debecd3 100644 --- a/signin/src/main/java/com/ccsens/signin/persist/dao/ProjectDao.java +++ b/signin/src/main/java/com/ccsens/signin/persist/dao/ProjectDao.java @@ -1,5 +1,7 @@ package com.ccsens.signin.persist.dao; +import com.ccsens.signin.bean.dto.ProjectDto; +import com.ccsens.signin.bean.po.SysProjectList; import com.ccsens.signin.bean.vo.ProjectVo; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -12,4 +14,25 @@ import java.util.List; @Repository public interface ProjectDao { List queryProjectList(@Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("userId") Long userId); + + /** + * 查询子项目 + * @param id 项目id + * @return 子项目列表 + */ + List querySonProject(@Param("id") Long id); + + /** + * 根据项目id 批量查询 + * @param projectIdList 项目id列表 + * @return 父子项目 + */ + List batchQueryProjectById(@Param("projectIdList") List projectIdList); + + /** + * 根据项目id查找项目列表 + * @param id 项目id + * @return 项目信息 + */ + SysProjectList selectByProjectId(@Param("id") Long id); } diff --git a/signin/src/main/java/com/ccsens/signin/service/IProjectService.java b/signin/src/main/java/com/ccsens/signin/service/IProjectService.java index 515546f5..8b441700 100644 --- a/signin/src/main/java/com/ccsens/signin/service/IProjectService.java +++ b/signin/src/main/java/com/ccsens/signin/service/IProjectService.java @@ -19,4 +19,18 @@ public interface IProjectService { * @return 是否有小红点 */ List haveProjectDay(ProjectDto.QueryHaveProject param, Long userId); + + /** + * 设置项目父子关系 + * @param param 移动的项目id和父项目id + * @param userId 当前用户id + */ + void setProjectRelation(ProjectDto.SetProjectRelation param, Long userId); + + /** + * 设置项目顺序 + * @param param 项目id + * @param userId 用户id + */ + void setProjectSort(ProjectDto.SetProjectSort param, Long userId); } diff --git a/signin/src/main/java/com/ccsens/signin/service/ProjectService.java b/signin/src/main/java/com/ccsens/signin/service/ProjectService.java index 9247054e..45c11bd3 100644 --- a/signin/src/main/java/com/ccsens/signin/service/ProjectService.java +++ b/signin/src/main/java/com/ccsens/signin/service/ProjectService.java @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; import com.ccsens.signin.bean.dto.ProjectDto; import com.ccsens.signin.bean.po.SysProjectList; import com.ccsens.signin.bean.po.SysProjectListExample; @@ -13,6 +15,10 @@ import com.ccsens.signin.bean.vo.ProjectVo; import com.ccsens.signin.persist.dao.ProjectDao; import com.ccsens.signin.persist.mapper.SysProjectListMapper; import com.ccsens.signin.persist.mapper.SysUserProjectMapper; +import com.ccsens.signin.util.TallConstant; +import com.ccsens.util.*; +import com.ccsens.util.bean.dto.QueryDto; +import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -41,6 +47,16 @@ public class ProjectService implements IProjectService{ @Override public List queryProjectList(ProjectDto.QueryProjectDto param, Long userId) { + List projectList = projectDao.queryProjectList(param.getStartTime(), param.getEndTime(), userId); + //查询子项目 + if (CollectionUtil.isNotEmpty(projectList)){ + for (ProjectVo.QueryProject project : projectList) { + List sonProjectList = projectDao.querySonProject(project.getId()); + if (CollectionUtil.isNotEmpty(sonProjectList)){ + project.setSonProjectList(sonProjectList); + } + } + } return projectDao.queryProjectList(param.getStartTime(),param.getEndTime(),userId); } @@ -167,4 +183,58 @@ public class ProjectService implements IProjectService{ return haveProject; } + @Override + public void setProjectRelation(ProjectDto.SetProjectRelation param, Long userId) { + SysProjectList sonProject = projectDao.selectByProjectId(param.getId()); + if (ObjectUtil.isNull(sonProject)){ + throw new BaseException(CodeEnum.NOT_PROJECT); + } + SysProjectList parentProject = projectDao.selectByProjectId(param.getParentId()); + if (ObjectUtil.isNull(parentProject)) { + throw new BaseException(CodeEnum.NOT_PROJECT); + } + String sonUrl = sonProject.getUrl().substring(sonProject.getUrl().lastIndexOf(TallConstant.GATEWAY) + 7); + String parentUrl = parentProject.getUrl().substring(parentProject.getUrl().lastIndexOf(TallConstant.GATEWAY) + 7); + if (!sonUrl.equals(parentUrl)){ + throw new BaseException(CodeEnum.PROJECT_REGION_NO_SAME); + } + String httpUrl = "http://localhost:7230/v3.0"+PropUtil.queryPowerAddress; + ProjectDto.QueryPower queryPower = new ProjectDto.QueryPower(); + queryPower.setProjectId(param.getId()); + queryPower.setUserId(userId); + String postBody = RestTemplateUtil.postBody(httpUrl, queryPower); + JSONObject jsonObject = JSONObject.parseObject(postBody); + Integer power = jsonObject.getInteger("data"); + if (power < 1) { + throw new BaseException(CodeEnum.NO_POWER); + } + + //修改父子项目结构 + SysProjectListExample projectListExample = new SysProjectListExample(); + projectListExample.createCriteria().andProjectIdEqualTo(param.getId()); + SysProjectList sysProjectList = new SysProjectList(); + sysProjectList.setParentProjectId(param.getParentId()); + projectListMapper.updateByExampleSelective(sysProjectList,projectListExample); + } + + + @Override + public void setProjectSort(ProjectDto.SetProjectSort param, Long userId) { + List sortList = new ArrayList<>(); + for (int i = 0; i < param.getProjectIdList().size(); i++) { + ProjectDto.ProjectAndSort projectAndSort = new ProjectDto.ProjectAndSort(); + projectAndSort.setProjectId(param.getProjectIdList().get(i)); + projectAndSort.setSort(i); + sortList.add(projectAndSort); + } + //修改数据库中的顺序 + for (ProjectDto.ProjectAndSort projectAndSort : sortList) { + SysUserProjectExample userProjectExample = new SysUserProjectExample(); + userProjectExample.createCriteria().andProjectIdEqualTo(projectAndSort.getProjectId()).andUserIdEqualTo(userId); + SysUserProject userProject = new SysUserProject(); + userProject.setSort(projectAndSort.getSort()); + userProjectMapper.updateByExampleSelective(userProject,userProjectExample); + } + } + } diff --git a/signin/src/main/java/com/ccsens/signin/util/TallConstant.java b/signin/src/main/java/com/ccsens/signin/util/TallConstant.java index 1f45eb74..18c38d00 100644 --- a/signin/src/main/java/com/ccsens/signin/util/TallConstant.java +++ b/signin/src/main/java/com/ccsens/signin/util/TallConstant.java @@ -52,4 +52,7 @@ public class TallConstant { /**自定义*/ public static final byte REMIND_TASK_USER_DEFINED = 7; } + + /*** 截取项目url的标志 */ + public static final String GATEWAY = "gateway"; } diff --git a/signin/src/main/resources/application-dev.yml b/signin/src/main/resources/application-dev.yml index 0cfb0faf..366afb21 100644 --- a/signin/src/main/resources/application-dev.yml +++ b/signin/src/main/resources/application-dev.yml @@ -56,4 +56,5 @@ wx: file: path: /home/cloud/tall/uploads/ domain: http://localhost:7030/v1.0/ - imgDomain: http://localhost:7030/v1.0/uploads \ No newline at end of file + imgDomain: http://localhost:7030/v1.0/uploads\ + queryPowerAddress: /power/query \ No newline at end of file diff --git a/signin/src/main/resources/application-prod.yml b/signin/src/main/resources/application-prod.yml index 01990ecd..cc4c28ea 100644 --- a/signin/src/main/resources/application-prod.yml +++ b/signin/src/main/resources/application-prod.yml @@ -45,4 +45,5 @@ wx: file: path: /home/cloud/tall/uploads/ domain: https://www.tall.wiki/gateway/tall/v3.0/ - imgDomain: https://www.tall.wiki/gateway/tall/v3.0/uploads \ No newline at end of file + imgDomain: https://www.tall.wiki/gateway/tall/v3.0/uploads + queryPowerAddress: /power/query \ No newline at end of file diff --git a/signin/src/main/resources/application-test.yml b/signin/src/main/resources/application-test.yml index d7a16289..6a2ef89b 100644 --- a/signin/src/main/resources/application-test.yml +++ b/signin/src/main/resources/application-test.yml @@ -44,7 +44,7 @@ file: path: /home/cloud/tall/uploads/ domain: https://test.tall.wiki/gateway/tall/v1.0/ imgDomain: https://test.tall.wiki/gateway/tall/v1.0/uploads - + queryPowerAddress: /power/query #file: # domain: http://192.168.0.99/gateway/tall/v1.0/ # imgDomain: http://192.168.0.99/gateway/tall/v1.0/uploads \ No newline at end of file diff --git a/signin/src/main/resources/mapper_dao/ProjectDap.xml b/signin/src/main/resources/mapper_dao/ProjectDap.xml index a3f5dd39..5f8bd4cd 100644 --- a/signin/src/main/resources/mapper_dao/ProjectDap.xml +++ b/signin/src/main/resources/mapper_dao/ProjectDap.xml @@ -19,6 +19,61 @@ and p.project_start_time <= #{endTime} and p.project_end_time >= #{startTime} and up.rec_status = 0 and p.rec_status = 0 + ORDER BY up.sort + + + + + + + \ No newline at end of file diff --git a/signin/src/main/resources/mapper_raw/SysUserProjectMapper.xml b/signin/src/main/resources/mapper_raw/SysUserProjectMapper.xml index 164a54f7..86da2014 100644 --- a/signin/src/main/resources/mapper_raw/SysUserProjectMapper.xml +++ b/signin/src/main/resources/mapper_raw/SysUserProjectMapper.xml @@ -8,6 +8,7 @@ + @@ -68,7 +69,7 @@ - id, project_id, user_id, created_at, updated_at, rec_status + id, project_id, user_id, created_at, updated_at, rec_status, sort @@ -178,6 +185,9 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + sort = #{record.sort,jdbcType=INTEGER}, + @@ -190,7 +200,8 @@ user_id = #{record.userId,jdbcType=BIGINT}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + sort = #{record.sort,jdbcType=INTEGER} @@ -213,6 +224,9 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + sort = #{sort,jdbcType=INTEGER}, + where id = #{id,jdbcType=BIGINT} @@ -222,7 +236,8 @@ user_id = #{userId,jdbcType=BIGINT}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + sort = #{sort,jdbcType=INTEGER} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index 3c449481..6b765978 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -218,6 +218,9 @@ public enum CodeEnum { WISDOM_CAR_IS_EXIST(178,"平车不存在,请检查后操作",true), TASK_IS_EXIST(179,"任务不存在,请检查后操作",true), PATIENT_PROJECT_REPEAT(180,"已创建该患者的病例,请不要重复操作",true), + //TALL3 + PROJECT_REGION_NO_SAME(181,"项目域不同无法进行操作",true), + NO_POWER(182,"权限不足",true), ; diff --git a/util/src/main/java/com/ccsens/util/PropUtil.java b/util/src/main/java/com/ccsens/util/PropUtil.java index 9c68111c..6acbb898 100644 --- a/util/src/main/java/com/ccsens/util/PropUtil.java +++ b/util/src/main/java/com/ccsens/util/PropUtil.java @@ -36,6 +36,8 @@ public class PropUtil { public static String redisUpdateUrl; public static final String REDIS_UPDATE_YES = "1"; + public static String queryPowerAddress; + @Value("${spring.application.name:}") public void setApplication(String application) { PropUtil.application = application; @@ -126,4 +128,8 @@ public class PropUtil { public static void setWxH5(String wxH5) { PropUtil.wxH5 = wxH5; } + @Value("${file.queryPowerAddress:}") + public void setQueryPowerAddress(String queryPowerAddress) { + PropUtil.queryPowerAddress = queryPowerAddress; + } } diff --git a/util/src/main/java/com/ccsens/util/notice/NoticePropUtil.java b/util/src/main/java/com/ccsens/util/notice/NoticePropUtil.java index 635a5821..36979688 100644 --- a/util/src/main/java/com/ccsens/util/notice/NoticePropUtil.java +++ b/util/src/main/java/com/ccsens/util/notice/NoticePropUtil.java @@ -14,7 +14,7 @@ import org.springframework.stereotype.Component; * @author: wu huijuan * @create: 2019/10/21 10:37 */ -@PropertySource(name="noticePropUtil",value = {"classpath:notice/notice.yml"}, factory = MyPropertySourceFactory.class) +//@PropertySource(name="noticePropUtil",value = {"classpath:notice/notice.yml"}, factory = MyPropertySourceFactory.class) @Component public class NoticePropUtil { @ApiModelProperty("host")