增加根据线索id查询面试信息接口

This commit is contained in:
俞扬
2023-06-28 18:20:36 +08:00
parent c696b33d65
commit d16331560d
14 changed files with 74 additions and 15 deletions

View File

@@ -35,6 +35,7 @@ public interface HyPartnerInterviewMapper {
* @return * @return
*/ */
PartnerInterviewInfoVO queryByPartnerId(@Param("partnerId") String partnerId); PartnerInterviewInfoVO queryByPartnerId(@Param("partnerId") String partnerId);
PartnerInterviewInfoVO queryByPartnerLineId(@Param("partnerLineId") String partnerLineId);
/** /**
* 根据会议 id 查询面试官 id * 根据会议 id 查询面试官 id

View File

@@ -477,6 +477,14 @@
FROM hy_partner_interview FROM hy_partner_interview
WHERE interview_plan_id = #{interviewPlanId} WHERE interview_plan_id = #{interviewPlanId}
</select> </select>
<select id="queryByPartnerLineId" resultType="com.cool.store.vo.PartnerInterviewInfoVO">
SELECT t1.id interviewId, t1.id interview_id, t2.id as interviewPlanId, `status`, start_time, end_time, room_id, t1.partner_id partnerId, t1.interviewer interviewerId
FROM hy_partner_interview_plan t2
LEFT JOIN hy_partner_interview t1 ON t1.interview_plan_id = t2.id
WHERE t2.partner_line_id = #{partnerLineId}
AND t1.deleted = 0
AND t2.deleted = 0
</select>
<!-- 根据 room_id 添加 process_info --> <!-- 根据 room_id 添加 process_info -->
<update id="addVideoUrl"> <update id="addVideoUrl">

View File

@@ -0,0 +1,12 @@
package com.cool.store.dto.partner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class LineQueryInterviewDto {
@ApiModelProperty("加盟商线索id")
private String partnerLineId;
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.exception.ApiException;
import com.cool.store.vo.InterviewDetailInfoVO; import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerInterviewInfoVO;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@@ -46,7 +47,7 @@ public interface HyPartnerInterviewPlanService {
* updateInterviewOverTime * updateInterviewOverTime
* @return * @return
*/ */
void updateInterviewOverTime(); void updateInterviewOverTime() throws ApiException;
/** /**
* 批量打开十分钟之内开始的面试房间 * 批量打开十分钟之内开始的面试房间
@@ -60,5 +61,5 @@ public interface HyPartnerInterviewPlanService {
* updateInterviewOverTime * updateInterviewOverTime
* @return * @return
*/ */
void updateAbsentInterview(); void updateAbsentInterview() throws ApiException;
} }

View File

@@ -100,7 +100,7 @@ public interface HyPartnerLineInfoService {
* @param closeFollowRequest * @param closeFollowRequest
* @return * @return
*/ */
Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest); Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException;
/** /**
* 公海线索 * 公海线索

View File

@@ -1,6 +1,7 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.dto.partner.LineQueryInterviewDto;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
import com.cool.store.request.ModifyInterviewTimeReq; import com.cool.store.request.ModifyInterviewTimeReq;
import com.cool.store.vo.EnterInterviewVO; import com.cool.store.vo.EnterInterviewVO;
@@ -16,6 +17,8 @@ public interface PartnerInterviewService {
*/ */
PartnerInterviewInfoVO queryByPartnerId(String partnerId); PartnerInterviewInfoVO queryByPartnerId(String partnerId);
PartnerInterviewInfoVO queryByPartnerLineId(LineQueryInterviewDto request) throws ApiException;
/** /**
* 进入面试间的方法 * 进入面试间的方法
* 修改一些面试状态 * 修改一些面试状态
@@ -35,4 +38,6 @@ public interface PartnerInterviewService {
*/ */
void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException; void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException;
} }

View File

