Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
zhangchenbiao
2023-06-27 16:14:52 +08:00
24 changed files with 205 additions and 83 deletions

View File

@@ -1,6 +1,12 @@
package com.cool.store.enums; package com.cool.store.enums;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @Author suzhuhong * @Author suzhuhong
@@ -44,4 +50,13 @@ public enum WorkflowStageEnum {
return message; return message;
} }
protected static final Map<String, WorkflowStageEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(WorkflowStageEnum::getCode, Function.identity()));
public static WorkflowStageEnum getWorkflowStageByCode(String code) {
if(StringUtils.isBlank(code)) {
return null;
}
return map.get(code);
}
} }

View File

@@ -153,4 +153,6 @@ public interface HyPartnerInterviewPlanMapper {
*/ */
HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId); HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId);
HyPartnerInterviewPlanDO getInterviewPlanByLineId(Long lineId);
} }

View File

@@ -270,7 +270,7 @@
<select id="getInterviewCount" resultType="com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO"> <select id="getInterviewCount" resultType="com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO">
select select
ifnull(sum(if(start_time>now() or (start_time<![CDATA[<]]>now() and room_status!=2),1,0)),0) as currentDayInterviewCount, ifnull(sum(if(interview_date = #{currentDate} and (start_time>now() or (start_time <![CDATA[<]]> now() and room_status!=2)),1,0)),0) as currentDayInterviewCount,
ifnull(sum(if(start_time>#{startTime} and end_time <![CDATA[<]]> #{endTime},1,0)),0) as lastSevenDayInterviewCount ifnull(sum(if(start_time>#{startTime} and end_time <![CDATA[<]]> #{endTime},1,0)),0) as lastSevenDayInterviewCount
FROM hy_partner_interview_plan FROM hy_partner_interview_plan
where interviewer = #{userId} where interviewer = #{userId}
@@ -401,7 +401,9 @@
hpip.interviewer as interviewerId, hpip.interviewer as interviewerId,
hpip.feishu_calendar_id as feishuCalendarId, hpip.feishu_calendar_id as feishuCalendarId,
hpip.feishu_schedule_id as feishuScheduleId, hpip.feishu_schedule_id as feishuScheduleId,
hpi.status as status hpi.status as status,
hpip.actual_start_time actualStartTime,
hpip.actual_end_time actualEndTime
from hy_partner_interview_plan hpip from hy_partner_interview_plan hpip
left join hy_partner_line_info hpll on hpip.partner_line_id = hpll.id left join hy_partner_line_info hpll on hpip.partner_line_id = hpll.id
left join hy_partner_user_info hpui on hpui.partner_id = hpip.partner_id left join hy_partner_user_info hpui on hpui.partner_id = hpip.partner_id
@@ -482,4 +484,9 @@
from hy_partner_interview_plan from hy_partner_interview_plan
where id = #{interviewPlanId} where id = #{interviewPlanId}
</select> </select>
<select id="getInterviewPlanByLineId" resultType="com.cool.store.entity.HyPartnerInterviewPlanDO">
select <include refid="Base_Column_List"></include>
from hy_partner_interview_plan
where partner_line_id = #{lineId} and deleted = 0
</select>
</mapper> </mapper>

View File

@@ -307,10 +307,12 @@
hpuinfo.want_shop_area as wantShopArea, hpuinfo.want_shop_area as wantShopArea,
hpuinfo.accept_adjust_type as acceptAdjustType, hpuinfo.accept_adjust_type as acceptAdjustType,
hpuinfo.mobile as partnerUserPhone, hpuinfo.mobile as partnerUserPhone,
hpuinfo.username as partnerUserName hpuinfo.username as partnerUserName,
hpuc.channel_name as channelName
from hy_partner_line_info a from hy_partner_line_info a
left join hy_partner_base_info b on a.id = b.partner_line_id left join hy_partner_base_info b on a.id = b.partner_line_id
LEFT JOIN hy_partner_user_info hpuinfo ON a.partner_id = hpuinfo.partner_id LEFT JOIN hy_partner_user_info hpuinfo ON a.partner_id = hpuinfo.partner_id
LEFT JOIN hy_partner_user_channel hpuc ON a.user_channel_id = hpuc.channel_id
<where> <where>
<if test="lineId!=null"> <if test="lineId!=null">
and a.id = #{lineId} and a.id = #{lineId}

View File

@@ -76,4 +76,6 @@ public class PartnerLineInfoAndBaseInfoDTO {
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType; private Integer acceptAdjustType;
private String channelName;
} }

View File

@@ -56,7 +56,7 @@ public class PartnerIntentApplyInfoVO {
private String deadline; private String deadline;
@ApiModelProperty("阶段提交时间") @ApiModelProperty("阶段提交时间")
private Date partnerSubmitTime; private String partnerSubmitTime;
@ApiModelProperty("阶段状态") @ApiModelProperty("阶段状态")
private String WorkflowStatus; private String WorkflowStatus;
@@ -72,7 +72,7 @@ public class PartnerIntentApplyInfoVO {
partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId()); partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId());
partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId()); partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setLineId(partnerIntentApplyInfoDTO.getPartnerLineId()); partnerIntentApplyInfoVO.setLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime()); partnerIntentApplyInfoVO.setPartnerSubmitTime( DateUtil.format(partnerIntentApplyInfoDTO.getPartnerSubmitTime(), CoolDateUtils.DATE_FORMAT_SEC));
partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType()); partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType());
partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea()); partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea());
partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea()); partnerIntentApplyInfoVO.setWantShopArea(partnerIntentApplyInfoDTO.getWantShopArea());

