修改面试状态同时修改对应子流程状态及根据面试房间状态限制部分面试操作

This commit is contained in:
pserimal
2023-06-25 18:28:29 +08:00
parent be9399d1cb
commit fb6122c961
12 changed files with 180 additions and 19 deletions

View File

@@ -0,0 +1,34 @@
package com.cool.store.dao;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Repository
public class HyInterviewDAO {
@Resource
private HyPartnerInterviewMapper interviewMapper;
@Resource
private HyPartnerLineInfoMapper lineInfoMapper;
/**
* 更新面试状态必须使用该方法
* 需要同步更新面试状态和线索表中的子流程状态
*/
@Transactional
public void updateInterviewWorkflowStatus(String interviewPlanId, WorkflowStatusEnum status) {
//修改面试状态
interviewMapper.updateInterviewStatus(interviewPlanId, status.getCode());
//获取对应的lineId
String lineId = interviewMapper.getLineId(interviewPlanId);
//修改线索表子流程状态
lineInfoMapper.updateWorkflowStatus(lineId, status.getCode());
}
}

View File

@@ -29,4 +29,12 @@ public interface HyPartnerCertificationInfoMapper {
* @return 面试会议 id
*/
String getInterviewIdByQualifyVerifyId(@Param("qualifyVerifyId") String qualifyVerifyId);
/**
* 根据资质审核流程 id 获取面试会议 id
* @param qualifyVerifyId 资质审核流程 id
* @return 面试会议计划 id
*/
String getInterviewPlanIdByQualifyVerifyId(String qualifyVerifyId);
}

View File

@@ -70,4 +70,17 @@ public interface HyPartnerInterviewMapper {
*/
List<HyPartnerInterviewDO> getInterviewBaseInfoList(@Param("record") GetInterviewListReq request);
void batchUpdateInterviewStatus(@Param("interviewIds") List<Long> interviewIdList, @Param("interviewStatus") Integer interviewStatus);
HyPartnerInterviewDO getInterviewInfoByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId);
/**
* 修改面试状态
*/
void updateInterviewStatus(@Param("interviewPlanId") String interviewPlanId, @Param("status") String status);
/**
* 获取面试对应的线索id
*/
String getLineId(@Param("interviewPlanId") String interviewPlanId);
}

View File

@@ -135,4 +135,11 @@ public interface HyPartnerInterviewPlanMapper {
* 修改面试实际开始时间
*/
void updateActualStartTime(@Param("id") Long id, @Param("now") String now);
/**
* 获取面试房间状态
* @param interviewPlanId
*/
Integer getRoomStatus(@Param("interviewPlanId") String interviewPlanId);
}

View File

@@ -208,8 +208,11 @@ public interface HyPartnerLineInfoMapper {
/**
* 根据面试计划 id 查询战区 id
* @param interviewPlanId
* @return
*/
String getAffiliationZoneIdByInterviewPlanId(String interviewPlanId);
/**
* 修改线索状态
*/
void updateWorkflowStatus(@Param("lineId") String lineId, @Param("status") String status);
}

View File

@@ -238,4 +238,16 @@
from hy_partner_certification_info
where qualify_verify_id = #{qualifyVerifyId}
</select>
<!-- 根据资质审核流程 id 获取面试会议计划 id -->
<select id="getInterviewPlanIdByQualifyVerifyId" resultType="java.lang.String">
select interview_plan_id
from hy_partner_interview
where id = (
select partner_interview_id
from hy_partner_certification_info
where qualify_verify_id = #{qualifyVerifyId}
)
and deleted = 0
</select>
</mapper>

View File

