From a1b33f2ed85d2d1e0b1dc48f1bddefcfcd84f3d1 Mon Sep 17 00:00:00 2001 From: "feng.li" Date: Fri, 8 Dec 2023 18:25:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=9A=E7=94=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/OperateTypeEnum.java | 3 + .../cool/store/enums/WorkflowStatusEnum.java | 7 -- .../HyPartnerCertificationInfoMapper.java | 2 + .../mapper/HyPartnerTaskInfoLogMapper.java | 2 + .../com/cool/store/job/ExhibitionJob.java | 24 ++++ .../store/service/impl/CommonServiceImpl.java | 110 +++++++++++++----- 6 files changed, 109 insertions(+), 39 deletions(-) create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java index 83b02d491..7235910ac 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java @@ -21,6 +21,8 @@ public enum OperateTypeEnum { CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)), TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE)), INTERVIEW_APPOINTMENT("interview_appointment", "预约面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + INTERVIEW_APPOINTMENT_AGREEMENT("interview_appointment_agreement", "同意面试预约申请", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + AUTO_OPEN_INTERVIEW("auto_open_interview", "自动打开面试房间", Arrays.asList(OPERATE_TIME)), INTERVIEWER_BOOK_INTERVIEW("interviewer_book_interview", "招商经理主动预约面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), MODIFY_INTERVIEW_TIME("modify_interview_time", "修改面试时间", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INTERVIEW_TIME, AFTER_INTERVIEW_TIME)), ENTRUST_OTHERS("entrust_others", "委托他人", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, BEFORE_INTERVIEWR_NAME, AFTER_INTERVIEWR_NAME, BEFORE_INTERVIEWR_MOBILE, AFTER_INTERVIEWR_MOBILE)), @@ -31,6 +33,7 @@ public enum OperateTypeEnum { REJECT_INTERVIEW("reject_interview", "合作资格面试-拒绝并结束跟进", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON,REJECT_REAL_REASON, CERTIFY_FILE)), CREATE_QUALIFYVERIFY("create_qualifyverify", "合作资格面试-创建资格审核", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)), + EXHIBITION_CREATE_QUALIFYVERIFY("exhibition_create_qualifyverify", "会销资格面试-创建资格审核", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)), QUALIFYVERIFY_PASS("qualifyverify_pass", "合作资格面试-审核通过", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)), QUALIFYVERIFY_REJECT("qualifyverify_reject", "合作资格面试-审核拒绝", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME,SUMMARY,QUALI_VERIFY_CONTENT)), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java index 6cf5bf0a8..9e40d4e3c 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/WorkflowStatusEnum.java @@ -1,12 +1,5 @@ package com.cool.store.enums; -import org.apache.commons.lang3.StringUtils; - -import java.util.Arrays; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - /** * @Author suzhuhong * @Date 2023/6/9 16:35 diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java index 42eaa37fb..6d67eb43b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java @@ -1,12 +1,14 @@ package com.cool.store.mapper; import com.cool.store.entity.HyPartnerCertificationInfoDO; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * @author zhangchenbiao * @date 2023-05-29 03:51 */ +@Mapper public interface HyPartnerCertificationInfoMapper { /** * 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 c866c45b5..b053561ed 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 @@ -2,6 +2,7 @@ package com.cool.store.mapper; import com.cool.store.entity.HyPartnerTaskInfoLogDO; import com.github.pagehelper.Page; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -10,6 +11,7 @@ import java.util.List; * @author zhangchenbiao * @date 2023-05-29 03:53 */ +@Mapper public interface HyPartnerTaskInfoLogMapper { /** * 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 new file mode 100644 index 000000000..d497f0ef7 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/ExhibitionJob.java @@ -0,0 +1,24 @@ +package com.cool.store.job; + +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author Fun Li 2023/12/8 13:50 + * @version 1.0 + */ +@Slf4j +@Component +public class ExhibitionJob { + + @XxlJob("finishExhibition") + public void syncUserSourceJob() { + XxlJobHelper.log("-------------------------------自动结束会销任务开始-------------------------------"); + + XxlJobHelper.log("-------------------------------自动结束会销任务结束-------------------------------"); + XxlJobHelper.handleSuccess(); + } + +} 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 a0268e0ce..99d140e0f 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 @@ -2,14 +2,13 @@ package com.cool.store.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dao.HyPartnerExhibitionDAO; import com.cool.store.dto.log.LogFieldDTO; import com.cool.store.entity.HyPartnerCertificationInfoDO; +import com.cool.store.entity.HyPartnerExhibitionDO; import com.cool.store.entity.HyPartnerLineInfoDO; import com.cool.store.entity.HyPartnerTaskInfoLogDO; -import com.cool.store.enums.OperateLogFieldValueEnum; -import com.cool.store.enums.OperateTypeEnum; -import com.cool.store.enums.WorkflowStageEnum; -import com.cool.store.enums.WorkflowStatusEnum; +import com.cool.store.enums.*; import com.cool.store.exception.ApiException; import com.cool.store.mapper.HyPartnerCertificationInfoMapper; import com.cool.store.mapper.HyPartnerLineInfoMapper; @@ -45,6 +44,9 @@ public class CommonServiceImpl implements CommonService { @Autowired private HyPartnerCertificationInfoMapper hyPartnerCertificationInfoMapper; + @Autowired + private HyPartnerExhibitionDAO partnerExhibitionDAO; + @Override public String getTipsInfo(GetTipsInfoReq request) throws ApiException { List lineInfoList = hyPartnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(Long.parseLong(request.getPartnerLineId()))); @@ -55,53 +57,98 @@ public class CommonServiceImpl implements CommonService { String workflowStage = hyPartnerLineInfoDO.getWorkflowStage(); String workflowStatus = hyPartnerLineInfoDO.getWorkflowStatus(); Long partnerLineId = hyPartnerLineInfoDO.getId(); - if ((workflowStage.equals(WorkflowStageEnum.RESERVATION.getCode()) && workflowStatus.equals(WorkflowStatusEnum.RESERVATION_1.getCode()))|| - (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode()))) { - String interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); - if (StringUtils.isEmpty(interviewAppointmentTips)) { - interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW, "提交面试预约时间"); + //会销面试信息 + HyPartnerExhibitionDO partnerExhibitionDO = new HyPartnerExhibitionDO(); + partnerExhibitionDO.setPartnerLineId(hyPartnerLineInfoDO.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 getCommonTipsInfo(workflowStage, workflowStatus, partnerLineId); + } else { + return getExhibitionTipsInfo(workflowStage, workflowStatus, partnerLineId); + } + } + + //普通线索 + private String getCommonTipsInfo(String workflowStage, String workflowStatus, Long partnerLineId) { + String interviewTips = ""; + //1. 预约面试待审核 + if ((workflowStage.equals(WorkflowStageEnum.RESERVATION.getCode()) && workflowStatus.equals(WorkflowStatusEnum.RESERVATION_1.getCode()))) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, "于", "修改面试预约时间"); + if (StringUtils.isEmpty(interviewTips)) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "通过合伙人小程序于", "发起预约面试申请"); } - return interviewAppointmentTips; + //2. 待面试 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode())) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT_AGREEMENT, "于", "同意了客户的预约面试申请"); + //3. 面试已开始 } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) { - String tips = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, ""); - if (StringUtils.isNotEmpty(tips)) { - return tips + ("修改面试预约时间"); - } else { - String interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "提交面试预约时间"); - if (StringUtils.isEmpty(interviewAppointmentTips)) { - interviewAppointmentTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW, "提交面试预约时间"); - } - return interviewAppointmentTips; - } + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.AUTO_OPEN_INTERVIEW, "面试房间于", "正式开放"); + //4. 面试已结束 } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) { - return getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "结束面试"); - }else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) { - return getInterviewTips(partnerLineId, OperateTypeEnum.CREATE_QUALIFYVERIFY, "发起加盟商资质审核"); - }else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "于", "结束面试"); + //5. 发起资质审批 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.CREATE_QUALIFYVERIFY, "于","发起加盟商资质审核"); + //6. 资质审批通过 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) { HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId); String intentionContractNo = null; if(partnerCertificationInfoDO != null){ intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); } - return getVerifyResultTips(partnerLineId, OperateTypeEnum.QUALIFYVERIFY_PASS, "审核通过 | "+intentionContractNo); + interviewTips = getVerifyResultTips(partnerLineId, OperateTypeEnum.QUALIFYVERIFY_PASS, "审核通过 | " + intentionContractNo); } - - return null; + return interviewTips; } - public String getInterviewTips(Long partnerLineId, OperateTypeEnum operateTypeEnum, String action) { - StringBuffer sb = new StringBuffer(); + //会销面试线索,通过会销进行面试的线索已开始就是面试已开始状态 + private String getExhibitionTipsInfo(String workflowStage, String workflowStatus, Long partnerLineId) { + String interviewTips = ""; + //1. 面试已开始 + if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEWER_BOOK_INTERVIEW, "通过展会于", "发起面试"); + //2. 面试已结束 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) { + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "通过展会于", "结束面试"); + //3. 发起资质审批 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) { + // TODO 判断是否是通过会销发起的 + interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.EXHIBITION_CREATE_QUALIFYVERIFY, "通过展会于", "发起加盟商资质审核"); + if (interviewTips == null) { + getInterviewTips(partnerLineId, OperateTypeEnum.CREATE_QUALIFYVERIFY, "于", "发起加盟商资质审核"); + } + //4. 资质审批通过 + } else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) { + HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId); + String intentionContractNo = null; + if(partnerCertificationInfoDO != null){ + intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo(); + } + interviewTips = getVerifyResultTips(partnerLineId, OperateTypeEnum.QUALIFYVERIFY_PASS, "审核通过 | "+intentionContractNo); + } + return interviewTips; + } + + public String getInterviewTips(Long partnerLineId, OperateTypeEnum operateTypeEnum, String middleInfo, String action) { + StringBuilder sb = new StringBuilder(); sb.append(StringUtil.REPLACE_0) .append(" ") .append(StringUtil.REPLACE_1) - .append(" 于 ").append(StringUtil.REPLACE_2).append(" ").append(action); + .append(" ") + .append(middleInfo) + .append(" ") + .append(StringUtil.REPLACE_2) + .append(" ").append(action); String content = sb.toString(); return getSuitableTipsInfo(content, partnerLineId, operateTypeEnum, OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode(), OperateLogFieldValueEnum.MOBILE.getCode(), OperateLogFieldValueEnum.OPERATE_TIME.getCode()); - } public String getVerifyResultTips(Long partnerLineId, OperateTypeEnum operateTypeEnum, String action) { @@ -132,7 +179,6 @@ public class CommonServiceImpl implements CommonService { } catch (Exception e) { //异常代表不是时间格式,不做处理 } - } params.add(value); }