View File

@@ -31,7 +31,7 @@ public class PartnerInterviewInfoVO {
private String endTime; private String endTime;
@ApiModelProperty("截止时间") @ApiModelProperty("截止时间")
private Date deadline; private String deadline;
@ApiModelProperty("房间号") @ApiModelProperty("房间号")
private String roomId; private String roomId;
@@ -70,5 +70,5 @@ public class PartnerInterviewInfoVO {
private String authCode; private String authCode;
@ApiModelProperty("审批发起时间") @ApiModelProperty("审批发起时间")
private Date approveTime; private String approveTime;
} }

View File

@@ -83,4 +83,7 @@ public class PartnerLineInfoAndBaseInfoVO {
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂") @ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType; private Integer acceptAdjustType;
@ApiModelProperty("线索来源名称")
private String channelName;
} }

View File

@@ -82,6 +82,12 @@ public class InterviewVO {
@ApiModelProperty(value = "会议结束时间", required = true, example = "2023-06-03 12:00") @ApiModelProperty(value = "会议结束时间", required = true, example = "2023-06-03 12:00")
private String endTime; private String endTime;
@ApiModelProperty(value = "面试实际开始时间", required = true, example = "2023-06-03 12:00")
private String actualStartTime;
@ApiModelProperty(value = "面试实际结束时间", required = true, example = "2023-06-03 12:00")
private String actualEndTime;
@ApiModelProperty(value = "预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝", required = true) @ApiModelProperty(value = "预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝", required = true)
private Integer status; private Integer status;

View File

@@ -63,7 +63,9 @@ public interface InterviewService {
*/ */
void approveAppointment(ApproveAppointmentReq request) throws ApiException; void approveAppointment(ApproveAppointmentReq request) throws ApiException;
void reInterview(ReInterviewReq 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 String getInterviewerByPartner(String partnerId,String lineId)throws ApiException;
public void rejectInterviewAndSuspendLine(Long iterviewId,Long interviewPlanId,String certifyFile);
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
@@ -18,4 +19,11 @@ public interface WorkFlowService {
*/ */
void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request); void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request);
/**
* 转让招商经理
* @param workflowStage
* @param request
*/
void transferInvestmentManager(WorkflowStageEnum workflowStage,TransferInvestmentManagerRequest request);
} }

View File

@@ -81,7 +81,7 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
} }
//转交 所有的招商经理 //转交 所有的招商经理
if (CommonConstants.TRANSFER.equals(type)){ if (CommonConstants.TRANSFER.equals(type)){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(regionList), keyword, null); enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(list), keyword, null);
} }
return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS); return EnterpriseUserSingleInfoVO.convertVO(enterpriseUserDOS);
} }

View File

@@ -113,7 +113,7 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
HyPartnerTaskInfoLogDO logDO = new HyPartnerTaskInfoLogDO(request.getPartnerId(), request.getPartnerLineId(), WorkflowStageEnum.INTENT.getCode(), WorkflowStatusEnum.INTENT_1.getCode(), currentUser.getPartnerId(), currentUser.getUsername(), null); HyPartnerTaskInfoLogDO logDO = new HyPartnerTaskInfoLogDO(request.getPartnerId(), request.getPartnerLineId(), WorkflowStageEnum.INTENT.getCode(), WorkflowStatusEnum.INTENT_1.getCode(), currentUser.getPartnerId(), currentUser.getUsername(), null);
hyPartnerTaskInfoLogDAO.insertSelective(logDO); // hyPartnerTaskInfoLogDAO.insertSelective(logDO);
} }
// 清空暂存信息 // 清空暂存信息
redisUtilPool.delKey(cacheKey); redisUtilPool.delKey(cacheKey);

