1.添加确认时保存app用户录用消息

2.添加岗位发布时给收藏此企业用户移动用户新岗位消息
This commit is contained in:
sh
2025-11-06 17:30:33 +08:00
parent 1b7d5c5451
commit f4370ac912
15 changed files with 182 additions and 26 deletions

View File

@@ -5,7 +5,7 @@ import com.ruoyi.cms.domain.Notice;
import com.ruoyi.cms.domain.vo.NoticeTotal; import com.ruoyi.cms.domain.vo.NoticeTotal;
import com.ruoyi.cms.service.IAppNoticeService; import com.ruoyi.cms.service.IAppNoticeService;
import com.ruoyi.cms.service.IAppUserService; import com.ruoyi.cms.service.IAppUserService;
import com.ruoyi.cms.util.NoticeUtils; import com.ruoyi.cms.util.notice.NoticeUtils;
import com.ruoyi.cms.util.RoleUtils; import com.ruoyi.cms.util.RoleUtils;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.constant.HttpStatus;
@@ -154,7 +154,7 @@ public class CmsNoticeController extends BaseController
} }
startPage(); startPage();
notice.setIsRead(NoticeUtils.NOTICE_YD); notice.setIsRead(NoticeUtils.NOTICE_YD);
notice.setRemark(NoticeUtils.NOTICE_TYPE); notice.setRemark(NoticeUtils.NOTICE_REMARK);
List<Notice> notices = noticeService.selectListAppNotices(notice); List<Notice> notices = noticeService.selectListAppNotices(notice);
return getDataTable(notices); return getDataTable(notices);
} }

View File

@@ -3,6 +3,7 @@ package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.Company; import com.ruoyi.common.core.domain.entity.Company;
import com.ruoyi.cms.domain.CompanyCollection; import com.ruoyi.cms.domain.CompanyCollection;
@@ -22,4 +23,6 @@ public interface CompanyCollectionMapper extends BaseMapper<CompanyCollection>
public List<CompanyCollection> selectCompanyCollectionList(CompanyCollection companyCollection); public List<CompanyCollection> selectCompanyCollectionList(CompanyCollection companyCollection);
List<Company> collectionJob(Long userId); List<Company> collectionJob(Long userId);
List<AppUser> selectAppuserList(Long companyId);
} }

View File

@@ -27,4 +27,6 @@ public interface CompanyMapper extends BaseMapper<Company>
List<Company> label(@Param("companyNature") String companyNature, @Param("targ")String targ,@Param("companyName")String companyName); List<Company> label(@Param("companyNature") String companyNature, @Param("targ")String targ,@Param("companyName")String companyName);
List<Company> selectLikeCompanyList(Company company); List<Company> selectLikeCompanyList(Company company);
Company selectCompanyByJobId(Long jobId);
} }

View File

@@ -51,4 +51,11 @@ public interface JobMapper extends BaseMapper<Job>
VectorJob selectVectorJob(Long jobId); VectorJob selectVectorJob(Long jobId);
List<AppUser> selectApplyJobUserList(Long jobId); List<AppUser> selectApplyJobUserList(Long jobId);
/**
*查询单条岗位信息
* @param jobId
* @return
*/
Job getJobInfo(Long jobId);
} }

View File

@@ -13,4 +13,6 @@ public interface NoticeMapper extends BaseMapper<Notice>
List<Notice> getNoticlist(Notice notice); List<Notice> getNoticlist(Notice notice);
NoticeTotal noticTotal(Notice notice); NoticeTotal noticTotal(Notice notice);
int batchInsert(List<Notice> list);
} }

View File

