面试相关修改
This commit is contained in:
@@ -64,6 +64,11 @@ public enum ErrorCodeEnum {
|
||||
INTERVIEW_AND_PARTNER_ID_IS_NULL(1021104, "加盟商用户ID和面试官ID不能同时为空!", null),
|
||||
INTERVIEW_PLAN_IS_NULL(1021105, "未查询到相关面试安排!", null),
|
||||
DATE_PARAMS_IS_ERROR(1021106, "日期参数错误!", null),
|
||||
INTERVIEW_PLAN_NOT_EXIST(1021107, "面试计划不存在!", null),
|
||||
FEISHU_DELETE_SCHEDULE_ERROR(1021108, "删除原面试安排失败!", null),
|
||||
CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面试安排失败!", null),
|
||||
FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面试安排失败!", null),
|
||||
INTERVIEW_STATUS_ERROR(1021111, "面试状态错误!", null),
|
||||
SIGN_FAIL(600000, "验签失败", null),
|
||||
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误!", null),
|
||||
NEW_MOBILE_HAS_EXIST(600002,"加盟商用户信息已存在",null),
|
||||
|
||||
@@ -87,7 +87,7 @@ public interface HyPartnerInterviewPlanMapper {
|
||||
* @param interviewId
|
||||
* @return
|
||||
*/
|
||||
InterviewVO getInterviewInfo(String interviewId);
|
||||
InterviewVO getInterviewInfo(String interviewPlanId);
|
||||
|
||||
/**
|
||||
* 查询用户基本信息
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
<result column="actual_start_time" jdbcType="TIMESTAMP" property="actualStartTime" />
|
||||
<result column="actual_end_time" jdbcType="TIMESTAMP" property="actualEndTime" />
|
||||
<result column="room_id" jdbcType="VARCHAR" property="roomId" />
|
||||
<result column="feishu_calendar_id" jdbcType="VARCHAR" property="feishuCalendarId" />
|
||||
<result column="feishu_schedule_id" jdbcType="VARCHAR" property="feishuScheduleId" />
|
||||
<result column="room_password" jdbcType="VARCHAR" property="roomPassword" />
|
||||
<result column="interviewer" jdbcType="VARCHAR" property="interviewer" />
|
||||
<result column="room_status" jdbcType="TINYINT" property="roomStatus" />
|
||||
@@ -22,7 +24,7 @@
|
||||
<sql id="Base_Column_List">
|
||||
id, partner_line_id, partner_id, interview_date, start_time, end_time, is_partner_interview,
|
||||
actual_start_time, actual_end_time, room_id, room_password, interviewer, room_status,
|
||||
deleted, create_time, update_time
|
||||
deleted, create_time, update_time,feishu_calendar_id,feishu_schedule_id
|
||||
</sql>
|
||||
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
|
||||
insert into hy_partner_interview_plan
|
||||
@@ -169,6 +171,12 @@
|
||||
<if test="record.updateTime != null">
|
||||
update_time = #{record.updateTime},
|
||||
</if>
|
||||
<if test="record.feishuCalendarId != null">
|
||||
feishu_calendar_id = #{record.feishuCalendarId},
|
||||
</if>
|
||||
<if test="record.feishuScheduleId != null">
|
||||
feishu_schedule_id = #{record.feishuScheduleId},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{record.id}
|
||||
</update>
|
||||
@@ -280,7 +288,8 @@
|
||||
|
||||
</select>
|
||||
<select id="getInterviewInfo" resultType="com.cool.store.vo.interview.InterviewVO">
|
||||
select hpip.id as interviewId,
|
||||
select hpip.id as interviewPlanId,
|
||||
hpi.id as interviewId,
|
||||
hpi.qualify_verify_id as qualifyVerifyId,
|
||||
hpi.pass_time as passTime,
|
||||
hpi.pass_reason as passReason,
|
||||
@@ -302,12 +311,14 @@
|
||||
hpip.end_time as endTime,
|
||||
hpip.partner_id as partnerId,
|
||||
hpip.interviewer as interviewerId,
|
||||
hpip.feishu_calendar_id as feishuCalendarId,
|
||||
hpip.feishu_schedule_id as feishuScheduleId,
|
||||
hpi.status as status
|
||||
from hy_partner_interview_plan hpip
|
||||
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_interview hpi on hpip.id = hpi.interview_plan_id
|
||||
where hpip.id = #{interviewId}
|
||||
where hpip.id = #{interviewPlanId}
|
||||
</select>
|
||||
<select id="selectBySelective" resultType="com.cool.store.entity.HyPartnerInterviewPlanDO">
|
||||
select
|
||||
|
||||
@@ -65,4 +65,10 @@ public class HyPartnerInterviewPlanDO implements Serializable {
|
||||
|
||||
@ApiModelProperty("更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty("飞书日历id")
|
||||
private String feishuCalendarId;
|
||||
|
||||
@ApiModelProperty("飞书日程id")
|
||||
private String feishuScheduleId;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.cool.store.request;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Author: young.yu
|
||||
* @Date: 2023-06-18 19:54
|
||||
* @Description:
|
||||
*/
|
||||
@ApiModel(description = "同意面试预约")
|
||||
public class ApproveAppointmentReq {
|
||||
|
||||
@ApiModelProperty(value = "面试安排ID", required = true)
|
||||
private String interviewPlanId;
|
||||
@ApiModelProperty(value = "面试官ID", required = true)
|
||||
private String interviewerId;
|
||||
|
||||
public String getInterviewPlanId() {
|
||||
return interviewPlanId;
|
||||
}
|
||||
|
||||
public void setInterviewPlanId(String interviewPlanId) {
|
||||
this.interviewPlanId = interviewPlanId;
|
||||
}
|
||||
|
||||
public String getInterviewerId() {
|
||||
return interviewerId;
|
||||
}
|
||||
|
||||
public void setInterviewerId(String interviewerId) {
|
||||
this.interviewerId = interviewerId;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ import lombok.Data;
|
||||
@ApiModel
|
||||
public class EntrustOthersReq {
|
||||
@ApiModelProperty("会议编号")
|
||||
private String interviewId;
|
||||
private String interviewPlanId;
|
||||
|
||||
@ApiModelProperty("新面试官编号")
|
||||
private String newInterviewerId;
|
||||
|
||||
@@ -12,8 +12,8 @@ import lombok.Data;
|
||||
@Data
|
||||
@ApiModel
|
||||
public class ModifyInterviewTimeReq {
|
||||
@ApiModelProperty("会议编号")
|
||||
private String interviewId;
|
||||
@ApiModelProperty("会议安排编号")
|
||||
private String interviewPlanId;
|
||||
@ApiModelProperty("新预约开始时间")
|
||||
private String newStartBookingTime;
|
||||
@ApiModelProperty("新预约结束时间")
|
||||
|
||||
@@ -11,7 +11,7 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel
|
||||
public class QueryByInterviewIdReq {
|
||||
public class QueryByInterviewPlanIdReq {
|
||||
@ApiModelProperty("会议编号")
|
||||
private String interviewId;
|
||||
private String interviewPlanId;
|
||||
}
|
||||
@@ -12,6 +12,10 @@ import lombok.Data;
|
||||
@Data
|
||||
@ApiModel(description = "面试信息")
|
||||
public class InterviewVO {
|
||||
|
||||
@ApiModelProperty(value = "面试计划id", required = true)
|
||||
private String interviewPlanId;
|
||||
|
||||
@ApiModelProperty(value = "会议id", required = true)
|
||||
private String interviewId;
|
||||
|
||||
@@ -87,4 +91,10 @@ public class InterviewVO {
|
||||
@ApiModelProperty("通过函图片文件URL")
|
||||
private String passImageUrl;
|
||||
|
||||
@ApiModelProperty("飞书日历id")
|
||||
private String feishuCalendarId;
|
||||
|
||||
@ApiModelProperty("飞书日程id")
|
||||
private String feishuScheduleId;
|
||||
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -340,6 +341,7 @@ public class ISVHttpRequest {
|
||||
* 发送飞书卡片消息
|
||||
* @param param
|
||||
*/
|
||||
@Async
|
||||
public void sendFeiShuCardMessage(SendCardMessageDTO param) throws ApiException{
|
||||
if(CollectionUtils.isEmpty(param.getUserIds()) || StringUtils.isAnyBlank(param.getTitle(), param.getContent(), param.getMessageUrl()) || Objects.isNull(param.getMessageType())){
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.vo.EnterInterviewVO;
|
||||
import com.cool.store.vo.interview.CreateAppointmentVO;
|
||||
@@ -21,18 +22,18 @@ public interface InterviewService {
|
||||
* @param interviewId
|
||||
* @return
|
||||
*/
|
||||
InterviewVO getInterviewInfo(String interviewId);
|
||||
InterviewVO getInterviewInfo(String interviewPlanId);
|
||||
|
||||
/**
|
||||
* 委托他人
|
||||
* @param request
|
||||
*/
|
||||
void entrustOthers(EntrustOthersReq request);
|
||||
void entrustOthers(EntrustOthersReq request) throws ApiException;
|
||||
/**
|
||||
* 修改面试时间
|
||||
* @param request
|
||||
*/
|
||||
void modifyInterviewTime(ModifyInterviewTimeReq request);
|
||||
void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException;
|
||||
|
||||
/**
|
||||
* 结束面试
|
||||
@@ -55,4 +56,10 @@ public interface InterviewService {
|
||||
*/
|
||||
CreateAppointmentVO createAppointment(CreateAppointmentReq request);
|
||||
|
||||
/**
|
||||
* 同意面试预约
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
void approveAppointment(ApproveAppointmentReq request) throws ApiException;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.request.ModifyInterviewTimeReq;
|
||||
import com.cool.store.vo.EnterInterviewVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
import com.cool.store.vo.PartnerPassLetterDetailVO;
|
||||
@@ -27,4 +29,10 @@ public interface PartnerInterviewService {
|
||||
*/
|
||||
PartnerPassLetterDetailVO passLetterDetail(String interviewPlanId);
|
||||
|
||||
/**
|
||||
* 修改面试时间
|
||||
* @param request
|
||||
*/
|
||||
void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,13 +2,21 @@ package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.UpdateCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
||||
import com.cool.store.dto.message.SendCardMessageDTO;
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||
import com.cool.store.entity.HyPartnerInterviewPlanDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.MessageTypeEnum;
|
||||
import com.cool.store.enums.RoomStatus;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.http.ISVHttpRequest;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.request.*;
|
||||
@@ -24,7 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -51,6 +61,9 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
|
||||
|
||||
@Autowired
|
||||
private ISVHttpRequest isvHttpRequest;
|
||||
@Override
|
||||
public List<InterviewVO> getInterviewList(GetInterviewListReq request) {
|
||||
List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request);
|
||||
@@ -58,8 +71,8 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public InterviewVO getInterviewInfo(String interviewId) {
|
||||
InterviewVO vo = hyPartnerInterviewPlanMapper.getInterviewInfo(interviewId);
|
||||
public InterviewVO getInterviewInfo(String interviewPlanId) {
|
||||
InterviewVO vo = hyPartnerInterviewPlanMapper.getInterviewInfo(interviewPlanId);
|
||||
//查询面试官和记录人信息
|
||||
EnterpriseUserBaseInfoVO interviewerInfo = hyPartnerInterviewPlanMapper.getEnterpriseUserBaseInfo(vo.getInterviewerId());
|
||||
vo.setInterviewerName(interviewerInfo.getName());
|
||||
@@ -71,22 +84,42 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void entrustOthers(EntrustOthersReq request) {
|
||||
//TODO 1.原面试官日程删除
|
||||
|
||||
//TODO 2.新面试官日程新增
|
||||
|
||||
//TODO 3.面试信息变更
|
||||
public void entrustOthers(EntrustOthersReq request) throws ApiException {
|
||||
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
//如果面试信息为空,抛出异常
|
||||
if (interviewInfo == null) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
//1.原面试官日程删除
|
||||
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
//TODO 这里的userId是原面试官的userId还是新的?
|
||||
deleteCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
|
||||
if(userCalendarsEventDTO == null ){
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||
}
|
||||
//2.新面试官日程新增
|
||||
CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parseDate(interviewInfo.getStartTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parseDate(interviewInfo.getEndTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if(userCalendarEvent == null ){
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
}
|
||||
// 3.面试信息变更
|
||||
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
|
||||
record.setId(Long.valueOf(request.getInterviewId()));
|
||||
record.setInterviewer(request.getInterviewId());
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setInterviewer(request.getNewInterviewerId());
|
||||
record.setUpdateTime(new Date());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
|
||||
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
||||
hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewId()));
|
||||
hyPartnerInterviewDO.setInterviewPlanId(Long.valueOf(request.getInterviewPlanId()));
|
||||
hyPartnerInterviewDO.setInterviewer(request.getNewInterviewerId());
|
||||
hyPartnerInterviewDO.setUpdateTime(new Date());
|
||||
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
||||
@@ -94,11 +127,24 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyInterviewTime(ModifyInterviewTimeReq request) {
|
||||
//TODO 修改面试时间
|
||||
|
||||
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
//如果面试信息为空,抛出异常
|
||||
if (interviewInfo == null) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
UpdateCalendarEventDTO updateCalendarEventDTO = new UpdateCalendarEventDTO();
|
||||
updateCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
updateCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
updateCalendarEventDTO.setStartTime(DateUtil.parseDate(request.getNewStartBookingTime()).getTime());
|
||||
updateCalendarEventDTO.setEndTime(DateUtil.parseDate(request.getNewEndBookingTime()).getTime());
|
||||
updateCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.updateUserCalendarEvent(updateCalendarEventDTO);
|
||||
if(userCalendarsEventDTO == null ){
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR);
|
||||
}
|
||||
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
|
||||
record.setId(Long.valueOf(request.getInterviewId()));
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
|
||||
record.setUpdateTime(new Date());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
@@ -190,5 +236,59 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void approveAppointment(ApproveAppointmentReq request) throws ApiException {
|
||||
//查询面试计划信息
|
||||
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
//如果面试计划不存在,抛出异常
|
||||
if (interviewVO == null||StringUtil.isEmpty(interviewVO.getInterviewPlanId())) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
//创建日程信息
|
||||
CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parseDate(interviewVO.getStartTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parseDate(interviewVO.getEndTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(request.getInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if (userCalendarEvent == null || StringUtil.isEmpty(userCalendarEvent.getEventId())) {
|
||||
throw new ServiceException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
}
|
||||
//更新面试计划信息
|
||||
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
record.setUpdateTime(new Date());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
//更新面试信息
|
||||
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
|
||||
hyPartnerInterviewDO.setId(Long.valueOf(interviewVO.getInterviewId()));
|
||||
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_2.getCode()));
|
||||
hyPartnerInterviewDO.setUpdateTime(new Date());
|
||||
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
|
||||
//TODO 异步发送短信给加盟商
|
||||
|
||||
//异步发飞书消息给面试官
|
||||
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
|
||||
sendCardMessageDTO.setUserIds(Arrays.asList(request.getInterviewerId()));
|
||||
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
|
||||
sendCardMessageDTO.setTitle("面试预约申请");
|
||||
sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime()));
|
||||
isvHttpRequest.sendFeiShuCardMessage(sendCardMessageDTO);
|
||||
|
||||
}
|
||||
|
||||
public String generateFeiShuInterviewMsg(String partnerName, String partnerMobile, String interviewTime){
|
||||
//"您有一个【面试预约申请】待处理,预约人【姓名】手机号【13xxxxxxxxx】,预约面试时间【YYYY年MM月DD日 hh:mm】,请及时处理】"
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("您有一个【面试预约申请】待处理,预约人")
|
||||
.append(partnerName)
|
||||
.append("手机号")
|
||||
.append(partnerMobile)
|
||||
.append(",预约面试时间")
|
||||
.append(DateUtil.format(DateUtil.parse(interviewTime), "yyyy年MM月dd日 HH:mm"));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
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 cn.hutool.core.util.ObjectUtil;
|
||||
import com.cool.store.dto.calendar.UpdateCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.entity.HyPartnerInterviewPlanDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.oss.OSSServer;
|
||||
import com.cool.store.request.ModifyInterviewTimeReq;
|
||||
import com.cool.store.service.PartnerInterviewService;
|
||||
import com.cool.store.utils.PDFUtils;
|
||||
import com.cool.store.utils.PassLetterUtils;
|
||||
@@ -15,12 +23,14 @@ import com.cool.store.utils.TRTCUtils;
|
||||
import com.cool.store.vo.EnterInterviewVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
import com.cool.store.vo.PartnerPassLetterDetailVO;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Date;
|
||||
|
||||
import static com.cool.store.utils.PDFUtils.pdf2Img;
|
||||
|
||||
@@ -30,6 +40,9 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
|
||||
@Autowired
|
||||
private HyPartnerInterviewMapper interviewMapper;
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewPlanMapper interviewPlanMapper;
|
||||
|
||||
@Autowired
|
||||
private OSSServer ossServer;
|
||||
|
||||
@@ -112,6 +125,24 @@ public class PartnerInterviewServiceImpl implements PartnerInterviewService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyInterviewTime(ModifyInterviewTimeReq request) throws ApiException {
|
||||
InterviewVO interviewInfo = interviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
//如果面试信息为空,抛出异常
|
||||
if (interviewInfo == null) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
//如果面试状态不是面试时间待审核,抛出异常
|
||||
if (interviewInfo.getStatus() != Integer.parseInt(WorkflowStatusEnum.RESERVATION_1.getCode())) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_STATUS_ERROR);
|
||||
}
|
||||
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setStartTime(Convert.toDate(request.getNewStartBookingTime()));
|
||||
record.setUpdateTime(new Date());
|
||||
interviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成通知函上传 OSS 和修改数据库相应数据
|
||||
* @return passCode
|
||||
|
||||
@@ -21,6 +21,7 @@ import javax.sql.DataSource;
|
||||
* @date 2023-05-17 11:28
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableAsync
|
||||
@MapperScan("com.cool.store.mapper")
|
||||
public class PartnerBWebApplication {
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cool.store.controller;
|
||||
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.vo.EnterInterviewVO;
|
||||
import com.cool.store.vo.interview.CreateAppointmentVO;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@@ -40,23 +40,23 @@ public class InterviewController {
|
||||
return ResponseResult.success(new PageInfo<>(interviewList));
|
||||
}
|
||||
|
||||
@PostMapping("/queryByInterviewId")
|
||||
@PostMapping("/queryByInterviewPlanId")
|
||||
@ApiOperation("根据面试会议id查询面试信息")
|
||||
public ResponseResult<InterviewVO> queryByInterviewId(@RequestBody QueryByInterviewIdReq request) {
|
||||
InterviewVO interviewVO = interviewService.getInterviewInfo(request.getInterviewId());
|
||||
public ResponseResult<InterviewVO> queryByInterviewPlanId(@RequestBody QueryByInterviewPlanIdReq request) {
|
||||
InterviewVO interviewVO = interviewService.getInterviewInfo(request.getInterviewPlanId());
|
||||
return ResponseResult.success(interviewVO);
|
||||
}
|
||||
|
||||
@PostMapping("/entrustOthers")
|
||||
@ApiOperation("委托他人")
|
||||
public ResponseResult entrustOthers(@RequestBody EntrustOthersReq request) {
|
||||
public ResponseResult entrustOthers(@RequestBody EntrustOthersReq request) throws ApiException {
|
||||
interviewService.entrustOthers(request);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/modifyInterviewTime")
|
||||
@ApiOperation("修改面试时间")
|
||||
public ResponseResult modifyInterviewTime(@RequestBody ModifyInterviewTimeReq request) {
|
||||
public ResponseResult modifyInterviewTime(@RequestBody ModifyInterviewTimeReq request) throws ApiException {
|
||||
interviewService.modifyInterviewTime(request);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
@@ -74,9 +74,10 @@ public class InterviewController {
|
||||
return ResponseResult.success(interviewService.enterInterviewRoom(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/appointment")
|
||||
@ApiOperation("预约面试")
|
||||
public ResponseResult<CreateAppointmentVO> createAppointment(@RequestBody CreateAppointmentReq request) {
|
||||
return ResponseResult.success(interviewService.createAppointment(request));
|
||||
@PostMapping("/appointment/approve")
|
||||
@ApiOperation("同意面试预约")
|
||||
public ResponseResult approveAppointment(@RequestBody ApproveAppointmentReq request) throws ApiException {
|
||||
interviewService.approveAppointment(request);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
package com.cool.store.controller;
|
||||
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.request.CreateAppointmentReq;
|
||||
import com.cool.store.request.ModifyInterviewTimeReq;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.service.PartnerInterviewService;
|
||||
import com.cool.store.vo.EnterInterviewVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
import com.cool.store.vo.PartnerPassLetterDetailVO;
|
||||
import com.cool.store.vo.interview.CreateAppointmentVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -19,6 +24,9 @@ public class InterviewController {
|
||||
@Autowired
|
||||
private PartnerInterviewService interviewService;
|
||||
|
||||
@Autowired
|
||||
private InterviewService interviewBaseService;
|
||||
|
||||
@PostMapping("/queryByPartnerId")
|
||||
@ApiOperation("根据用户id查询面试信息")
|
||||
public ResponseResult<PartnerInterviewInfoVO> queryByPartnerId(@RequestParam String partnerId) {
|
||||
@@ -37,4 +45,17 @@ public class InterviewController {
|
||||
return ResponseResult.success(interviewService.passLetterDetail(interviewPlanId));
|
||||
}
|
||||
|
||||
@PostMapping("/appointment/submit")
|
||||
@ApiOperation("预约面试")
|
||||
public ResponseResult<CreateAppointmentVO> createAppointment(@RequestBody CreateAppointmentReq request) {
|
||||
return ResponseResult.success(interviewBaseService.createAppointment(request));
|
||||
}
|
||||
|
||||
@PostMapping("/modifyInterviewTime")
|
||||
@ApiOperation("修改面试时间")
|
||||
public ResponseResult modifyInterviewTime(@RequestBody ModifyInterviewTimeReq request) throws ApiException {
|
||||
interviewService.modifyInterviewTime(request);
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user