View File

@@ -269,12 +269,12 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo()); partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());
partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId()); partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId());
partnerInterviewInfoVO.setDeadline(partnerInterviewInfoDTO.getDeadline()); partnerInterviewInfoVO.setDeadline(DateUtil.format(partnerInterviewInfoDTO.getDeadline(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus()); partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus());
partnerInterviewInfoVO.setAuthCode(partnerInterviewInfoDTO.getAuthCode()); partnerInterviewInfoVO.setAuthCode(partnerInterviewInfoDTO.getAuthCode());
partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC)); partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setApproveTime(partnerInterviewInfoDTO.getApproveTime()); partnerInterviewInfoVO.setApproveTime(DateUtil.format(partnerInterviewInfoDTO.getApproveTime(),CoolDateUtils.DATE_FORMAT_SEC));
return partnerInterviewInfoVO; return partnerInterviewInfoVO;
} }

View File

@@ -16,11 +16,7 @@ import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest; import com.cool.store.request.LineRequest;
import com.cool.store.request.PrivateSeaLineListRequest; import com.cool.store.request.PrivateSeaLineListRequest;
import com.cool.store.request.QueryByInterviewPlanIdReq; import com.cool.store.request.QueryByInterviewPlanIdReq;
import com.cool.store.service.AliyunService; import com.cool.store.service.*;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.HyPartnerBaseInfoService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.service.InterviewService;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.StringUtil; import com.cool.store.utils.StringUtil;
@@ -31,6 +27,7 @@ import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.sql.Array; import java.sql.Array;
@@ -72,6 +69,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO; HyPartnerInterviewPlanDAO hyPartnerInterviewPlanDAO;
@Resource @Resource
private HyPartnerBaseInfoService hyPartnerBaseInfoService; private HyPartnerBaseInfoService hyPartnerBaseInfoService;
@Resource
WorkFlowService workFlowService;
@Override @Override
@@ -252,6 +251,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) { public Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId()); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
if (hyPartnerLineInfoDO==null){ if (hyPartnerLineInfoDO==null){
@@ -282,7 +282,6 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage()); String workflowStatus = WorkflowStageEnum.getWorkflowStageMap().get(hyPartnerLineInfoDO.getWorkflowStage());
hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus); hyPartnerLineInfoDO.setWorkflowStatus(workflowStatus);
//15天 冷静期 //15天 冷静期
// TODO: 2023/6/13 冷静期
String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId()); String coolingPeriodFirstLoginCacheKey = MessageFormat.format(RedisConstant.COOLINGPERIOD_FIRSTLOGIN_KEY, closeFollowRequest.getLineId());
redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest)); redisUtilPool.setString(coolingPeriodFirstLoginCacheKey,JSONObject.toJSONString(closeFollowRequest));
hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15)); hyPartnerLineInfoDO.setDeadline(CoolDateUtils.getDateBefore(new Date(),15));
@@ -294,6 +293,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode()); hyPartnerLineInfoDO.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
hyPartnerLineInfoDO.setCloseTime(new Date()); hyPartnerLineInfoDO.setCloseTime(new Date());
hyPartnerLineInfoDO.setCloseUserId(userId); hyPartnerLineInfoDO.setCloseUserId(userId);
//各阶段单独的逻辑
workFlowService.endProcess(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),closeFollowRequest);
} }
//面试超时 //面试超时
@@ -566,7 +567,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(lineId);
// 15天之后可以继续填写意向信息把之前的线索删除 // 15天之后可以继续填写意向信息把之前的线索删除
if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null && if(hyPartnerLineInfoDO != null && hyPartnerLineInfoDO.getDeadline() != null &&
hyPartnerLineInfoDO.getDeadline().before(new Date())){ DateUtil.offsetSecond(hyPartnerLineInfoDO.getDeadline(), -1).before(new Date())){
//将老的线索置为删除状态 //将老的线索置为删除状态
hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId())); hyPartnerLineInfoDAO.batchDeleted(Collections.singletonList(hyPartnerLineInfoDO.getId()));
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId()); HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
@@ -628,6 +629,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType()); partnerLineInfoAndBaseInfoVO.setAcceptAdjustType(partnerLineInfoAndBaseInfoDTO.getAcceptAdjustType());
partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea()); partnerLineInfoAndBaseInfoVO.setWantShopArea(partnerLineInfoAndBaseInfoDTO.getWantShopArea());
partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea()); partnerLineInfoAndBaseInfoVO.setLiveArea(partnerLineInfoAndBaseInfoDTO.getLiveArea());
partnerLineInfoAndBaseInfoVO.setChannelName(partnerLineInfoAndBaseInfoDTO.getChannelName());
if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){ if (StringUtil.isNotEmpty(partnerLineInfoAndBaseInfoDTO.getCertifyFile())){
partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class)); partnerLineInfoAndBaseInfoVO.setPassCertifyFile(JSONObject.parseArray(partnerLineInfoAndBaseInfoDTO.getCertifyFile(), String.class));
} }