@@ -373,7 +373,7 @@
</foreach>
</update>
<!-- 根据 interviewId 获取意向区域 -->
<!-- 根据 interviewId 获取意向区域 -->
<select id="getVerifyCityByInterviewId" resultType="java.lang.String">
SELECT area_path
FROM hy_open_area_info
@@ -411,4 +411,29 @@
</where>
</select>
<!-- 根据面试计划id获取面试信息 -->
<select id="getInterviewInfoByInterviewPlanId" resultType="com.cool.store.entity.HyPartnerInterviewDO">
select
<include refid="Base_Column_List"/>
from
hy_partner_interview
where
interview_plan_id = #{interviewPlanId}
</select>
<!-- 修改面试状态 -->
<update id="updateInterviewStatus">
UPDATE hy_partner_interview
SET status = #{status}
WHERE interview_plan_id = #{interviewPlanId}
</update>
<!-- 获取面试对应的线索id -->
<select id="getLineId" resultType="java.lang.String">
SELECT partner_line_id
FROM hy_partner_interview
WHERE interview_plan_id = #{interviewPlanId}
</select>
</mapper>

View File

@@ -462,4 +462,11 @@
from enterprise_user
where user_id = #{userId}
</select>
<!-- 获取面试房间状态 -->
<select id="getRoomStatus" resultType="java.lang.Integer">
select room_status
from hy_partner_interview_plan
where id = #{interviewPlanId}
</select>
</mapper>

View File

@@ -562,4 +562,21 @@
and partner_id = #{partner_id}
</select>
<!-- 根据面试计划 id 查询战区 id -->
<select id="getAffiliationZoneIdByInterviewPlanId" resultType="java.lang.String">
SELECT affiliation_zone
FROM hy_partner_line_info
WHERE id = (
SELECT partner_line_id
FROM hy_partner_interview_plan
WHERE id = #{interviewPlanId}
)
</select>
<update id="updateWorkflowStatus">
UPDATE hy_partner_line_info
SET workflow_status = #{status}
WHERE id = #{lineId}
</update>
</mapper>

View File

