From ff86296106b1060cbb5ffed1c016a45bd98fbd59 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Thu, 9 Nov 2023 16:19:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=B6=E9=97=B4=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E6=9C=AC=E4=BA=BA?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=B6=E6=AE=B5=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HyPartnerInterviewBookSituation.java | 2 +- .../cool/store/vo/PartnerInterviewInfoVO.java | 2 +- .../cool/store/vo/interview/CalendarInfo.java | 2 +- .../cool/store/vo/interview/FreeBusyInfo.java | 26 ++++++++++++++++++- .../service/impl/InterviewServiceImpl.java | 17 ++++++++++-- .../store/service/impl/TimeSlotGenerator.java | 10 +++---- 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java index bbf51f499..265390466 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyPartnerInterviewBookSituation.java @@ -27,7 +27,7 @@ public class HyPartnerInterviewBookSituation { @ApiModelProperty("预约的面试结束时间") private String endTime; - @ApiModelProperty("是否已被预定") + @ApiModelProperty("是否已被预定成功") private Boolean booked; @ApiModelProperty("预约成功人的 partnerId") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java index 856558ca8..f8f810187 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerInterviewInfoVO.java @@ -85,7 +85,7 @@ public class PartnerInterviewInfoVO { @ApiModelProperty("来源名称") private String userChannelName; - @ApiModelProperty("是否已被预约") + @ApiModelProperty("是否已被预约成功") private Boolean booked; @ApiModelProperty("该时间段面试预约人数") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java index 925107d5a..59ac84d88 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/CalendarInfo.java @@ -27,7 +27,7 @@ public class CalendarInfo { @ApiModelProperty("日期字符串") private String dateStr; - @ApiModelProperty("飞书日程忙闲清单") + @ApiModelProperty("忙闲清单") private List freeBusyList; public CalendarInfo(Integer dayOfWeek, String year, String month, String day, String dateStr, List freeBusyList) { diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java index 5df3e5098..b5e307e93 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/interview/FreeBusyInfo.java @@ -20,9 +20,12 @@ public class FreeBusyInfo { @ApiModelProperty("预约人数") private Integer appointmentCount; - @ApiModelProperty("是否被预约") + @ApiModelProperty("是否被成功预约") private Boolean booked; + @ApiModelProperty("是否是自己预约的时间段") + private Boolean selfBooked; + public FreeBusyInfo(String startTime, String endTime, boolean free) { this.startTime = startTime; this.endTime = endTime; @@ -42,6 +45,15 @@ public class FreeBusyInfo { this.booked = booked; } + public FreeBusyInfo(String startTime, String endTime, boolean free, Integer appointmentCount, Boolean booked, Boolean selfBooked) { + this.startTime = startTime; + this.endTime = endTime; + this.free = free; + this.appointmentCount = appointmentCount; + this.booked = booked; + this.selfBooked = selfBooked; + } + public String getStartTime() { return startTime; } @@ -81,4 +93,16 @@ public class FreeBusyInfo { public void setBooked(Boolean booked) { this.booked = booked; } + + public boolean isFree() { + return free; + } + + public Boolean getSelfBooked() { + return selfBooked; + } + + public void setSelfBooked(Boolean selfBooked) { + this.selfBooked = selfBooked; + } } \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java index 61face107..44a90e5d5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/InterviewServiceImpl.java @@ -39,6 +39,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -728,6 +729,17 @@ public class InterviewServiceImpl implements InterviewService { String startTimeStr = DateUtil.format(startDateTime, "yyyy-MM-dd") + startTimeSuffix; String endTimeStr = DateUtil.format(endDateTime, "yyyy-MM-dd") + endTimeSuffix; List bookSituations = hyPartnerInterviewPlanMapper.getInterviewBookSituation(interviewerId, startTimeStr, endTimeStr); + //2.2 查询该线索已有的面试预约开始时间 + HyPartnerInterviewPlanDO interviewPlanDO = new HyPartnerInterviewPlanDO(); + interviewPlanDO.setPartnerId(request.getPartnerId()); + interviewPlanDO.setDeleted(false); + List hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(interviewPlanDO); + String partnerAppointStartTime = ""; + if (CollectionUtils.isNotEmpty(hyPartnerInterviewPlanDOS)) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + interviewPlanDO = hyPartnerInterviewPlanDOS.get(0); + partnerAppointStartTime = dateFormat.format(interviewPlanDO.getStartTime()); + } //3. 把数据装到各个时间槽里 //3.1 创建时间槽 @@ -758,8 +770,9 @@ public class InterviewServiceImpl implements InterviewService { for (HyPartnerInterviewBookSituation bookSituation : bookSituations) { //比较两个时间段是否有重叠,重叠的就 set 数据进去 if (startStr.compareTo(bookSituation.getStartTime()) >= 0 && endStr.compareTo(bookSituation.getEndTime()) <= 0) { - freeBusyInfo.setFree(Boolean.FALSE); - freeBusyInfo.setBooked(Boolean.TRUE); + freeBusyInfo.setBooked(bookSituation.getBooked()); + freeBusyInfo.setSelfBooked(partnerAppointStartTime.equals(bookSituation.getStartTime())); + freeBusyInfo.setFree(!bookSituation.getBooked()); freeBusyInfo.setAppointmentCount(bookSituation.getBookingCount()); bookSituations.remove(bookSituation); break; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java index a6c028562..1d4cab7f4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/TimeSlotGenerator.java @@ -89,7 +89,7 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); } @@ -107,13 +107,13 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:30", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); String startTime2 = String.format("%02d:30", hour); String endTime2 = String.format("%02d:00", hour + 1); //默认空闲 - FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false, false); hourSlots.add(hourSlot2); } return hourSlots; @@ -127,13 +127,13 @@ public class TimeSlotGenerator { String startTime = String.format("%02d:00", hour); String endTime = String.format("%02d:30", hour); //默认空闲 - FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false); + FreeBusyInfo hourSlot = new FreeBusyInfo(startTime, endTime, true, 0, false, false); hourSlots.add(hourSlot); String startTime2 = String.format("%02d:30", hour); String endTime2 = String.format("%02d:00", hour + 1); //默认空闲,预约人数为 0 - FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false); + FreeBusyInfo hourSlot2 = new FreeBusyInfo(startTime2, endTime2, true, 0, false, false); hourSlots.add(hourSlot2); } return hourSlots;