View File

@@ -191,17 +191,17 @@ public class InterviewServiceImpl implements InterviewService {
} }
/** /**
* PC端修改面试时间目前和小程序端逻辑一致,后续可能扩展 * PC端修改面试时间和小程序端逻辑一致,PC端修改需要修改日程信息
* @param request * @param request
* @throws ApiException * @throws ApiException
*/ */
@Override @Override
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException { public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
//只有房间状态是待开放才可以修改时间 //只有房间状态是待开放才可以修改时间
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId()); // Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) { // if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); // throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
} // }
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试信息为空,抛出异常 //如果面试信息为空,抛出异常
if (interviewInfo == null) { if (interviewInfo == null) {
@@ -210,12 +210,41 @@ public class InterviewServiceImpl implements InterviewService {
if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){ if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR); 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(); HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
record.setId(Long.valueOf(request.getInterviewPlanId())); record.setId(Long.valueOf(request.getInterviewPlanId()));
record.setStartTime(Convert.toDate(request.getNewStartBookingTime())); record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
record.setEndTime(Convert.toDate(request.getNewEndBookingTime())); record.setEndTime(Convert.toDate(request.getNewEndBookingTime()));
record.setUpdateTime(new Date()); record.setUpdateTime(new Date());
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record); 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 @Override
@@ -461,64 +490,38 @@ public class InterviewServiceImpl implements InterviewService {
if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
} }
//更新面试信息 rejectInterviewAndSuspendLine(Long.parseLong(interviewVO.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile());
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);
//更新线索状态 //更新线索状态
HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO(); HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO();
hyPartnerLineDO.setId(Long.valueOf(request.getInterviewPlanId())); hyPartnerLineDO.setId(interviewVO.getPartnerLineId());
hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode()); hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.RESERVATION.getCode());
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode()); hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.RESERVATION_0.getCode());
hyPartnerLineDO.setUpdateTime(new Date()); hyPartnerLineDO.setUpdateTime(new Date());
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO); hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO);
} }
@Override // @Override
@Transactional // @Transactional
public void rejectInterview(RejectInterviewReq request) throws ApiException { // public void rejectInterview(RejectInterviewReq request) throws ApiException {
//查询面试计划信息 //查询面试计划信息
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId()); // InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试计划不存在,抛出异常 // //如果面试计划不存在,抛出异常
if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) { // if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST); // throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
} // }
//更新面试信息 //
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO(); // rejectInterviewAndSuspendLine(Long.parseLong(request.getInterviewId()),Long.parseLong(request.getInterviewPlanId()),request.getCertifyFile())
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId())); // //更新线索状态
hyPartnerInterviewDO.setDeleted(true); // CloseFollowRequest closeFollowRequest = new CloseFollowRequest();
hyPartnerInterviewDO.setUpdateTime(new Date()); // closeFollowRequest.setRejectPublicReason(request.getRejectPublicReason());
hyPartnerInterviewDO.setCertifyFile(request.getCertifyFile()); // closeFollowRequest.setRejectRealReason(request.getRejectRealReason());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO); // closeFollowRequest.setLineId(Long.valueOf(request.getLineId()));
//更新面试计划信息 // closeFollowRequest.setType("reject");
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO(); // if(StringUtils.isNotEmpty(request.getCertifyFile())){
hyPartnerInterviewPlanDO.setId(Long.valueOf(request.getInterviewPlanId())); // closeFollowRequest.setCertifyFile(Arrays.asList(request.getCertifyFile().split(",")));
hyPartnerInterviewPlanDO.setDeleted(true); // }
hyPartnerInterviewPlanDO.setUpdateTime(new Date()); // hyPartnerLineInfoService.closeOrPassFollow(request.getOperatorId(),closeFollowRequest);
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);
}
public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){ public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){
//"您有一个【面试预约申请】待处理预约人【姓名】手机号【13xxxxxxxxx】预约面试时间【YYYY年MM月DD日 hh:mm】请及时处理】" //"您有一个【面试预约申请】待处理预约人【姓名】手机号【13xxxxxxxxx】预约面试时间【YYYY年MM月DD日 hh:mm】请及时处理】"
@@ -556,4 +559,24 @@ public class InterviewServiceImpl implements InterviewService {
return "意向 "+partnerBaseInfo.getUsername()+" 线上面试"; 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);
}
} }

