通知站内信
This commit is contained in:
@@ -7,6 +7,7 @@ import com.newyetai.recruit.position.entity.PositionRegistration;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationPageQueryDTO;
|
||||
|
||||
import java.util.Map;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -27,4 +28,7 @@ public interface PositionRegistrationMapper extends MyMapper<PositionRegistratio
|
||||
|
||||
List<UserPositionRegistrationResDTO> userPage(@Param("param") UserPositionRegistrationPageQueryDTO queryDTO);
|
||||
|
||||
Map<String, Object> noticeInvite(Long positionRegistrationId, Long orgUserId);
|
||||
Map<String, Object> noticeInterview(Long positionRegistrationId, Long orgUserId);
|
||||
|
||||
}
|
||||
@@ -244,4 +244,46 @@
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</sql>
|
||||
|
||||
|
||||
<select id="noticeInvite" resultType="map">
|
||||
select p.position_name positionName,
|
||||
pr.create_time createTime,
|
||||
pr.interview_time interviewTime,
|
||||
pr.interview_location interviewLocation,
|
||||
ou.phone interviewPhone,
|
||||
o.org_name orgName,
|
||||
u.real_name realName
|
||||
from hr_position_registration pr
|
||||
inner join hr_position p on pr.position_id = p.id and p.deleted = 0
|
||||
inner join xs_org o on p.org_id = o.id and o.deleted = 0
|
||||
inner join uc_user u on pr.user_id = u.id and u.deleted = 0
|
||||
inner join uc_user ou on ou.id = #{orgUserId}
|
||||
where pr.id = #{positionRegistrationId}
|
||||
and pr.deleted = 0
|
||||
|
||||
</select>
|
||||
<select id="noticeInterview" resultType="map">
|
||||
select p.position_name positionName,
|
||||
pr.create_time createTime,
|
||||
pr.interview_time interviewTime,
|
||||
pr.interview_location interviewLocation,
|
||||
pr.induction_time inductionTime,
|
||||
pr.remark,
|
||||
ou.phone interviewPhone,
|
||||
pa.detail_address positionAddress,
|
||||
o.org_name orgName,
|
||||
u.real_name realName
|
||||
from hr_position_registration pr
|
||||
inner join hr_position p on pr.position_id = p.id and p.deleted = 0
|
||||
inner join xs_org o on p.org_id = o.id and o.deleted = 0
|
||||
inner join uc_user u on pr.user_id = u.id and u.deleted = 0
|
||||
inner join uc_user ou on ou.id = #{orgUserId}
|
||||
left join hr_position_address pa on p.address_id = pa.id and pa.deleted = 0
|
||||
where pr.id = #{positionRegistrationId}
|
||||
and pr.deleted = 0
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -4,6 +4,10 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.newyetai.usercenter.notice.constant.NoticeChannelTypeEnum;
|
||||
import com.newyetai.usercenter.notice.constant.NoticeTemplateCodeEnum;
|
||||
import com.newyetai.usercenter.notice.dto.NoticeSendRecordOperateDTO;
|
||||
import com.newyetai.usercenter.notice.service.NoticeSendRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -97,6 +101,8 @@ public class PositionRegistrationServiceImpl implements PositionRegistrationServ
|
||||
|
||||
@Autowired
|
||||
private OrgService orgService;
|
||||
@Autowired
|
||||
private NoticeSendRecordService noticeSendRecordService;
|
||||
|
||||
|
||||
@AutoUnLock
|
||||
@@ -325,8 +331,11 @@ public class PositionRegistrationServiceImpl implements PositionRegistrationServ
|
||||
|
||||
ActionUtils.diff(operatorDTO.getId(), PositionRegistration.builder().status(PositionRegistrationStatusEnum.ALREADY_REGISTERED.getStatus()).build()
|
||||
, PositionRegistration.builder().status(PositionRegistrationStatusEnum.WAIT_FOR_AN_INTERVIEW.getStatus()).build());
|
||||
// 发送通知
|
||||
sendNotice(NoticeTemplateCodeEnum.POSITION_INVITE, positionRegistrationMapper.noticeInvite(operatorDTO.getId(), UserContextHolder.getLoginUserId()));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void termination(PositionRegistrationOperatorDTO operatorDTO) {
|
||||
Assert.notNull(operatorDTO.getId(), "id不能为空");
|
||||
@@ -376,7 +385,27 @@ public class PositionRegistrationServiceImpl implements PositionRegistrationServ
|
||||
|
||||
ActionUtils.diff(operatorDTO.getId(), PositionRegistration.builder().status(PositionRegistrationStatusEnum.WAIT_FOR_AN_INTERVIEW.getStatus()).build()
|
||||
, PositionRegistration.builder().status(operatorDTO.getStatus()).build());
|
||||
// 发送通知
|
||||
if (PositionRegistrationStatusEnum.FAIL_THE_INTERVIEW.getStatus().equals(operatorDTO.getStatus())){
|
||||
sendNotice(NoticeTemplateCodeEnum.POSITION_INTERVIEW_FAIL, positionRegistrationMapper.noticeInterview(operatorDTO.getId(), UserContextHolder.getLoginUserId()));
|
||||
} else {
|
||||
sendNotice(NoticeTemplateCodeEnum.POSITION_INTERVIEW_PASS, positionRegistrationMapper.noticeInterview(operatorDTO.getId(), UserContextHolder.getLoginUserId()));
|
||||
}
|
||||
}
|
||||
|
||||
//发送站内信
|
||||
private void sendNotice(NoticeTemplateCodeEnum templateCodeEnum, Map<String, Object> contentParamDataMap) {
|
||||
String templateCode = templateCodeEnum.getType();
|
||||
try {
|
||||
NoticeSendRecordOperateDTO sendRecordOperateDTO = NoticeSendRecordOperateDTO.builder()
|
||||
.templateCode(templateCode)
|
||||
.channelType(NoticeChannelTypeEnum.SITE.getType())
|
||||
.contentParamDataMap(contentParamDataMap)
|
||||
.build();
|
||||
noticeSendRecordService.create(sendRecordOperateDTO);
|
||||
} catch (Exception e) {
|
||||
log.info("发送[{}]站内信失败:{}", templateCode, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.newyetai.usercenter.notice.constant;
|
||||
|
||||
public enum NoticeBizTypeEnum {
|
||||
|
||||
/** 岗位报名-邀请面试 */
|
||||
POSITION_INVITE("position_invite"),
|
||||
/** 岗位报名-面试结果 */
|
||||
POSITION_INVITE_result("position_invite_result"),
|
||||
;
|
||||
|
||||
private String type;
|
||||
|
||||
NoticeBizTypeEnum(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.newyetai.usercenter.notice.constant;
|
||||
|
||||
public enum NoticeTemplateCodeEnum {
|
||||
|
||||
/** 岗位报名-邀请面试 */
|
||||
POSITION_INVITE("position_invite"),
|
||||
/** 岗位报名-面试通过 */
|
||||
POSITION_INTERVIEW_PASS("position_interview_pass"),
|
||||
/** 岗位报名-面试不通过 */
|
||||
POSITION_INTERVIEW_FAIL("position_interview_fail"),
|
||||
;
|
||||
|
||||
private String type;
|
||||
|
||||
NoticeTemplateCodeEnum(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -90,6 +90,7 @@ public class NoticeSendRecordServiceImpl implements NoticeSendRecordService {
|
||||
noticeTemplateMapper.listNoticeTemplateDTO(noticeTemplateQueryDTO);
|
||||
Assert.isTrue(!noticeTemplateDTOs.isEmpty(), "未找到对应通知模版");
|
||||
NoticeTemplateDTO noticeTemplateDTO = noticeTemplateDTOs.get(0);
|
||||
Assert.isTrue(noticeTemplateDTO.getEnabled(), "通知模版未开启");
|
||||
tempOperateDto.setTemplateId(noticeTemplateDTO.getId());
|
||||
// 平台模版指定接收人机构为平台
|
||||
Long receiverOrgId =
|
||||
|
||||
Reference in New Issue
Block a user