From e2d8d04933b5ee515874de68ae87a9e88755b698 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Wed, 11 Aug 2021 11:22:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=97=A5=E5=8E=86=E5=B0=8F=E7=BA=A2=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/signin/api/ProjectController.java | 7 ++ .../ccsens/signin/bean/dto/ProjectDto.java | 9 +++ .../com/ccsens/signin/bean/vo/ProjectVo.java | 25 +++++++ .../signin/service/IProjectService.java | 8 +++ .../ccsens/signin/service/ProjectService.java | 68 ++++++++++++++++++- .../main/resources/mapper_dao/ProjectDap.xml | 2 +- 6 files changed, 117 insertions(+), 2 deletions(-) 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 7b288acf..c4a045f3 100644 --- a/signin/src/main/java/com/ccsens/signin/api/ProjectController.java +++ b/signin/src/main/java/com/ccsens/signin/api/ProjectController.java @@ -43,4 +43,11 @@ public class ProjectController { return JsonResponse.newInstance().ok(); } + @MustLogin + @ApiOperation(value = "查询日历是否有小红点", notes = "查询日历是否有小红点") + @RequestMapping(value = "/day", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> haveProjectDay(@ApiParam @Validated @RequestBody QueryDto params) throws Exception{ + List projectById = projectService.haveProjectDay(params.getParam(), params.getUserId()); + return JsonResponse.newInstance().ok(projectById); + } } 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 4222f8b5..a821648a 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 @@ -39,4 +39,13 @@ public class ProjectDto { @ApiModelProperty("用户列表") private Set userIdList; } + + @Data + @ApiModel("查询日历是否有项目") + public static class QueryHaveProject { + @ApiModelProperty("开始时间") + private Long startTime = 1625126696000L; + @ApiModelProperty("结束时间") + private Long endTime = 1627632296000L; + } } 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 0c6a1f86..e9bf14ba 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 @@ -1,5 +1,7 @@ package com.ccsens.signin.bean.vo; +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.util.WebConstant; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -24,6 +26,29 @@ public class ProjectVo { private byte status; @ApiModelProperty("访问路径)") private String url; + + public Byte getStatus() { + long current = System.currentTimeMillis(); + if(ObjectUtil.isNull(getStartTime()) || ObjectUtil.isNull(getEndTime())) { + return null; + } + if(getStartTime() > current){ + this.status = (byte) WebConstant.EVENT_PROCESS.Pending.value; + }else if(getEndTime() < current){ + this.status = (byte) WebConstant.EVENT_PROCESS.Expired.value; + }else{ + this.status = (byte) WebConstant.EVENT_PROCESS.Processing.value; + } + return this.status; + } } + @Data + @ApiModel("日历是否有项目") + public static class HaveProject { + @ApiModelProperty("时间") + private String time; + @ApiModelProperty("是否有项目(0-否,1-是)") + private Byte haveProject; + } } 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 a644ba95..515546f5 100644 --- a/signin/src/main/java/com/ccsens/signin/service/IProjectService.java +++ b/signin/src/main/java/com/ccsens/signin/service/IProjectService.java @@ -11,4 +11,12 @@ public interface IProjectService { void saveProjectList(ProjectDto.SaveProjectDto projectDto); + + /** + * 查询日历是否有小红点 + * @param param 开始/结束时间 + * @param userId 用户id + * @return 是否有小红点 + */ + List haveProjectDay(ProjectDto.QueryHaveProject 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 4620f5a5..7d9b1e3b 100644 --- a/signin/src/main/java/com/ccsens/signin/service/ProjectService.java +++ b/signin/src/main/java/com/ccsens/signin/service/ProjectService.java @@ -1,7 +1,9 @@ package com.ccsens.signin.service; 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 com.ccsens.signin.bean.dto.ProjectDto; import com.ccsens.signin.bean.po.SysProjectList; import com.ccsens.signin.bean.po.SysProjectListExample; @@ -17,7 +19,9 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** * @author 逗 @@ -99,4 +103,66 @@ public class ProjectService implements IProjectService{ } } } + + + @Override + public List haveProjectDay(ProjectDto.QueryHaveProject param, Long userId) { + //返回值 + List haveProject = new ArrayList<>(); + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date startTimeParam = new Date(param.getStartTime()); + Date endTimeParam = new Date(param.getEndTime()); + long dayDifference = DateUtil.betweenDay(startTimeParam, endTimeParam, false)+1; + + Long realStartTime = null; + Long realEndTime = null; + Long realDifference = null; + List realDateList = new ArrayList<>(); + //查询项目列表 + List projectList = projectDao.queryProjectList(param.getStartTime(), param.getEndTime(), userId); + //获取项目的时间范围 + if (ObjectUtil.isNotNull(projectList)) { + List projectStartTimeList = projectList.stream().map(ProjectVo.QueryProject::getStartTime).collect(Collectors.toList()); + List projectEndTimeList = projectList.stream().map(ProjectVo.QueryProject::getEndTime).collect(Collectors.toList()); + Long maxStartTime = Collections.max(projectStartTimeList); + Long maxEndTime = Collections.max(projectEndTimeList); + + realStartTime = maxStartTime >= param.getStartTime() ? maxStartTime : param.getStartTime(); + realEndTime = maxEndTime >= param.getEndTime() ? param.getEndTime() : maxEndTime; + realDifference = DateUtil.betweenDay(new Date(realStartTime),new Date(realEndTime),false)+1; + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(new Date(realStartTime)); + realDateList.add(format.format(new Date(realStartTime))); + for (int i = 1; i < realDifference; i++) { + calendar.add(Calendar.DATE,1); + Date time = calendar.getTime(); + realDateList.add(format.format(time)); + } + } + //获取参数的时间范围 + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(startTimeParam); + List dateList = new ArrayList<>(); + dateList.add(format.format(startTimeParam)); + for (int i = 1; i < dayDifference; i++) { + calendar.add(Calendar.DATE,1); + Date time = calendar.getTime(); + dateList.add(format.format(time)); + } + System.out.println(dateList); + + //比较参数时间与项目时间 + for (int i = 0; i < dateList.size(); i++) { + haveProject.add("0"); + for (int y = 0; y < realDateList.size(); y++) { + if (dateList.get(i).equals(realDateList.get(y))){ + haveProject.set(i,"1"); + } + } + } + + return haveProject; + } + } diff --git a/signin/src/main/resources/mapper_dao/ProjectDap.xml b/signin/src/main/resources/mapper_dao/ProjectDap.xml index b925267b..a3f5dd39 100644 --- a/signin/src/main/resources/mapper_dao/ProjectDap.xml +++ b/signin/src/main/resources/mapper_dao/ProjectDap.xml @@ -18,7 +18,7 @@ and up.user_id = #{userId} and p.project_start_time <= #{endTime} and p.project_end_time >= #{startTime} - + and up.rec_status = 0 and p.rec_status = 0 \ No newline at end of file