添加直播推荐,并且发送消息
This commit is contained in:
@@ -66,4 +66,13 @@ public class LiveApplyController extends BaseController
|
|||||||
{
|
{
|
||||||
return toAjax(liveApplyService.deleteLiveApplyByIds(ids));
|
return toAjax(liveApplyService.deleteLiveApplyByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("直播推荐")
|
||||||
|
@PreAuthorize("@ss.hasPermi('live:apply:liveRecommendNotic')")
|
||||||
|
@GetMapping("/liveRecommendNotic")
|
||||||
|
public AjaxResult liveRecommendNotic(@RequestBody LiveApply liveApply)
|
||||||
|
{
|
||||||
|
liveApplyService.sendLiveRecommendNotic(liveApply);
|
||||||
|
return success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -41,4 +41,8 @@ public class LiveApply extends BaseEntity {
|
|||||||
|
|
||||||
@ApiModelProperty("状态 1通过,2不通过")
|
@ApiModelProperty("状态 1通过,2不通过")
|
||||||
private String liveStatus;
|
private String liveStatus;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@ApiModelProperty("期望岗位,逗号分隔")
|
||||||
|
private String jobTitleId;
|
||||||
}
|
}
|
||||||
@@ -58,4 +58,6 @@ public interface AppUserMapper extends BaseMapper<AppUser>
|
|||||||
AppUser getAppUserBase(@Param("idCard") String idCard);
|
AppUser getAppUserBase(@Param("idCard") String idCard);
|
||||||
|
|
||||||
Integer getIsJbdUser(@Param("idCard") String idCard);
|
Integer getIsJbdUser(@Param("idCard") String idCard);
|
||||||
|
|
||||||
|
List<Long> selectUsersNotice(@Param("jobTitles") List<String> jobTitles);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,4 +16,6 @@ public interface LiveApplyService extends IService<LiveApply> {
|
|||||||
int updateLiveApply(LiveApply liveApply);
|
int updateLiveApply(LiveApply liveApply);
|
||||||
|
|
||||||
int deleteLiveApplyByIds(Long[] ids);
|
int deleteLiveApplyByIds(Long[] ids);
|
||||||
|
|
||||||
|
public void sendLiveRecommendNotic(LiveApply liveApply);
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,34 @@
|
|||||||
package com.ruoyi.cms.service.impl;
|
package com.ruoyi.cms.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.ruoyi.cms.domain.Notice;
|
||||||
import com.ruoyi.cms.domain.liveSteam.LiveApply;
|
import com.ruoyi.cms.domain.liveSteam.LiveApply;
|
||||||
|
import com.ruoyi.cms.mapper.AppUserMapper;
|
||||||
|
import com.ruoyi.cms.mapper.JobTitleMapper;
|
||||||
import com.ruoyi.cms.mapper.LiveApplyMapper;
|
import com.ruoyi.cms.mapper.LiveApplyMapper;
|
||||||
|
import com.ruoyi.cms.mapper.NoticeMapper;
|
||||||
import com.ruoyi.cms.service.LiveApplyService;
|
import com.ruoyi.cms.service.LiveApplyService;
|
||||||
|
import com.ruoyi.cms.util.notice.NoticeUtils;
|
||||||
|
import com.ruoyi.common.core.domain.entity.JobTitle;
|
||||||
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 java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class LiveApplyServiceImpl extends ServiceImpl<LiveApplyMapper, LiveApply> implements LiveApplyService {
|
public class LiveApplyServiceImpl extends ServiceImpl<LiveApplyMapper, LiveApply> implements LiveApplyService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private LiveApplyMapper liveApplyMapper;
|
private LiveApplyMapper liveApplyMapper;
|
||||||
|
@Autowired
|
||||||
|
private AppUserMapper appUserMapper;
|
||||||
|
@Autowired
|
||||||
|
private NoticeMapper noticeMapper;
|
||||||
|
@Autowired
|
||||||
|
private JobTitleMapper jobTitleMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LiveApply selectLiveApplyById(Long id)
|
public LiveApply selectLiveApplyById(Long id)
|
||||||
@@ -46,4 +60,74 @@ public class LiveApplyServiceImpl extends ServiceImpl<LiveApplyMapper, LiveApply
|
|||||||
return liveApplyMapper.deleteBatchIds(Arrays.asList(ids));
|
return liveApplyMapper.deleteBatchIds(Arrays.asList(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendLiveRecommendNotic(LiveApply liveApply) {
|
||||||
|
if (liveApply == null || liveApply.getId() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LiveApply applyDetail = liveApplyMapper.selectById(liveApply.getId());
|
||||||
|
if (applyDetail == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String jobStr = liveApply.getJobTitleId();
|
||||||
|
|
||||||
|
List<String> rawJobIdStrList = new ArrayList<>();
|
||||||
|
if (jobStr != null && !jobStr.trim().isEmpty()) {
|
||||||
|
rawJobIdStrList = Arrays.stream(jobStr.split(","))
|
||||||
|
.map(String::trim)
|
||||||
|
.filter(s -> !s.trim().isEmpty())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
if (rawJobIdStrList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Long> collect = rawJobIdStrList.stream().map(Long::valueOf).collect(Collectors.toList());
|
||||||
|
|
||||||
|
String jobNameText = "";
|
||||||
|
if (!collect.isEmpty()) {
|
||||||
|
List<JobTitle> jobTitleList = jobTitleMapper.selectBatchIds(collect);
|
||||||
|
jobNameText = jobTitleList.stream().map(JobTitle::getJobName).collect(Collectors.joining(","));
|
||||||
|
}
|
||||||
|
List<Long> userIdList = appUserMapper.selectUsersNotice(rawJobIdStrList);
|
||||||
|
if (!userIdList.isEmpty()) {
|
||||||
|
batchCreateNotice(userIdList, applyDetail,jobNameText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成
|
||||||
|
* @param userIds
|
||||||
|
* @param liveApply
|
||||||
|
*/
|
||||||
|
public void batchCreateNotice(List<Long> userIds,LiveApply liveApply,String jobNameText){
|
||||||
|
final Long busId = liveApply.getId();
|
||||||
|
final String isRead = NoticeUtils.NOTICE_WD;
|
||||||
|
final String title = NoticeUtils.NOTICE_TYPE_ZBTZ;
|
||||||
|
final String subTitle = NoticeUtils.NOTICE_TYPE_ZBTZ;
|
||||||
|
final String noticeType = NoticeUtils.NOTICE_TYPE_XTLX;
|
||||||
|
final String remark = NoticeUtils.NOTICE_REMARK;
|
||||||
|
final String content = NoticeUtils.zbkbMsg(liveApply,jobNameText);
|
||||||
|
|
||||||
|
int batchSize = 500;
|
||||||
|
int total = userIds.size();
|
||||||
|
for (int i = 0; i < total; i += batchSize) {
|
||||||
|
int end = Math.min(i + batchSize, total);
|
||||||
|
List<Long> subUserIds = userIds.subList(i, end);
|
||||||
|
|
||||||
|
List<Notice> noticeList = new ArrayList<>(subUserIds.size());
|
||||||
|
for (Long uid : subUserIds) {
|
||||||
|
Notice n = new Notice();
|
||||||
|
n.setUserId(uid);
|
||||||
|
n.setBussinessId(busId);
|
||||||
|
n.setIsRead(isRead);
|
||||||
|
n.setTitle(title);
|
||||||
|
n.setSubTitle(subTitle);
|
||||||
|
n.setNoticeType(noticeType);
|
||||||
|
n.setRemark(remark);
|
||||||
|
n.setNoticeContent(content);
|
||||||
|
noticeList.add(n);
|
||||||
|
}
|
||||||
|
noticeMapper.batchInsert(noticeList);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ package com.ruoyi.cms.util.notice;
|
|||||||
import com.ruoyi.cms.domain.EmployeeConfirm;
|
import com.ruoyi.cms.domain.EmployeeConfirm;
|
||||||
import com.ruoyi.cms.domain.Job;
|
import com.ruoyi.cms.domain.Job;
|
||||||
import com.ruoyi.cms.domain.Notice;
|
import com.ruoyi.cms.domain.Notice;
|
||||||
|
import com.ruoyi.cms.domain.liveSteam.LiveApply;
|
||||||
import com.ruoyi.common.core.domain.entity.AppUser;
|
import com.ruoyi.common.core.domain.entity.AppUser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -46,6 +47,11 @@ public class NoticeUtils {
|
|||||||
|
|
||||||
/*************面试end*************/
|
/*************面试end*************/
|
||||||
|
|
||||||
|
/*************直播start*************/
|
||||||
|
public static final String NOTICE_TYPE_ZBTZ="直播通知";
|
||||||
|
public static final String NOTICE_LIVE_STARTMSG = "您可能感兴趣的直播开播啦!\n本次直播岗位:%s\n主持人:%s\n开播时段:%s ~ %s\n请前往首页点击直播按钮观看!";
|
||||||
|
/*************直播end*************/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拼装岗位
|
* 拼装岗位
|
||||||
*/
|
*/
|
||||||
@@ -133,4 +139,16 @@ public class NoticeUtils {
|
|||||||
jbName +NoticeUtils.NOTICE_COMENT_FF + typeText +","+ msgExtra
|
jbName +NoticeUtils.NOTICE_COMENT_FF + typeText +","+ msgExtra
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直播开播
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String zbkbMsg(LiveApply liveApply,String jobNameText){
|
||||||
|
String jobNames = jobNameText == null ? "" : jobNameText.replace(",", "、");
|
||||||
|
String livePerson = liveApply.getLivePerson() == null ? "" : liveApply.getLivePerson();
|
||||||
|
String start = liveApply.getLiveStartTime() == null ? "" : liveApply.getLiveStartTime();
|
||||||
|
String end = liveApply.getLiveEndTime() == null ? "" : liveApply.getLiveEndTime();
|
||||||
|
return String.format(NOTICE_LIVE_STARTMSG, jobNames, livePerson, start, end);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -336,4 +336,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
select count(dw_userid) from dwd_system_user where id_card=#{idCard}
|
select count(dw_userid) from dwd_system_user where id_card=#{idCard}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectUsersNotice" parameterType="java.util.List" resultType="java.lang.Long">
|
||||||
|
SELECT user_id FROM app_user
|
||||||
|
WHERE del_flag = 0
|
||||||
|
<if test="jobTitles != null and jobTitles.size() > 0">
|
||||||
|
AND (
|
||||||
|
<foreach collection="jobTitles" item="item" separator="OR">
|
||||||
|
POSITION(','||#{item}||',' IN ','||job_title_id||',') > 0
|
||||||
|
</foreach>
|
||||||
|
)
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user