@@ -18,7 +18,7 @@ public interface WorkFlowService {
* @param workflowStage * @param workflowStage
* @param request * @param request
*/ */
void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request); void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) throws ApiException;
/** /**
* 转让招商经理 * 转让招商经理

View File

@@ -8,6 +8,7 @@ import com.cool.store.entity.*;
import com.cool.store.enums.RoomStatus; import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.mapper.HyPartnerInterviewMapper; import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper; import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper; import com.cool.store.mapper.HyPartnerLineInfoMapper;
@@ -170,7 +171,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
@Override @Override
@Transactional @Transactional
public void updateInterviewOverTime() { public void updateInterviewOverTime() throws ApiException {
List<HyPartnerLineInfoDO> overTimeReserveLineList = hyPartnerLineInfoMapper.getOverTimeReserveLineList(new Date(), WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode()); List<HyPartnerLineInfoDO> overTimeReserveLineList = hyPartnerLineInfoMapper.getOverTimeReserveLineList(new Date(), WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode());
if(CollectionUtils.isEmpty(overTimeReserveLineList)){ if(CollectionUtils.isEmpty(overTimeReserveLineList)){
return; return;
@@ -201,7 +202,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
@Override @Override
@Transactional @Transactional
public void updateAbsentInterview() { public void updateAbsentInterview() throws ApiException {
Date now = new Date(); Date now = new Date();
//查询当天未参加的面试 //查询当天未参加的面试
String startTime = DateUtil.formatDateTime(DateUtil.offsetHour(now,-6)); String startTime = DateUtil.formatDateTime(DateUtil.offsetHour(now,-6));
@@ -223,7 +224,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
* @param interviewBaseInfoList * @param interviewBaseInfoList
* @param rejectPublicReason * @param rejectPublicReason
*/ */
public void handleOverTimeInterview(List<HyPartnerInterviewDO> interviewBaseInfoList,String rejectPublicReason){ public void handleOverTimeInterview(List<HyPartnerInterviewDO> interviewBaseInfoList,String rejectPublicReason) throws ApiException {
//1.更新面试信息表中超时的面试信息 //1.更新面试信息表中超时的面试信息
List<Long> interviewIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getId).distinct().collect(Collectors.toList()); List<Long> interviewIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getId).distinct().collect(Collectors.toList());
hyPartnerInterviewMapper.batchUpdateInterviewStatus(interviewIds,Integer.valueOf(WorkflowStatusEnum.RESERVATION_8.getCode()),1); hyPartnerInterviewMapper.batchUpdateInterviewStatus(interviewIds,Integer.valueOf(WorkflowStatusEnum.RESERVATION_8.getCode()),1);

View File

