Browse Source

增加接口 查询日历小红点

tall3
ma 4 years ago
parent
commit
e2d8d04933
  1. 7
      signin/src/main/java/com/ccsens/signin/api/ProjectController.java
  2. 9
      signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java
  3. 25
      signin/src/main/java/com/ccsens/signin/bean/vo/ProjectVo.java
  4. 8
      signin/src/main/java/com/ccsens/signin/service/IProjectService.java
  5. 68
      signin/src/main/java/com/ccsens/signin/service/ProjectService.java
  6. 2
      signin/src/main/resources/mapper_dao/ProjectDap.xml

7
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<List<String>> haveProjectDay(@ApiParam @Validated @RequestBody QueryDto<ProjectDto.QueryHaveProject> params) throws Exception{
List<String> projectById = projectService.haveProjectDay(params.getParam(), params.getUserId());
return JsonResponse.newInstance().ok(projectById);
}
}

9
signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java

@ -39,4 +39,13 @@ public class ProjectDto {
@ApiModelProperty("用户列表")
private Set<Long> userIdList;
}
@Data
@ApiModel("查询日历是否有项目")
public static class QueryHaveProject {
@ApiModelProperty("开始时间")
private Long startTime = 1625126696000L;
@ApiModelProperty("结束时间")
private Long endTime = 1627632296000L;
}
}

25
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;
}
}

8
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<String> haveProjectDay(ProjectDto.QueryHaveProject param, Long userId);
}

68
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<String> haveProjectDay(ProjectDto.QueryHaveProject param, Long userId) {
//返回值
List<String> 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<String> realDateList = new ArrayList<>();
//查询项目列表
List<ProjectVo.QueryProject> projectList = projectDao.queryProjectList(param.getStartTime(), param.getEndTime(), userId);
//获取项目的时间范围
if (ObjectUtil.isNotNull(projectList)) {
List<Long> projectStartTimeList = projectList.stream().map(ProjectVo.QueryProject::getStartTime).collect(Collectors.toList());
List<Long> 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<String> 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;
}
}

2
signin/src/main/resources/mapper_dao/ProjectDap.xml

@ -18,7 +18,7 @@
and up.user_id = #{userId}
and p.project_start_time &lt;= #{endTime}
and p.project_end_time &gt;= #{startTime}
and up.rec_status = 0 and p.rec_status = 0
</select>
</mapper>
Loading…
Cancel
Save