@@ -1,11 +1,11 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.mdm.AccessTokenDTO;
import com.cool.store.dto.response.MDMResultDTO;
import com.cool.store.entity.*;
@@ -81,6 +81,9 @@ public class FlowServiceImpl implements FlowService {
@Autowired
private OSSServer ossServer;
@Autowired
private HyInterviewDAO interviewDAO;
@Override
@Transactional
public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException {
@@ -155,8 +158,9 @@ public class FlowServiceImpl implements FlowService {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
hyPartnerInterviewDO.setUpdateTime(new Date());
//更新
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_5.getCode()));
//更新面试信息
//更新面试状态
interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_5);
hyPartnerInterviewDO.setAuthCode(authCode);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
@@ -177,16 +181,16 @@ public class FlowServiceImpl implements FlowService {
log.error("MDM回调入参缺失request{}", JSON.toJSONString(request));
throw new ServiceException("MDM回调错误");
}
//根据审核流程 id 获取面试会议 id
//根据审核流程 id 获取面试会议相关 id
String interviewId = hyPartnerCertificationInfoMapper.getInterviewIdByQualifyVerifyId(request.getInstanceId());
if (StringUtils.isEmpty(interviewId)) {
String interviewPlanId = hyPartnerCertificationInfoMapper.getInterviewPlanIdByQualifyVerifyId(request.getInstanceId());
if (StringUtils.isEmpty(interviewPlanId)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
HyPartnerInterviewDO interviewDO = new HyPartnerInterviewDO();
interviewDO.setId(Long.parseLong(interviewId));
//审核通过
if ("FINISHED".equals(request.getSequenceStatus())) {
interviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_6.getCode()));
//更新面试状态
interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_6);
//2. 准备需要的信息
String partnerName = request.getIntendedSigner();
String verifyCity = hyPartnerInterviewMapper.getVerifyCityByInterviewId(interviewId);
@@ -207,9 +211,8 @@ public class FlowServiceImpl implements FlowService {
genPassLetterAndUpdateDB(partnerName, verifyCity, passDate, interviewId);
//审核未通过
} else if ("CANCELED".equals(request.getSequenceStatus())) {
interviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_7.getCode()));
interviewDAO.updateInterviewWorkflowStatus(interviewPlanId, WorkflowStatusEnum.INTERVIEW_7);
}
hyPartnerInterviewMapper.updateByPrimaryKeySelective(interviewDO);
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.calendar.*;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.EnterInterviewDto;
@@ -86,6 +87,9 @@ public class InterviewServiceImpl implements InterviewService {
@Autowired
private HyPartnerLineInfoService hyPartnerLineInfoService;
@Autowired
private HyInterviewDAO interviewDAO;
@Override
public List<InterviewVO> getInterviewList(GetInterviewListReq request) {
List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request);
@@ -134,7 +138,11 @@ public class InterviewServiceImpl implements InterviewService {
@Override
@Transactional
public void entrustOthers(EntrustOthersReq request) throws ApiException {
//只有房间状态是待开放才可以委托他人
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
}
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试信息为空,抛出异常
if (interviewInfo == null) {
@@ -188,6 +196,11 @@ public class InterviewServiceImpl implements InterviewService {
*/
@Override
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
//只有房间状态是待开放才可以修改时间
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
}
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试信息为空,抛出异常
if (interviewInfo == null) {
@@ -223,7 +236,8 @@ public class InterviewServiceImpl implements InterviewService {
//更新面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(interviewInfo.getInterviewPlanId()));
hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode()));
interviewDAO.updateInterviewWorkflowStatus(interviewInfo.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_4);
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_4.getCode()));
hyPartnerInterviewDO.setUpdateTime(now);
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
}
@@ -239,10 +253,16 @@ public class InterviewServiceImpl implements InterviewService {
@Transactional
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) {
try {
//如果面试间状态不是已开放,就不让进
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.OPEN.getCode())) {
throw new RuntimeException();
}
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
//1. 将面试状态改为 --> 2已开始
hyPartnerInterviewDO.setStatus(2);
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
//2. 修改加盟商或面试官进入面试时间
//加盟商
if (dto.getUserType().equals(2)) {
@@ -392,7 +412,9 @@ public class InterviewServiceImpl implements InterviewService {
//更新面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId()));
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode()));
//更新面试状态和线索子流程状态
interviewDAO.updateInterviewWorkflowStatus(request.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_2);
// hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode()));
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
@@ -400,7 +422,7 @@ public class InterviewServiceImpl implements InterviewService {
HyPartnerLineInfoDO hyPartnerLineDO = new HyPartnerLineInfoDO();
hyPartnerLineDO.setId(request.getPartnerLineId());
hyPartnerLineDO.setWorkflowStage(WorkflowStageEnum.INTERVIEW.getCode());
hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode());
// hyPartnerLineDO.setWorkflowStatus(WorkflowStatusEnum.INTERVIEW_2.getCode());
hyPartnerLineDO.setUpdateTime(new Date());
hyPartnerLineInfoMapper.updateByPrimaryKeySelective(hyPartnerLineDO);
//异步发送短信给加盟商

View File

@@ -3,6 +3,7 @@ package com.cool.store.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
@@ -39,6 +40,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
@Autowired
private HyPartnerInterviewPlanMapper interviewPlanMapper;
@Autowired
private HyInterviewDAO interviewDAO;
@Value("${trtc.sdkAppId}")
private Long sdkAppId;
@@ -67,10 +71,16 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
@Transactional
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) {
try {
//如果面试间状态不是已开放,就不让进
Integer roomStatus = interviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
if (!roomStatus.equals(RoomStatus.OPEN.getCode())) {
throw new RuntimeException();
}
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
//1. 将面试状态改为 --> 2已开始
hyPartnerInterviewDO.setStatus(2);
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
//2. 修改加盟商或面试官进入面试时间
//加盟商
if (dto.getUserType().equals(2)) {