进入面试间增加根据面试状态和时间校验和修改面试信息
This commit is contained in:
@@ -83,4 +83,10 @@ public interface HyPartnerInterviewMapper {
|
|||||||
*/
|
*/
|
||||||
String getLineId(@Param("interviewPlanId") String interviewPlanId);
|
String getLineId(@Param("interviewPlanId") String interviewPlanId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取面试流程状态
|
||||||
|
* @param interviewPlanId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getStatus(String interviewPlanId);
|
||||||
}
|
}
|
||||||
@@ -142,4 +142,15 @@ public interface HyPartnerInterviewPlanMapper {
|
|||||||
*/
|
*/
|
||||||
Integer getRoomStatus(@Param("interviewPlanId") String interviewPlanId);
|
Integer getRoomStatus(@Param("interviewPlanId") String interviewPlanId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取面试开始时间
|
||||||
|
*/
|
||||||
|
String getInterviewStartTime(String interviewPlanId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据面试计划id获取面试计划信息
|
||||||
|
* @param interviewPlanId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
HyPartnerInterviewPlanDO getInterviewPlanById(String interviewPlanId);
|
||||||
}
|
}
|
||||||
@@ -436,4 +436,11 @@
|
|||||||
WHERE interview_plan_id = #{interviewPlanId}
|
WHERE interview_plan_id = #{interviewPlanId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 获取面试流程状态 -->
|
||||||
|
<select id="getStatus" resultType="java.lang.String">
|
||||||
|
SELECT status
|
||||||
|
FROM hy_partner_interview
|
||||||
|
WHERE interview_plan_id = #{interviewPlanId}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -465,4 +465,18 @@
|
|||||||
from hy_partner_interview_plan
|
from hy_partner_interview_plan
|
||||||
where id = #{interviewPlanId}
|
where id = #{interviewPlanId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 获取面试开始时间 -->
|
||||||
|
<select id="getInterviewStartTime" resultType="java.lang.String">
|
||||||
|
select start_time
|
||||||
|
from hy_partner_interview_plan
|
||||||
|
where id = #{interviewPlanId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 根据id获取面试计划信息 -->
|
||||||
|
<select id="getInterviewPlanById" resultType="com.cool.store.entity.HyPartnerInterviewPlanDO">
|
||||||
|
select <include refid="Base_Column_List"></include>
|
||||||
|
from hy_partner_interview_plan
|
||||||
|
where id = #{interviewPlanId}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -47,7 +47,7 @@ public interface InterviewService {
|
|||||||
* 最后返回 userSign 用于进入腾讯云音视频房间
|
* 最后返回 userSign 用于进入腾讯云音视频房间
|
||||||
* @return userSign 进入视频所需签名
|
* @return userSign 进入视频所需签名
|
||||||
*/
|
*/
|
||||||
EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto);
|
EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) throws ApiException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建面试预约信息
|
* 创建面试预约信息
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public interface PartnerInterviewService {
|
|||||||
* 最后返回 userSign 用于进入腾讯云音视频房间
|
* 最后返回 userSign 用于进入腾讯云音视频房间
|
||||||
* @return userSign 进入视频所需签名
|
* @return userSign 进入视频所需签名
|
||||||
*/
|
*/
|
||||||
EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto);
|
EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) throws ApiException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取通知函详情
|
* 获取通知函详情
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.cool.store.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@@ -251,18 +253,33 @@ public class InterviewServiceImpl implements InterviewService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) {
|
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) throws ApiException {
|
||||||
try {
|
try {
|
||||||
//如果面试间状态不是已开放,就不让进
|
//房间状态
|
||||||
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
|
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
|
||||||
if (!roomStatus.equals(RoomStatus.OPEN.getCode())) {
|
//面试流程状态
|
||||||
throw new RuntimeException();
|
String status = hyPartnerInterviewMapper.getStatus(dto.getInterviewPlanId());
|
||||||
|
//如果面试间状态是 0 待开放或者面试流程状态是 2 待面试,就不让进
|
||||||
|
//再判断时间是否是正确的时间
|
||||||
|
if (roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode()) || WorkflowStatusEnum.INTERVIEW_2.getCode().equals(status)) {
|
||||||
|
HyPartnerInterviewPlanDO interviewPlan = hyPartnerInterviewPlanMapper.getInterviewPlanById(dto.getInterviewPlanId());
|
||||||
|
//面试预期开始时间
|
||||||
|
DateTime exceptTime = DateUtil.offsetMinute(interviewPlan.getStartTime(), -5);
|
||||||
|
//面试结束时间
|
||||||
|
DateTime endTime = DateUtil.parseDateTime(DateUtil.formatDateTime(interviewPlan.getEndTime()));
|
||||||
|
DateTime now = DateUtil.date();
|
||||||
|
//如果当前时间在预期开始时间和结束时间之间
|
||||||
|
//修改面试状态和房间状态(修改房间状态在后面 hyPartnerInterviewPlanDO 中一并修改)
|
||||||
|
if (exceptTime.isBefore(now) && now.isBefore(endTime)) {
|
||||||
|
//1. 将面试状态改为 --> 2 已开始
|
||||||
|
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
||||||
|
//hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
|
||||||
|
} else {
|
||||||
|
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
||||||
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
|
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
|
||||||
//1. 将面试状态改为 --> 2已开始
|
|
||||||
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
|
||||||
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
|
|
||||||
//2. 修改加盟商或面试官进入面试时间
|
//2. 修改加盟商或面试官进入面试时间
|
||||||
//加盟商
|
//加盟商
|
||||||
if (dto.getUserType().equals(2)) {
|
if (dto.getUserType().equals(2)) {
|
||||||
@@ -274,21 +291,25 @@ public class InterviewServiceImpl implements InterviewService {
|
|||||||
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
||||||
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
|
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
|
||||||
hyPartnerInterviewPlanDO.setId(Long.parseLong(dto.getInterviewPlanId()));
|
hyPartnerInterviewPlanDO.setId(Long.parseLong(dto.getInterviewPlanId()));
|
||||||
|
//修改面试房间状态
|
||||||
|
hyPartnerInterviewPlanDO.setRoomStatus(RoomStatus.OPEN.getCode());
|
||||||
//3. TODO(待确认) 修改面试实际开始时间,以第一个人进来的时间为准,后续不再修改
|
//3. TODO(待确认) 修改面试实际开始时间,以第一个人进来的时间为准,后续不再修改
|
||||||
hyPartnerInterviewPlanMapper.updateActualStartTime(hyPartnerInterviewPlanDO.getId(), DateUtil.now());
|
hyPartnerInterviewPlanMapper.updateActualStartTime(hyPartnerInterviewPlanDO.getId(), DateUtil.now());
|
||||||
//4. 加盟商如果进入了,就修改面试计划表 is_partner_interview 字段
|
//4. 加盟商如果进入了,就修改面试计划表 is_partner_interview 字段
|
||||||
if (dto.getUserType().equals(2)) {
|
if (dto.getUserType().equals(2)) {
|
||||||
hyPartnerInterviewPlanDO.setIsPartnerInterview(1);
|
hyPartnerInterviewPlanDO.setIsPartnerInterview(1);
|
||||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
|
|
||||||
}
|
}
|
||||||
|
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
|
||||||
//5. 查询对应的面试官id、姓名及加盟商姓名
|
//5. 查询对应的面试官id、姓名及加盟商姓名
|
||||||
EnterInterviewVO vo = hyPartnerInterviewMapper.getInterviewerByInterviewPlanId(dto.getInterviewPlanId());
|
EnterInterviewVO vo = hyPartnerInterviewMapper.getInterviewerByInterviewPlanId(dto.getInterviewPlanId());
|
||||||
//6. 生成 userSign
|
//6. 生成 userSign
|
||||||
String userSig = TRTCUtils.genUserSig(sdkAppId, key, dto.getUserId());
|
String userSig = TRTCUtils.genUserSig(sdkAppId, key, dto.getUserId());
|
||||||
vo.setUserSign(userSig);
|
vo.setUserSign(userSig);
|
||||||
return vo;
|
return vo;
|
||||||
|
} catch (ApiException apiException) {
|
||||||
|
throw apiException;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_ENTER_FAIL);
|
throw new ApiException(ErrorCodeEnum.INTERVIEW_ENTER_FAIL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.cool.store.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.cool.store.dao.HyInterviewDAO;
|
import com.cool.store.dao.HyInterviewDAO;
|
||||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||||
@@ -69,18 +70,33 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) {
|
public EnterInterviewVO enterInterviewRoom(EnterInterviewDto dto) throws ApiException {
|
||||||
try {
|
try {
|
||||||
//如果面试间状态不是已开放,就不让进
|
//房间状态
|
||||||
Integer roomStatus = interviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
|
Integer roomStatus = interviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
|
||||||
if (!roomStatus.equals(RoomStatus.OPEN.getCode())) {
|
//面试流程状态
|
||||||
throw new RuntimeException();
|
String status = interviewMapper.getStatus(dto.getInterviewPlanId());
|
||||||
|
//如果面试间状态是 0 待开放或者面试流程状态是 2 待面试,就不让进
|
||||||
|
//再判断时间是否是正确的时间
|
||||||
|
if (roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode()) || WorkflowStatusEnum.INTERVIEW_2.getCode().equals(status)) {
|
||||||
|
HyPartnerInterviewPlanDO interviewPlan = interviewPlanMapper.getInterviewPlanById(dto.getInterviewPlanId());
|
||||||
|
//面试预期开始时间
|
||||||
|
DateTime exceptTime = DateUtil.offsetMinute(interviewPlan.getStartTime(), -5);
|
||||||
|
//面试结束时间
|
||||||
|
DateTime endTime = DateUtil.parseDateTime(DateUtil.formatDateTime(interviewPlan.getEndTime()));
|
||||||
|
DateTime now = DateUtil.date();
|
||||||
|
//如果当前时间在预期开始时间和结束时间之间
|
||||||
|
//修改面试状态和房间状态(修改房间状态在后面 hyPartnerInterviewPlanDO 中一并修改)
|
||||||
|
if (exceptTime.isBefore(now) && now.isBefore(endTime)) {
|
||||||
|
//1. 将面试状态改为 --> 2 已开始
|
||||||
|
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
||||||
|
//hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
|
||||||
|
} else {
|
||||||
|
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
||||||
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
|
hyPartnerInterviewDO.setInterviewPlanId(Long.parseLong(dto.getInterviewPlanId()));
|
||||||
//1. 将面试状态改为 --> 2已开始
|
|
||||||
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
|
||||||
// hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
|
|
||||||
//2. 修改加盟商或面试官进入面试时间
|
//2. 修改加盟商或面试官进入面试时间
|
||||||
//加盟商
|
//加盟商
|
||||||
if (dto.getUserType().equals(2)) {
|
if (dto.getUserType().equals(2)) {
|
||||||
@@ -92,21 +108,25 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
|
|||||||
interviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
interviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
||||||
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
|
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
|
||||||
hyPartnerInterviewPlanDO.setId(Long.parseLong(dto.getInterviewPlanId()));
|
hyPartnerInterviewPlanDO.setId(Long.parseLong(dto.getInterviewPlanId()));
|
||||||
|
//修改面试房间状态
|
||||||
|
hyPartnerInterviewPlanDO.setRoomStatus(RoomStatus.OPEN.getCode());
|
||||||
//3. TODO(待确认) 修改面试实际开始时间,以第一个人进来的时间为准,后续不再修改
|
//3. TODO(待确认) 修改面试实际开始时间,以第一个人进来的时间为准,后续不再修改
|
||||||
interviewPlanMapper.updateActualStartTime(hyPartnerInterviewPlanDO.getId(), DateUtil.now());
|
interviewPlanMapper.updateActualStartTime(hyPartnerInterviewPlanDO.getId(), DateUtil.now());
|
||||||
//4. 加盟商如果进入了,就修改面试计划表 is_partner_interview 字段
|
//4. 加盟商如果进入了,就修改面试计划表 is_partner_interview 字段
|
||||||
if (dto.getUserType().equals(2)) {
|
if (dto.getUserType().equals(2)) {
|
||||||
hyPartnerInterviewPlanDO.setIsPartnerInterview(1);
|
hyPartnerInterviewPlanDO.setIsPartnerInterview(1);
|
||||||
interviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
|
|
||||||
}
|
}
|
||||||
|
interviewPlanMapper.updateByPrimaryKeySelective(hyPartnerInterviewPlanDO);
|
||||||
//5. 查询对应的面试官id、姓名及加盟商姓名
|
//5. 查询对应的面试官id、姓名及加盟商姓名
|
||||||
EnterInterviewVO vo = interviewMapper.getInterviewerByInterviewPlanId(dto.getInterviewPlanId());
|
EnterInterviewVO vo = interviewMapper.getInterviewerByInterviewPlanId(dto.getInterviewPlanId());
|
||||||
//6. 生成 userSign
|
//6. 生成 userSign
|
||||||
String userSig = TRTCUtils.genUserSig(sdkAppId, key, dto.getUserId());
|
String userSig = TRTCUtils.genUserSig(sdkAppId, key, dto.getUserId());
|
||||||
vo.setUserSign(userSig);
|
vo.setUserSign(userSig);
|
||||||
return vo;
|
return vo;
|
||||||
|
} catch (ApiException apiException) {
|
||||||
|
throw apiException;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_ENTER_FAIL);
|
throw new ApiException(ErrorCodeEnum.INTERVIEW_ENTER_FAIL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class InterviewController {
|
|||||||
|
|
||||||
@PostMapping("/enter")
|
@PostMapping("/enter")
|
||||||
@ApiOperation("进入面试房间")
|
@ApiOperation("进入面试房间")
|
||||||
public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) {
|
public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) throws ApiException {
|
||||||
return ResponseResult.success(interviewService.enterInterviewRoom(dto));
|
return ResponseResult.success(interviewService.enterInterviewRoom(dto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class InterviewController {
|
|||||||
|
|
||||||
@PostMapping("/enter")
|
@PostMapping("/enter")
|
||||||
@ApiOperation("进入面试间")
|
@ApiOperation("进入面试间")
|
||||||
public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) {
|
public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestBody EnterInterviewDto dto) throws ApiException {
|
||||||
return ResponseResult.success(interviewService.enterInterviewRoom(dto));
|
return ResponseResult.success(interviewService.enterInterviewRoom(dto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user