通用信息更改方案

This commit is contained in:
feng.li
2023-12-14 19:22:46 +08:00
parent e92b9ec3eb
commit a74f480916
4 changed files with 148 additions and 17 deletions

View File

@@ -1,7 +1,9 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.cool.store.enums.OperateLogFieldValueEnum.*;
@@ -54,6 +56,15 @@ public enum OperateTypeEnum {
private List<OperateLogFieldValueEnum> filedList;
private static Map<String, OperateTypeEnum> operateTypeEnumMap;
static {
operateTypeEnumMap = new HashMap<>();
for (OperateTypeEnum operateTypeEnum : OperateTypeEnum.values()) {
operateTypeEnumMap.put(operateTypeEnum.getCode(), operateTypeEnum);
}
}
OperateTypeEnum(String code, String name, List<OperateLogFieldValueEnum> filedList) {
this.code = code;
this.name = name;
@@ -71,4 +82,8 @@ public enum OperateTypeEnum {
public List<OperateLogFieldValueEnum> getFiledList() {
return filedList;
}
public static OperateTypeEnum getOperateTypeEnum(String code) {
return operateTypeEnumMap.get(code);
}
}

View File

@@ -49,4 +49,11 @@ public interface HyPartnerTaskInfoLogMapper {
* @return
*/
int deleteByLineId(@Param("partnerLineId") Long partnerLineId, @Param("message") String message);
/**
* 获取通用信息需要的最新一条线索操作日志
* @param partnerLineId
* @return
*/
HyPartnerTaskInfoLogDO getLastTipsLog(Long partnerLineId);
}

View File

@@ -164,4 +164,21 @@
update hy_partner_task_info_log set deleted = '1', message = #{message} where partner_line_id= #{partnerLineId}
</update>
<select id="getLastTipsLog" resultType="com.cool.store.entity.HyPartnerTaskInfoLogDO">
SELECT <include refid="Base_Column_List"></include>, <include refid="Blob_Column_List"></include>
FROM `hy_partner_task_info_log`
WHERE deleted = 0
AND partner_line_id = 38711
AND operate_type IN (
'interview_appointment',
'interview_appointment_agreement',
'auto_open_interview',
'interviewer_book_interview',
'modify_interview_time',
'finish_interview',
'create_qualifyverify'
)
ORDER BY create_time DESC LIMIT 1
</select>
</mapper>

View File

@@ -1,16 +1,15 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
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.entity.*;
import com.cool.store.enums.*;
import com.cool.store.exception.ApiException;
import com.cool.store.mapper.HyPartnerCertificationInfoMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.mapper.HyPartnerTaskInfoLogMapper;
import com.cool.store.request.GetTipsInfoReq;
@@ -47,12 +46,17 @@ public class CommonServiceImpl implements CommonService {
@Autowired
private HyPartnerExhibitionDAO partnerExhibitionDAO;
@Autowired
private HyPartnerInterviewPlanMapper partnerInterviewPlanMapper;
@Override
public String getTipsInfo(GetTipsInfoReq request) throws ApiException {
List<HyPartnerLineInfoDO> lineInfoList = hyPartnerLineInfoMapper.getHyPartnerLineInfoListByIds(Arrays.asList(Long.parseLong(request.getPartnerLineId())));
if (CollectionUtils.isEmpty(lineInfoList)) {
return null;
}
//获取面试计划 id 信息
HyPartnerInterviewPlanDO interviewPlanByLineId = partnerInterviewPlanMapper.getInterviewPlanByLineId(Long.parseLong(request.getPartnerLineId()));
HyPartnerLineInfoDO hyPartnerLineInfoDO = lineInfoList.get(0);
String workflowStage = hyPartnerLineInfoDO.getWorkflowStage();
String workflowStatus = hyPartnerLineInfoDO.getWorkflowStatus();
@@ -60,40 +64,126 @@ public class CommonServiceImpl implements CommonService {
//会销面试信息
HyPartnerExhibitionDO partnerExhibitionDO = new HyPartnerExhibitionDO();
partnerExhibitionDO.setPartnerLineId(hyPartnerLineInfoDO.getId());
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 getCommonTipsInfo(workflowStage, workflowStatus, partnerLineId);
return getCommonTipsFix(Long.parseLong(request.getPartnerLineId()));
} else {
return getExhibitionTipsInfo(workflowStage, workflowStatus, partnerLineId);
}
}
//普通线索
private String getCommonTipsFix(Long partnerLineId) {
String interviewTips = "";
//1. 查询需要展示的操作类型最新一条
HyPartnerTaskInfoLogDO lastLog = hyPartnerTaskInfoLogMapper.getLastTipsLog(partnerLineId);
//2. 判断类型并返回对应的tips
OperateTypeEnum operateType = OperateTypeEnum.getOperateTypeEnum(lastLog.getOperateType());
switch (operateType) {
case INTERVIEWER_BOOK_INTERVIEW:
interviewTips = getInterviewTipsFix(lastLog, "通过操作后台于", "主动为客户预约面试时间");
break;
case INTERVIEW_APPOINTMENT:
interviewTips = getInterviewTipsFix(lastLog, "通过合伙人小程序于", "发起预约面试申请");
break;
case MODIFY_INTERVIEW_TIME:
interviewTips = getInterviewTipsFix(lastLog, "", "修改面试预约时间");
break;
case INTERVIEW_APPOINTMENT_AGREEMENT:
interviewTips = getInterviewTipsFix(lastLog, "", "同意面试预约申请");
break;
case AUTO_OPEN_INTERVIEW:
interviewTips = getInterviewTipsFix(lastLog, "面试房间于", "正式开放");
break;
case FINISH_INTERVIEW:
interviewTips = getInterviewTipsFix(lastLog, "", "结束面试");
break;
case QUALIFYVERIFY_PASS:
interviewTips = getInterviewTipsFix(lastLog, "", "审核通过");
break;
case QUALIFYVERIFY_REJECT:
interviewTips = getInterviewTipsFix(lastLog, "", "审核拒绝");
break;
default:
break;
}
return interviewTips;
}
public String getInterviewTipsFix(HyPartnerTaskInfoLogDO lastLog, String middleInfo, String action) {
StringBuilder sb = new StringBuilder();
sb.append(StringUtil.REPLACE_0)
.append(" ")
.append(StringUtil.REPLACE_1)
.append(" ")
.append(middleInfo)
.append(" ")
.append(StringUtil.REPLACE_2)
.append(" ").append(action);
String content = sb.toString();
String fieldCopy = lastLog.getFieldCopy();
List<LogFieldDTO> logFieldDTOS = JSON.parseArray(fieldCopy, LogFieldDTO.class);
List<String> params = new ArrayList<>();
String[] replaceKeys = new String[]{
OperateLogFieldValueEnum.OPERATE_USER_NAME.getCode(),
OperateLogFieldValueEnum.MOBILE.getCode(),
OperateLogFieldValueEnum.OPERATE_TIME.getCode()
};
for (String replaceKey : replaceKeys) {
String value = "";
Optional<LogFieldDTO> logFieldDTOOptional = logFieldDTOS.stream().filter(l -> l.getCode().equals(replaceKey)).findFirst();
if (logFieldDTOOptional.isPresent()) {
value = logFieldDTOOptional.get().getValue();
try {
value = DateUtil.format(DateUtil.parseDateTime(value), "yyyy/MM/dd HH:mm:ss");
} catch (Exception e) {
//异常代表不是时间格式,不做处理
}
}
params.add(value);
}
return MessageFormat.format(content, params.toArray());
}
//普通线索
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, "通过合伙人小程序于", "发起预约面试申请");
}
//该阶段既可能是预约面试提醒的 tip也可能是修改面试时间的 tip按照操作时间先后顺序判断
String interviewTipsOne = getInterviewTips(partnerLineId, OperateTypeEnum.MODIFY_INTERVIEW_TIME, "", "修改面试预约时间");
String interviewTipsTwo = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT, "通过合伙人小程序于", "发起预约面试申请");
String[] tipsOneSplit = interviewTipsOne.split(" ");
String[] tipsTwoSplit = interviewTipsTwo.split(" ");
interviewTips = (tipsOneSplit[3] + tipsOneSplit[4]).compareTo(tipsTwoSplit[3] + tipsTwoSplit[4]) > 0 ? interviewTipsOne : interviewTipsTwo;
//2. 待面试
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_2.getCode())) {
interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT_AGREEMENT, "", "同意了客户的预约面试申请");
String interviewTipsLocal = getInterviewTips(partnerLineId, OperateTypeEnum.INTERVIEW_APPOINTMENT_AGREEMENT, "", "同意了客户的预约面试申请");
if (interviewTipsLocal!= null &&!interviewTipsLocal.isEmpty()) {
interviewTips = interviewTipsLocal;
}
//3. 面试已开始
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_3.getCode())) {
interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.AUTO_OPEN_INTERVIEW, "面试房间于", "正式开放");
interviewTips = interviewTips.trim();
String interviewTipsLocal = getInterviewTips(partnerLineId, OperateTypeEnum.AUTO_OPEN_INTERVIEW, "面试房间于", "正式开放");
if (interviewTipsLocal != null && !interviewTipsLocal.isEmpty()) {
interviewTips = interviewTips.trim();
}
//4. 面试已结束
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_4.getCode())) {
interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "", "结束面试");
String interviewTipsLocal = getInterviewTips(partnerLineId, OperateTypeEnum.FINISH_INTERVIEW, "", "结束面试");
if (interviewTipsLocal!= null &&!interviewTipsLocal.isEmpty()) {
interviewTips = interviewTipsLocal;
}
//5. 发起资质审批
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_5.getCode())) {
interviewTips = getInterviewTips(partnerLineId, OperateTypeEnum.CREATE_QUALIFYVERIFY, "","发起加盟商资质审核");
String interviewTipsLocal = getInterviewTips(partnerLineId, OperateTypeEnum.CREATE_QUALIFYVERIFY, "","发起加盟商资质审核");
if (interviewTipsLocal!= null &&!interviewTipsLocal.isEmpty()) {
interviewTips = interviewTipsLocal;
}
//6. 资质审批通过
} else if (workflowStage.equals(WorkflowStageEnum.INTERVIEW.getCode()) && workflowStatus.equals(WorkflowStatusEnum.INTERVIEW_6.getCode())) {
HyPartnerCertificationInfoDO partnerCertificationInfoDO = hyPartnerCertificationInfoMapper.selectByPartnerLineId(partnerLineId);
@@ -101,7 +191,10 @@ public class CommonServiceImpl implements CommonService {
if(partnerCertificationInfoDO != null){
intentionContractNo = partnerCertificationInfoDO.getIntentionContractNo();
}
interviewTips = getVerifyResultTips(partnerLineId, OperateTypeEnum.QUALIFYVERIFY_PASS, "审核通过 | " + intentionContractNo);
String interviewTipsLocal = getVerifyResultTips(partnerLineId, OperateTypeEnum.QUALIFYVERIFY_PASS, "审核通过 | " + intentionContractNo);
if (interviewTipsLocal!= null &&!interviewTipsLocal.isEmpty()) {
interviewTips = interviewTipsLocal;
}
}
return interviewTips;
}
@@ -117,7 +210,6 @@ public class CommonServiceImpl implements CommonService {
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, "", "发起加盟商资质审核");