From bb6c152e5f263cdd5af7ef278127de1c1d8913a8 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Fri, 22 Dec 2023 11:32:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=80=9A=E7=94=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=96=B9=E6=B3=95=E5=AF=B9=E4=BF=AE=E6=94=B9=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=93=8D=E4=BD=9C=E7=9A=84=E5=8D=95=E7=8B=AC=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/HyPartnerTaskInfoLogMapper.java | 2 +- .../mapper/HyPartnerTaskInfoLogMapper.xml | 2 +- .../com/cool/store/job/ExhibitionJob.java | 4 +- .../store/service/impl/CommonServiceImpl.java | 53 ++++++++++++++++--- .../exhibition/ExhibitionServiceImpl.java | 5 +- 5 files changed, 51 insertions(+), 15 deletions(-) diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java index a7bd18eec..328c7b71c 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerTaskInfoLogMapper.java @@ -55,5 +55,5 @@ public interface HyPartnerTaskInfoLogMapper { * @param partnerLineId * @return */ - HyPartnerTaskInfoLogDO getLastTipsLog(@Param("lineId") Long partnerLineId); + List getLastTipsLog(@Param("lineId") Long partnerLineId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml index 4979c4b38..55af1df53 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerTaskInfoLogMapper.xml @@ -179,7 +179,7 @@ 'create_qualifyverify', 'exhibition_create_qualifyverify' ) - ORDER BY create_time DESC LIMIT 1 + ORDER BY create_time DESC \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java b/coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java index a72744370..d701c7da5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java @@ -21,7 +21,7 @@ public class ExhibitionJob { private ExhibitionService exhibitionService; @XxlJob("autoCloseExhibition") - //每天 23:59:00 执行 + //每天 23:50:00 执行 public void syncUserSourceJob() { XxlJobHelper.log("-------------------------------自动结束会销任务开始-------------------------------"); log.info("-------------------------------自动结束会销任务开始-------------------------------"); @@ -32,7 +32,7 @@ public class ExhibitionJob { } @XxlJob("sendSMSToExhibitionApplicants") - //每天 08:00 执行 + //每天 10:00 执行 public void sendSMSToExhibitionApplicants() { XxlJobHelper.log("-------------------------------给被自动结束会销的参会人发送短信任务开始-------------------------------"); log.info("-------------------------------给被自动结束会销的参会人发送短信任务开始-------------------------------"); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java index 1875ef420..9ffd7b6fa 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/CommonServiceImpl.java @@ -59,27 +59,58 @@ public class CommonServiceImpl implements CommonService { HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfoList.get(0); String workflowStage = hyPartnerLineInfoDO.getWorkflowStage(); String workflowStatus = hyPartnerLineInfoDO.getWorkflowStatus(); - Long partnerLineId = hyPartnerLineInfoDO.getId(); //会销面试信息 HyPartnerExhibitionDO partnerExhibitionDO = new HyPartnerExhibitionDO(); partnerExhibitionDO.setPartnerLineId(hyPartnerLineInfoDO.getId()); + //能用对应的面试计划 id 查到线索参加会销信息就表示该线索是通过会销进行的面试 partnerExhibitionDO.setInterviewPlanId(interviewPlanByLineId.getId()); partnerExhibitionDO.setDeleted(Boolean.FALSE); - partnerExhibitionDO.setParticipationStatus(ExhibitionPartnerStatus.INTERVIEWING.getCode()); partnerExhibitionDO = partnerExhibitionDAO.querySelective(partnerExhibitionDO); //是否是会销面试 if (partnerExhibitionDO == null || partnerExhibitionDO.getParticipationStatus().compareTo(ExhibitionPartnerStatus.INTERVIEWING.getCode()) < 0) { - return getCommonTipsFix(Long.parseLong(request.getPartnerLineId())); + return getCommonTipsFix(Long.parseLong(request.getPartnerLineId()), workflowStage, workflowStatus); } else { return getExhibitionTipsInfoFix(Long.parseLong(request.getPartnerLineId())); } } - private String getCommonTipsFix(Long partnerLineId) { + private String getCommonTipsFix(Long partnerLineId, String workflowStage, String workflowStatus) { + //1. 查询该线索需要展示的操作类型相应的操作记录 + List operationLogs = hyPartnerTaskInfoLogMapper.getLastTipsLog(partnerLineId); + HyPartnerTaskInfoLogDO lastLog; + if (!operationLogs.isEmpty()) { + lastLog = operationLogs.get(0); + } else { + return null; + } + //以下两种情况下最后一条操作记录时修改面试时间却不展示修改面试时间的 tips + //1.1 加盟商提交预约时间后,客户经理修改面试时间但未同意,展示加盟商预约面试时间的 tips + if (lastLog.getOperateType().equals(OperateTypeEnum.MODIFY_INTERVIEW_TIME.getCode())) { + if (WorkflowStageEnum.RESERVATION.getCode().equals(workflowStage) + && WorkflowStatusEnum.RESERVATION_1.getCode().equals(workflowStatus)) { + //取出线索提交预约时间的操作记录 + Optional logDO = operationLogs.stream() + .filter(log -> log.getOperateType().equals(OperateTypeEnum.INTERVIEW_APPOINTMENT.getCode())) + .findFirst(); + return logDO + .map(hyPartnerTaskInfoLogDO -> getInterviewTipsFix(hyPartnerTaskInfoLogDO, "通过合伙人小程序于", "发起预约面试申请")) + .orElse(null); + } + //1.2 客户经理帮约后,再修改面试时间,展示客户经理主动预约面试的 tips + if (WorkflowStageEnum.INTERVIEW.getCode().equals(workflowStage) + && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(workflowStatus)) { + Optional logDO = operationLogs.stream() + .filter(log -> !log.getOperateType().equals(OperateTypeEnum.MODIFY_INTERVIEW_TIME.getCode())) + .findFirst(); + if (logDO.isPresent() + && logDO.get().getOperateType().equals(OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW.getCode())) { + return getInterviewTipsFix(logDO.get(), "通过操作后台于", "主动为客户预约面试时间"); + } + } + } + String interviewTips = ""; - //1. 查询需要展示的操作类型最新一条 - HyPartnerTaskInfoLogDO lastLog = hyPartnerTaskInfoLogMapper.getLastTipsLog(partnerLineId); //2. 判断类型并返回对应的tips OperateTypeEnum operateType = OperateTypeEnum.getOperateTypeEnum(lastLog.getOperateType()); switch (operateType) { @@ -120,8 +151,14 @@ public class CommonServiceImpl implements CommonService { private String getExhibitionTipsInfoFix(Long partnerLineId) { String interviewTips = ""; - //1. 查询需要展示的操作类型最新一条 - HyPartnerTaskInfoLogDO lastLog = hyPartnerTaskInfoLogMapper.getLastTipsLog(partnerLineId); + //1. 查询该线索需要展示的操作类型相应的操作记录 + List operationLogs = hyPartnerTaskInfoLogMapper.getLastTipsLog(partnerLineId); + HyPartnerTaskInfoLogDO lastLog; + if (!operationLogs.isEmpty()) { + lastLog = operationLogs.get(0); + } else { + return null; + } //2. 判断类型并返回对应的tips OperateTypeEnum operateType = OperateTypeEnum.getOperateTypeEnum(lastLog.getOperateType()); switch (operateType) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/exhibition/ExhibitionServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/exhibition/ExhibitionServiceImpl.java index e62bb5c50..0958c7ccd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/exhibition/ExhibitionServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/exhibition/ExhibitionServiceImpl.java @@ -103,10 +103,9 @@ public class ExhibitionServiceImpl implements ExhibitionService { hyPartnerExhibitionDO.setPartnerLineId(Long.parseLong(dto.getPartnerLineId())); hyPartnerExhibitionDO = hyPartnerExhibitionDAO.querySelective(hyPartnerExhibitionDO); //1.2 核验会销签到状态 - if ( - hyPartnerExhibitionDO == null || + if (hyPartnerExhibitionDO == null //线索未会销签到并且提交意向申请或未处在预约面试阶段 - !(hyPartnerExhibitionDO.getParticipationStatus().equals(ExhibitionPartnerStatus.SIGNED.getCode()))) + || !(hyPartnerExhibitionDO.getParticipationStatus().equals(ExhibitionPartnerStatus.SIGNED.getCode()))) { throw new ApiException(ErrorCodeEnum.EXHIBITION_NOT_SIGNED); }