@@ -6,7 +6,7 @@ import com.ruoyi.cms.domain.*;
import com.ruoyi.cms.domain.vo.NoticeTotal; import com.ruoyi.cms.domain.vo.NoticeTotal;
import com.ruoyi.cms.mapper.*; import com.ruoyi.cms.mapper.*;
import com.ruoyi.cms.service.IAppNoticeService; import com.ruoyi.cms.service.IAppNoticeService;
import com.ruoyi.cms.util.NoticeUtils; import com.ruoyi.cms.util.notice.NoticeUtils;
import com.ruoyi.cms.util.StringUtil; import com.ruoyi.cms.util.StringUtil;
import com.ruoyi.common.core.domain.entity.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.utils.SiteSecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
@@ -204,7 +204,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService
@Override @Override
public List<Notice> selectListAppNotRead(Notice notice) { public List<Notice> selectListAppNotRead(Notice notice) {
notice.setRemark(NoticeUtils.NOTICE_TYPE); notice.setRemark(NoticeUtils.NOTICE_REMARK);
notice.setIsRead(NoticeUtils.NOTICE_WD); notice.setIsRead(NoticeUtils.NOTICE_WD);
//List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, notice.getUserId()).eq(Notice::getRemark,"notice_bar").eq(Notice::getIsRead,0).orderByDesc(Notice::getCreateTime)); //List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, notice.getUserId()).eq(Notice::getRemark,"notice_bar").eq(Notice::getIsRead,0).orderByDesc(Notice::getCreateTime));
return noticeInfoMapper.getNoticlist(notice); return noticeInfoMapper.getNoticlist(notice);
@@ -235,7 +235,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService
@Override @Override
public List<Notice> selectListAppNotics(Notice notice) { public List<Notice> selectListAppNotics(Notice notice) {
notice.setRemark(NoticeUtils.NOTICE_TYPE); notice.setRemark(NoticeUtils.NOTICE_REMARK);
return noticeInfoMapper.getNoticlist(notice); return noticeInfoMapper.getNoticlist(notice);
} }

View File

@@ -1,13 +1,15 @@
package com.ruoyi.cms.service.impl; package com.ruoyi.cms.service.impl;
import com.ruoyi.cms.domain.EmployeeConfirm; import com.ruoyi.cms.domain.EmployeeConfirm;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobApply; import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.Notice; import com.ruoyi.cms.domain.Notice;
import com.ruoyi.cms.mapper.EmployeeConfirmMapper; import com.ruoyi.cms.mapper.EmployeeConfirmMapper;
import com.ruoyi.cms.mapper.JobApplyMapper; import com.ruoyi.cms.mapper.JobApplyMapper;
import com.ruoyi.cms.mapper.JobMapper;
import com.ruoyi.cms.mapper.NoticeMapper; import com.ruoyi.cms.mapper.NoticeMapper;
import com.ruoyi.cms.service.EmployeeConfirmService; import com.ruoyi.cms.service.EmployeeConfirmService;
import com.ruoyi.cms.util.NoticeUtils; import com.ruoyi.cms.util.notice.NoticeUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -24,6 +26,8 @@ public class EmployeeConfirmServiceImpl implements EmployeeConfirmService {
private JobApplyMapper jobApplyMapper; private JobApplyMapper jobApplyMapper;
@Autowired @Autowired
private NoticeMapper noticeMapper; private NoticeMapper noticeMapper;
@Autowired
private JobMapper jobMapper;
@Override @Override
public List<EmployeeConfirm> getEmployeeConfirmList(EmployeeConfirm employeeConfirm) { public List<EmployeeConfirm> getEmployeeConfirmList(EmployeeConfirm employeeConfirm) {
@@ -39,12 +43,9 @@ public class EmployeeConfirmServiceImpl implements EmployeeConfirmService {
apply.setHire("0"); apply.setHire("0");
jobApplyMapper.updateById(apply); jobApplyMapper.updateById(apply);
} }
Job job=jobMapper.getJobInfo(employeeConfirm.getJobId());
//添加消息 //添加消息
Notice notice=new Notice(); Notice notice=NoticeUtils.createLytzNotice(employeeConfirm,job);
notice.setUserId(employeeConfirm.getUserId());
notice.setBussinessId(employeeConfirm.getId());
notice.setIsRead(NoticeUtils.NOTICE_WD);
notice.setTitle("");
noticeMapper.insert(notice); noticeMapper.insert(notice);
return t; return t;
} }

View File

@@ -146,6 +146,8 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
jobApplyMapper.deleteBatchIds(ids); jobApplyMapper.deleteBatchIds(ids);
} }
jobApplyMapper.insert(jobApply); jobApplyMapper.insert(jobApply);
//添加消息说明
return 0; return 0;
} }

