@@ -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 , p artnerLineId) ;
return getCommonTipsFix ( Long . parseLong ( request . getP artnerLineId( ) ) );
} 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 , " 于 " , " 发起加盟商资质审核 " ) ;