From 300948de25a4f397056b8824b04dfc6a25bcb5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E6=89=AC?= Date: Tue, 27 Jun 2023 15:41:59 +0800 Subject: [PATCH] =?UTF-8?q?PC=20=E7=AB=AF=E4=BF=AE=E6=94=B9=E9=9D=A2?= =?UTF-8?q?=E8=AF=95=E6=97=B6=E9=97=B4=E4=BF=AE=E6=94=B9=E9=A3=9E=E4=B9=A6?= =?UTF-8?q?=E6=97=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerInterviewPlanMapper.java | 2 + .../mapper/HyPartnerInterviewPlanMapper.xml | 5 + .../cool/store/service/InterviewService.java | 4 +- .../service/impl/InterviewServiceImpl.java | 129 +++++++++++------- .../workflow/InterviewWorkFlowService.java | 22 ++- .../store/controller/InterviewController.java | 12 +- 6 files changed, 113 insertions(+), 61 deletions(-) diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java index 8b574df73..c395ab07d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java @@ -153,4 +153,6 @@ public interface HyPartnerInterviewPlanMapper { */ HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId); + HyPartnerInterviewPlanDO getInterviewPlanByLineId(Long lineId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index fe9bfaf3a..6b54acac8 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -482,4 +482,9 @@ from hy_partner_interview_plan where id = #{interviewPlanId} + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java index 493075ac4..461508e4f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/InterviewService.java @@ -63,7 +63,9 @@ public interface InterviewService { */ void approveAppointment(ApproveAppointmentReq request) throws ApiException; void reInterview(ReInterviewReq request) throws ApiException; - void rejectInterview(RejectInterviewReq request) throws ApiException; +// void rejectInterview(RejectInterviewReq request) throws ApiException; public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException; + + public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile); } 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 418c4a350..0978472c0 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 @@ -191,17 +191,17 @@ public class InterviewServiceImpl implements InterviewService { } /** - * PC端修改面试时间,目前和小程序端逻辑一致,后续可能扩展 + * PC端修改面试时间,和小程序端逻辑不一致,PC端修改需要修改日程信息 * @param request * @throws ApiException */ @Override public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException { //只有房间状态是待开放才可以修改时间 - Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); - if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { - throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); - } +// Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); +// if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { +// throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); +// } InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); //如果面试信息为空,抛出异常 if (interviewInfo == null) { @@ -210,12 +210,41 @@ public class InterviewServiceImpl implements InterviewService { if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){ throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); } + //1.原面试官日程删除 + DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO(); + deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId()); + deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId()); + deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId()); + UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO); + if(userCalendarsEventDTO == null ){ + throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR); + } + //2.新面试官日程新增 + CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO(); + createCalendarEventDTO.setStartTime(DateUtil.parse(request.getNewStartBookingTime()).getTime()); + createCalendarEventDTO.setEndTime(DateUtil.parse(request.getNewEndBookingTime()).getTime()); + createCalendarEventDTO.setUserId(interviewInfo.getInterviewerId()); + createCalendarEventDTO.setJoinUserIds(Arrays.asList(interviewInfo.getInterviewerId())); + createCalendarEventDTO.setSummary(generateInterviewTitle(interviewInfo.getPartnerLineId())); + UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO); + if(userCalendarEvent == null ){ + throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL); + } HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO(); record.setId(Long.valueOf(request.getInterviewPlanId())); record.setStartTime(Convert.toDate(request.getNewStartBookingTime())); record.setEndTime(Convert.toDate(request.getNewEndBookingTime())); record.setUpdateTime(new Date()); hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record); + + //更新面试信息 + HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); + hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewPlanId())); + record.setFeishuCalendarId(userCalendarEvent.getCalendarId()); + record.setFeishuScheduleId(userCalendarEvent.getEventId()); + hyPartnerInterviewDO.setInterviewer(interviewInfo.getInterviewerId()); + hyPartnerInterviewDO.setUpdateTime(new Date()); + hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); } @Override @@ -461,21 +490,7 @@ public class InterviewServiceImpl implements InterviewService { if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); } - //更新面试信息 - HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); - hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId())); - hyPartnerInterviewDO.setDeleted(true); - hyPartnerInterviewDO.setUpdateTime(new Date()); - hyPartnerInterviewDO.setSummary(request.getReason()); - hyPartnerInterviewDO.setCertifyFile(request.getCertifyFile()); - hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); - //更新面试计划信息 - HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); - hyPartnerInterviewPlanDO.setId(Long.valueOf(request.getInterviewPlanId())); - hyPartnerInterviewPlanDO.setDeleted(true); - hyPartnerInterviewPlanDO.setUpdateTime(new Date()); - hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); - + rejectInterviewAndSuspendLine(Long.parseLong(interviewVO.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile()); //更新线索状态 HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO(); hyPartnerLineDO.setId(Long.valueOf(request.getInterviewPlanId())); @@ -485,40 +500,28 @@ public class InterviewServiceImpl implements InterviewService { hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); } - @Override - @Transactional - public void rejectInterview(RejectInterviewReq request) throws ApiException { +// @Override +// @Transactional +// public void rejectInterview(RejectInterviewReq request) throws ApiException { //查询面试计划信息 - InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); - //如果面试计划不存在,抛出异常 - if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { - throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); - } - //更新面试信息 - HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); - hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId())); - hyPartnerInterviewDO.setDeleted(true); - hyPartnerInterviewDO.setUpdateTime(new Date()); - hyPartnerInterviewDO.setCertifyFile(request.getCertifyFile()); - hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); - //更新面试计划信息 - HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); - hyPartnerInterviewPlanDO.setId(Long.valueOf(request.getInterviewPlanId())); - hyPartnerInterviewPlanDO.setDeleted(true); - hyPartnerInterviewPlanDO.setUpdateTime(new Date()); - hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); - - //更新线索状态 - CloseFollowRequest closeFollowRequest = new CloseFollowRequest(); - closeFollowRequest.setRejectPublicReason(request.getRejectPublicReason()); - closeFollowRequest.setRejectRealReason(request.getRejectRealReason()); - closeFollowRequest.setLineId(Long.valueOf(request.getLineId())); - closeFollowRequest.setType("reject"); - if(StringUtils.isNotEmpty(request.getCertifyFile())){ - closeFollowRequest.setCertifyFile(Arrays.asList(request.getCertifyFile().split(","))); - } - hyPartnerLineInfoService.closeOrPassFollow(request.getOperatorId(),closeFollowRequest); - } +// InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); +// //如果面试计划不存在,抛出异常 +// if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { +// throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); +// } +// +// rejectInterviewAndSuspendLine(Long.parseLong(request.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile()) +// //更新线索状态 +// CloseFollowRequest closeFollowRequest = new CloseFollowRequest(); +// closeFollowRequest.setRejectPublicReason(request.getRejectPublicReason()); +// closeFollowRequest.setRejectRealReason(request.getRejectRealReason()); +// closeFollowRequest.setLineId(Long.valueOf(request.getLineId())); +// closeFollowRequest.setType("reject"); +// if(StringUtils.isNotEmpty(request.getCertifyFile())){ +// closeFollowRequest.setCertifyFile(Arrays.asList(request.getCertifyFile().split(","))); +// } +// hyPartnerLineInfoService.closeOrPassFollow(request.getOperatorId(),closeFollowRequest); +// } public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){ //"您有一个【面试预约申请】待处理,预约人【姓名】手机号【13xxxxxxxxx】,预约面试时间【YYYY年MM月DD日 hh:mm】,请及时处理】" @@ -556,4 +559,24 @@ public class InterviewServiceImpl implements InterviewService { return "意向 "+partnerBaseInfo.getUsername()+" 线上面试"; } + //拒绝面试更新相关信息 + + @Override + public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile){ + //更新面试信息 + HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); + hyPartnerInterviewDO.setId(iterviewId); + hyPartnerInterviewDO.setDeleted(true); + hyPartnerInterviewDO.setUpdateTime(new Date()); + hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_7.getCode())); + hyPartnerInterviewDO.setCertifyFile(certifyFile); + hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); + //更新面试计划信息 + HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); + hyPartnerInterviewPlanDO.setId(interviewPlanId); + hyPartnerInterviewPlanDO.setDeleted(true); + hyPartnerInterviewPlanDO.setUpdateTime(new Date()); + hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO); + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java index ed4d99aba..e3380a1b5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/workflow/InterviewWorkFlowService.java @@ -1,10 +1,18 @@ package com.cool.store.service.impl.workflow; +import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.enums.WorkflowStageEnum; +import com.cool.store.mapper.HyPartnerInterviewMapper; +import com.cool.store.mapper.HyPartnerInterviewPlanMapper; import com.cool.store.request.CloseFollowRequest; +import com.cool.store.service.InterviewService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; + /** * @author zhangchenbiao * @FileName: InterviewWorkFlowService @@ -15,6 +23,11 @@ import org.springframework.stereotype.Service; @Service public class InterviewWorkFlowService extends WorkFlowBaseService { + @Autowired + private HyPartnerInterviewMapper hyPartnerInterviewMapper; + + @Autowired + private InterviewService interviewService; @Override public WorkflowStageEnum getWorkFlowStage() { return WorkflowStageEnum.RESERVATION; @@ -22,6 +35,13 @@ public class InterviewWorkFlowService extends WorkFlowBaseService { @Override public void endProcess(CloseFollowRequest request) { - log.info("面试结束~"); + Long lineId = request.getLineId(); + //根据线索id查询面试信息 + List interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId)); + if (interviewBaseInfos == null || interviewBaseInfos.size() == 0) { + return; + } + HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0); + interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); } } diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java index 26a7421e9..b89b78d3f 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/InterviewController.java @@ -88,10 +88,10 @@ public class InterviewController { return ResponseResult.success(); } - @PostMapping("/reject") - @ApiOperation("拒绝面试") - public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException { - interviewService.rejectInterview(request); - return ResponseResult.success(); - } +// @PostMapping("/reject") +// @ApiOperation("拒绝面试") +// public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException { +// interviewService.rejectInterview(request); +// return ResponseResult.success(); +// } }