@@ -318,7 +318,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) { public Boolean closeOrPassFollow(LoginUserInfo user,CloseFollowRequest closeFollowRequest) throws ApiException {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId()); HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(closeFollowRequest.getLineId());
if (hyPartnerLineInfoDO==null){ if (hyPartnerLineInfoDO==null){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);

View File

@@ -7,6 +7,7 @@ import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dao.HyInterviewDAO; import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.log.ModifyInterviewTimeDTO; import com.cool.store.dto.log.ModifyInterviewTimeDTO;
import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.dto.partner.LineQueryInterviewDto;
import com.cool.store.entity.HyPartnerInterviewDO; import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.entity.HyPartnerInterviewPlanDO; import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
@@ -68,6 +69,11 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
return interviewMapper.queryByPartnerId(partnerId); return interviewMapper.queryByPartnerId(partnerId);
} }
@Override
public PartnerInterviewInfoVO queryByPartnerLineId(LineQueryInterviewDto request) throws ApiException {
return interviewMapper.queryByPartnerLineId(request.getPartnerLineId());
}
/** /**
* 进入面试间的方法 * 进入面试间的方法
* 修改一些面试状态 * 修改一些面试状态

View File

@@ -35,7 +35,7 @@ public class WorkFlowServiceImpl implements WorkFlowService{
@Override @Override
public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) { public void endProcess(WorkflowStageEnum workflowStage, CloseFollowRequest request) throws ApiException {
getWorkflowService(workflowStage).endProcess(request); getWorkflowService(workflowStage).endProcess(request);
} }

View File

@@ -24,6 +24,7 @@ import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.interview.InterviewVO; import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -61,7 +62,7 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
} }
@Override @Override
public void endProcess(CloseFollowRequest request) throws ServiceException{ public void endProcess(CloseFollowRequest request) throws ApiException {
Long lineId = request.getLineId(); Long lineId = request.getLineId();
//根据线索id查询面试信息 //根据线索id查询面试信息
List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId)); List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId));
@@ -69,6 +70,22 @@ public class InterviewWorkFlowService extends WorkFlowBaseService {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST); throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
} }
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0); HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId()));
if(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_2.getCode()) == interviewBaseInfo.getStatus()
&& StringUtils.isNotEmpty(interviewInfo.getRoomStatus())
&& String.valueOf(RoomStatus.WAIT_FOR_OPEN.getCode()).equals(interviewInfo.getRoomStatus())
&& StringUtils.isNotEmpty(interviewInfo.getFeishuCalendarId())
&& StringUtils.isNotEmpty(interviewInfo.getFeishuScheduleId())){
// 原面试官日程删除
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);
}
}
interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null); interviewService.rejectInterviewAndSuspendLine(interviewBaseInfo.getId(),interviewBaseInfo.getInterviewPlanId(),null);
//记录日志 //记录日志
LoginUserInfo operator = CurrentUserHolder.getUser(); LoginUserInfo operator = CurrentUserHolder.getUser();

View File

@@ -23,7 +23,7 @@ public abstract class WorkFlowBaseService {
* 结束流程 * 结束流程
* @param request * @param request
*/ */
public abstract void endProcess(CloseFollowRequest request); public abstract void endProcess(CloseFollowRequest request) throws ApiException;
/** /**
* 转让招商经理 * 转让招商经理

View File

@@ -1,6 +1,7 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.cool.store.dto.partner.EnterInterviewDto; import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.dto.partner.LineQueryInterviewDto;
import com.cool.store.dto.partner.PartnerGetPassLetterDetailDto; import com.cool.store.dto.partner.PartnerGetPassLetterDetailDto;
import com.cool.store.dto.partner.PartnerQueryInterviewDto; import com.cool.store.dto.partner.PartnerQueryInterviewDto;
import com.cool.store.exception.ApiException; import com.cool.store.exception.ApiException;
@@ -30,12 +31,19 @@ public class InterviewController {
@Autowired @Autowired
private InterviewService interviewBaseService; private InterviewService interviewBaseService;
@PostMapping("/queryByPartnerId") // @PostMapping("/queryByPartnerId")
@ApiOperation("根据用户id查询面试信息") // @ApiOperation("根据用户id查询面试信息")
public ResponseResult<PartnerInterviewInfoVO> queryByPartnerId(@RequestBody PartnerQueryInterviewDto dto) { // public ResponseResult<PartnerInterviewInfoVO> queryByPartnerId(@RequestBody PartnerQueryInterviewDto dto) {
return ResponseResult.success(interviewService.queryByPartnerId(dto.getPartnerId())); // return ResponseResult.success(interviewService.queryByPartnerId(dto.getPartnerId()));
// }
@PostMapping("/queryByPartnerLineId")
@ApiOperation("根据线索id查询面试信息")
public ResponseResult<PartnerInterviewInfoVO> queryByPartnerLineId(@RequestBody LineQueryInterviewDto dto) throws ApiException {
return ResponseResult.success(interviewService.queryByPartnerLineId(dto));
} }
@PostMapping("/enter") @PostMapping("/enter")
@ApiOperation("进入面试间") @ApiOperation("进入面试间")
public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) throws ApiException { public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) throws ApiException {