View File

@@ -101,7 +101,6 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
// hyPartnerUserInfoDO.setUsername(phoneInfoDTO.getPhoneInfo().getPhoneNumber()); // hyPartnerUserInfoDO.setUsername(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID()); hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID());
hyPartnerUserInfoDO.setAcceptAdjustType(0);
hyPartnerUserInfoDO.setIsWritePartnerKnow(0); hyPartnerUserInfoDO.setIsWritePartnerKnow(0);
hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO); hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO);
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.WorkFlowService; import com.cool.store.service.WorkFlowService;
import com.cool.store.service.impl.workflow.IntentWorkFlowService; import com.cool.store.service.impl.workflow.IntentWorkFlowService;
import com.cool.store.service.impl.workflow.InterviewWorkFlowService; import com.cool.store.service.impl.workflow.InterviewWorkFlowService;
@@ -18,7 +19,6 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class WorkFlowServiceImpl implements WorkFlowService{ public class WorkFlowServiceImpl implements WorkFlowService{
private WorkFlowBaseService getWorkflowService(WorkflowStageEnum workflowStage){ private WorkFlowBaseService getWorkflowService(WorkflowStageEnum workflowStage){
switch (workflowStage){ switch (workflowStage){
case INTENT: case INTENT:
@@ -32,8 +32,14 @@ public class WorkFlowServiceImpl implements WorkFlowService{
} }
} }
@Override @Override
public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) { public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) {
getWorkflowService(workflowStage).endProcess(request); getWorkflowService(workflowStage).endProcess(request);
} }
@Override
public void transferInvestmentManager(WorkflowStageEnum workflowStage, TransferInvestmentManagerRequest request) {
getWorkflowService(workflowStage).transferInvestmentManager(request);
}
} }

View File

@@ -2,7 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.service.impl.WorkFlowServiceImpl; import com.cool.store.request.TransferInvestmentManagerRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -25,4 +25,9 @@ public class IntentWorkFlowService extends WorkFlowBaseService {
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("意向申请结束~"); log.info("意向申请结束~");
} }
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
}
} }

View File

@@ -1,10 +1,18 @@
package com.cool.store.service.impl.workflow; package com.cool.store.service.impl.workflow;
import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import com.cool.store.service.InterviewService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
* @FileName: InterviewWorkFlowService * @FileName: InterviewWorkFlowService
@@ -15,6 +23,11 @@ import org.springframework.stereotype.Service;
@Service @Service
public class InterviewWorkFlowService extends WorkFlowBaseService { public class InterviewWorkFlowService extends WorkFlowBaseService {
@Autowired
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
@Autowired
private InterviewService interviewService;
@Override @Override
public WorkflowStageEnum getWorkFlowStage() { public WorkflowStageEnum getWorkFlowStage() {
return WorkflowStageEnum.RESERVATION; return WorkflowStageEnum.RESERVATION;
@@ -22,6 +35,18 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
@Override @Override
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("面试结束~"); Long lineId = request.getLineId();
//根据线索id查询面试信息
List<HyPartnerInterviewDO> 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);
}
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
} }
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -24,4 +25,9 @@ public class ReservationWorkFlowService extends WorkFlowBaseService {
public void endProcess(CloseFollowRequest request) { public void endProcess(CloseFollowRequest request) {
log.info("预约面试结束~"); log.info("预约面试结束~");
} }
@Override
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
log.info("转让招商经理~");
}
} }

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl.workflow;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.TransferInvestmentManagerRequest;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
@@ -22,4 +23,10 @@ public abstract class WorkFlowBaseService {
* @param request * @param request
*/ */
public abstract void endProcess(CloseFollowRequest request); public abstract void endProcess(CloseFollowRequest request);
/**
* 转让招商经理
* @param request
*/
public abstract void transferInvestmentManager(TransferInvestmentManagerRequest request);
} }

View File

@@ -88,10 +88,10 @@ public class InterviewController {
return ResponseResult.success(); return ResponseResult.success();
} }
@PostMapping("/reject") // @PostMapping("/reject")
@ApiOperation("拒绝面试") // @ApiOperation("拒绝面试")
public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException { // public ResponseResult reInterview(@RequestBody RejectInterviewReq request) throws ApiException {
interviewService.rejectInterview(request); // interviewService.rejectInterview(request);
return ResponseResult.success(); // return ResponseResult.success();
} // }
} }

View File

@@ -29,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**