diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 92465f730..c1d8e96b8 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -88,7 +88,7 @@ public enum ErrorCodeEnum { INTERVIEW_PLAN_NOT_EXIST(1021107, "面审计划不存在!", null), FEISHU_DELETE_SCHEDULE_ERROR(1021108, "删除原面审安排失败!", null), CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面审安排失败!", null), - FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面审安排失败!", null), + FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "开始前10分钟不允许修改时间!", null), INTERVIEW_STATUS_ERROR(1021111, "当前面审状态不允许该操作!", null), INTERVIEW_PLAN_ALREADY_EXIST(1021112, "面审计划已存在,请勿重复申请!", null), INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空!", null), diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java index ff6b309a4..0490e30b2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/LineInterviewServiceImpl.java @@ -1,5 +1,6 @@ package com.cool.store.service.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; @@ -32,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -101,11 +104,18 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt throw new ServiceException(ErrorCodeEnum.LINE_STATUS_NOT_ALLOW_OPERATE); } InterviewTypeEnum interviewType = WorkflowSubStageEnum.getInterviewType(lineInfo.getWorkflowSubStage()); - UserRoleEnum userRole = InterviewTypeEnum.MEET.equals(interviewType) ? UserRoleEnum.INVESTMENT_MANAGER : UserRoleEnum.REGION_MANAGER; - //获取面试官 - String interviewerUserId = InterviewTypeEnum.MEET.equals(interviewType) ? lineInfo.getInvestmentManager() : commonService.getUserIdByAreaAndUserRole(lineInfo.getWantShopAreaId(), userRole); - String firstInterviewer = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? interviewerUserId : null; - String secondInterviewer = InterviewTypeEnum.SECOND_INTERVIEW.equals(interviewType) ? interviewerUserId : null; + String interviewerUserId, firstInterviewer = null, secondInterviewer = null; + if(!WorkflowSubStageStatusEnum.isReappointmentStatus(lineInfo.getWorkflowSubStageStatus())){ + interviewerUserId = lineInfo.getInvestmentManager(); + if(!InterviewTypeEnum.MEET.equals(interviewType)){ + interviewerUserId = commonService.getUserIdByAreaAndUserRole(lineInfo.getWantShopAreaId(), UserRoleEnum.REGION_MANAGER); + } + firstInterviewer = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? interviewerUserId : null; + secondInterviewer = InterviewTypeEnum.SECOND_INTERVIEW.equals(interviewType) ? interviewerUserId : null; + }else{ + //重新预约直接拿线索对应的面试官 + interviewerUserId = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? lineInfo.getFirstInterviewer() : lineInfo.getSecondInterviewer(); + } Boolean occupied = lineCalendarsEventDAO.isOccupied(interviewType.getCode(), lineInfo.getRegionId(), interviewerUserId, request.getStartTime(), request.getEndTime(), null); if(occupied){ throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED); @@ -158,16 +168,23 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt if(occupied){ throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED); } - interviewInfo.setInterviewDate(startTime); - interviewInfo.setStartTime(startTime); - interviewInfo.setEndTime(endTime); - lineInterviewDAO.updateInterviewInfo(interviewInfo); - LineCalendarsEventDO update = new LineCalendarsEventDO(); - update.setId(interviewInfo.getCalendarsEventId()); - update.setStartTime(startTime); - update.setEndTime(endTime); - update.setInterviewDate(startTime); - lineCalendarsEventDAO.updateCalendarsEvent(update); + LocalDateTime startDateTime = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault()).minusMinutes(10); + LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); + if(startDateTime.isBefore(now)){ + throw new ServiceException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR); + } + LineInterviewDO updateInterview = new LineInterviewDO(); + updateInterview.setId(interviewInfo.getId()); + updateInterview.setInterviewDate(startTime); + updateInterview.setStartTime(startTime); + updateInterview.setEndTime(endTime); + lineInterviewDAO.updateInterviewInfo(updateInterview); + LineCalendarsEventDO updateEvent = new LineCalendarsEventDO(); + updateEvent.setId(interviewInfo.getCalendarsEventId()); + updateEvent.setStartTime(startTime); + updateEvent.setEndTime(endTime); + updateEvent.setInterviewDate(startTime); + lineCalendarsEventDAO.updateCalendarsEvent(updateEvent); return true; }