View File

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.cms.domain.*; import com.ruoyi.cms.domain.*;
import com.ruoyi.cms.util.notice.NoticeUtils;
import com.ruoyi.common.core.domain.entity.File; import com.ruoyi.common.core.domain.entity.File;
import com.ruoyi.cms.domain.query.ESJobSearch; import com.ruoyi.cms.domain.query.ESJobSearch;
import com.ruoyi.cms.domain.vo.CandidateVO; import com.ruoyi.cms.domain.vo.CandidateVO;
@@ -33,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.*; import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -84,6 +86,10 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
private FileMapper fileMapper; private FileMapper fileMapper;
@Autowired @Autowired
private IAppUserService appUserService; private IAppUserService appUserService;
@Autowired
private CompanyCollectionMapper companyCollectionMapper;
@Autowired
private NoticeMapper noticeMapper;
/** /**
* 更新工作地址的经纬度信息 * 更新工作地址的经纬度信息
@@ -287,16 +293,28 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
* @return 结果 * @return 结果
*/ */
@Override @Override
@Transactional
public int updateJob(Job job) public int updateJob(Job job)
{ {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//修改岗位状态 //修改岗位状态
//修改岗位状态
if(job.getIsPublish()!=null) { if(job.getIsPublish()!=null) {
if(job.getIsPublish()==1){ if(job.getIsPublish()==1){
job.setPostingDate(formattedDate); job.setPostingDate(formattedDate);
//修改es缓存
iesJobSearchService.updateJob(job.getJobId()); iesJobSearchService.updateJob(job.getJobId());
//添加岗位上新
Job parmJob=null;
if(job.getCompanyId()==null){
//传递job消息不完整
parmJob=jobMapper.getJobInfo(job.getJobId());
}
List<AppUser> users=companyCollectionMapper.selectAppuserList(parmJob.getCompanyId());
if(users!=null&&users.size()>0){
List<Notice> notices= NoticeUtils.createGwsxNotice(users,parmJob);
noticeMapper.batchInsert(notices);
}
}else { }else {
job.setPostingDate(null); job.setPostingDate(null);
iesJobSearchService.deleteJob(job.getJobId()); iesJobSearchService.deleteJob(job.getJobId());

View File

@@ -1,14 +0,0 @@
package com.ruoyi.cms.util;
public class NoticeUtils {
/**
* 消息已读
*/
public static final String NOTICE_YD="1";
/**
* 消息未读
*/
public static final String NOTICE_WD="0";
public static final String NOTICE_TYPE="notice_bar";
}

View File

@@ -0,0 +1,105 @@
package com.ruoyi.cms.util.notice;
import com.ruoyi.cms.domain.EmployeeConfirm;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.Notice;
import com.ruoyi.common.core.domain.entity.AppUser;
import java.util.ArrayList;
import java.util.List;
public class NoticeUtils {
/**
* 消息已读
*/
public static final String NOTICE_YD="1";
/**
* 消息未读
*/
public static final String NOTICE_WD="0";
public static final String NOTICE_REMARK="notice_bar";
public static final String NOTICE_COMENT_ZH="衷心祝贺您通过";
public static final String NOTICE_COMENT_LY="全流程招聘考核,正式被录用,岗位为【";
public static final String NOTICE_COMENT_FF="";
public static final String NOTICE_TYPE_LY="录用通知";
public static final String NOTICE_TYPE_GWSX="您收藏的公司有新的职位发布";
public static final String NOTICE_TYPE_XTLX="1";
public static final String NOTICE_TYPE_SXLX="2";
/**
* 拼装岗位
*/
public static final String JOB_NEW="刚刚发布职位";
public static final String JOB_XZ="薪资";
public static final String JOB_KKB="快去看看吧";
public static final String JOB_QFH="";
public static final String JOB_HFH="";
public static final String JOB_ZJG="-";
public static final String JOB_DH=",";
/**
* 录用通知
* @param companyName
* @param jobName
* @return
*/
public static String appUserLytz(String companyName,String jobName){
return NoticeUtils.NOTICE_COMENT_ZH+companyName+NoticeUtils.NOTICE_COMENT_LY+jobName+NoticeUtils.NOTICE_COMENT_FF;
}
/**
* “海尔集团”刚刚发布职位“产品性能分析工程师”薪资“1.5-2.5k,快去看看吧
* @param job
* @return
*/
public static String appUserGwsx(Job job){
return JOB_QFH+job.getCompanyName()+JOB_HFH+JOB_NEW+JOB_QFH+job.getJobTitle()+JOB_HFH+JOB_XZ+job.getMinSalary()+JOB_ZJG+job.getMaxSalary()+JOB_DH+JOB_KKB;
}
/**
* 审核确认界面拼装消息
*/
public static Notice createLytzNotice(EmployeeConfirm employeeConfirm, Job job) {
Notice notice = new Notice();
notice.setUserId(employeeConfirm.getUserId());
notice.setBussinessId(job.getJobId());
notice.setIsRead(NoticeUtils.NOTICE_WD);
notice.setTitle(NoticeUtils.NOTICE_TYPE_LY);
notice.setSubTitle(NoticeUtils.NOTICE_TYPE_LY);
notice.setNoticeType(NoticeUtils.NOTICE_TYPE_XTLX);
notice.setRemark(NoticeUtils.NOTICE_REMARK);
String content = appUserLytz(job.getCompanyName(), job.getJobTitle());
notice.setNoticeContent(content);
return notice;
}
/**
* 岗位上新
*/
public static List<Notice> createGwsxNotice(List<AppUser> appUserList, Job job) {
List<Notice> add=new ArrayList<>();
appUserList.forEach(appUser -> {
String content = appUserGwsx(job);
Notice notice = new Notice();
notice.setUserId(appUser.getUserId());
notice.setBussinessId(job.getJobId());
notice.setIsRead(NoticeUtils.NOTICE_WD);
notice.setTitle(NoticeUtils.NOTICE_TYPE_GWSX);
notice.setSubTitle(content);
notice.setNoticeType(NoticeUtils.NOTICE_TYPE_SXLX);
notice.setRemark(NoticeUtils.NOTICE_REMARK);
notice.setNoticeContent(content);
add.add(notice);
});
return add;
}
}

View File

@@ -36,4 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where del_flag = '0' and user_id = #{userId} where del_flag = '0' and user_id = #{userId}
order by create_time desc) order by create_time desc)
</select> </select>
<select id="selectAppuserList" resultType="com.ruoyi.common.core.domain.entity.AppUser">
select b.* from company_collection a
INNER JOIN app_user b on a.user_id=b.user_id
WHERE a.del_flag='0' and b.del_flag='0' and a.company_id=#{companyId}
</select>
</mapper> </mapper>

View File

@@ -104,4 +104,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
LIMIT 50 LIMIT 50
</select> </select>
<select id="selectCompanyByJobId" resultType="com.ruoyi.common.core.domain.entity.Company">
select a.* from COMPANY a inner join job b on a.company_id=b.company_id and b.job_id=#{jobId} limit 1
</select>
</mapper> </mapper>

View File

@@ -322,4 +322,10 @@
<include refid="selectAppUserResult"/>inner join app_user a on e.user_id =a.user_id and a.del_flag='0' <include refid="selectAppUserResult"/>inner join app_user a on e.user_id =a.user_id and a.del_flag='0'
where e.del_flag='0' and e.job_id=#{jobId} where e.del_flag='0' and e.job_id=#{jobId}
</select> </select>
<select id="getJobInfo" resultType="com.ruoyi.cms.domain.Job">
SELECT j.*,c.code,c.name as companyName,c.company_id FROM job as j
left join company as c on c.company_id = j.company_id and j.del_flag='0' and j.job_id=#{jobId}
and c.del_flag='0' limit 1
</select>
</mapper> </mapper>

View File

@@ -28,4 +28,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
</select> </select>
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO notice (
title, notice_type, notice_content,is_read,user_id,sub_title,not_read_count,date,bussiness_id,
create_by, create_time, del_flag,remark
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.title}, #{item.noticeType}, #{item.noticeContent},#{item.isRead},#{item.userId},#{item.subTitle},
#{item.notReadCount},sysdate(),#{item.bussinessId},
#{item.createBy}, #{item.createTime}, #{item.delFlag},#{item.remark}
)
</foreach>
</insert>
</mapper> </mapper>