diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/LiveApplyController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/LiveApplyController.java index 02d6a19..6abc9e2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/LiveApplyController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/LiveApplyController.java @@ -66,4 +66,13 @@ public class LiveApplyController extends BaseController { 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(); + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/liveSteam/LiveApply.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/liveSteam/LiveApply.java index f2a5680..7d1bebf 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/liveSteam/LiveApply.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/liveSteam/LiveApply.java @@ -41,4 +41,8 @@ public class LiveApply extends BaseEntity { @ApiModelProperty("状态 1通过,2不通过") private String liveStatus; + + @TableField(exist = false) + @ApiModelProperty("期望岗位,逗号分隔") + private String jobTitleId; } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java index 47a7b31..dc49cdc 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/AppUserMapper.java @@ -58,4 +58,6 @@ public interface AppUserMapper extends BaseMapper AppUser getAppUserBase(@Param("idCard") String idCard); Integer getIsJbdUser(@Param("idCard") String idCard); + + List selectUsersNotice(@Param("jobTitles") List jobTitles); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/LiveApplyService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/LiveApplyService.java index f3c5a85..7ba0881 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/LiveApplyService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/LiveApplyService.java @@ -16,4 +16,6 @@ public interface LiveApplyService extends IService { int updateLiveApply(LiveApply liveApply); int deleteLiveApplyByIds(Long[] ids); + + public void sendLiveRecommendNotic(LiveApply liveApply); } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/LiveApplyServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/LiveApplyServiceImpl.java index 74463f4..bb968ce 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/LiveApplyServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/LiveApplyServiceImpl.java @@ -1,20 +1,34 @@ package com.ruoyi.cms.service.impl; 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.mapper.AppUserMapper; +import com.ruoyi.cms.mapper.JobTitleMapper; import com.ruoyi.cms.mapper.LiveApplyMapper; +import com.ruoyi.cms.mapper.NoticeMapper; 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.stereotype.Service; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @Service public class LiveApplyServiceImpl extends ServiceImpl implements LiveApplyService { @Autowired private LiveApplyMapper liveApplyMapper; + @Autowired + private AppUserMapper appUserMapper; + @Autowired + private NoticeMapper noticeMapper; + @Autowired + private JobTitleMapper jobTitleMapper; @Override public LiveApply selectLiveApplyById(Long id) @@ -46,4 +60,74 @@ public class LiveApplyServiceImpl extends ServiceImpl 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 collect = rawJobIdStrList.stream().map(Long::valueOf).collect(Collectors.toList()); + + String jobNameText = ""; + if (!collect.isEmpty()) { + List jobTitleList = jobTitleMapper.selectBatchIds(collect); + jobNameText = jobTitleList.stream().map(JobTitle::getJobName).collect(Collectors.joining(",")); + } + List userIdList = appUserMapper.selectUsersNotice(rawJobIdStrList); + if (!userIdList.isEmpty()) { + batchCreateNotice(userIdList, applyDetail,jobNameText); + } + } + + /** + * 生成 + * @param userIds + * @param liveApply + */ + public void batchCreateNotice(List 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 subUserIds = userIds.subList(i, end); + + List 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); + } + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/notice/NoticeUtils.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/notice/NoticeUtils.java index 45d1dd2..7cc7f6c 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/notice/NoticeUtils.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/notice/NoticeUtils.java @@ -3,6 +3,7 @@ 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.cms.domain.liveSteam.LiveApply; import com.ruoyi.common.core.domain.entity.AppUser; import java.util.ArrayList; @@ -46,6 +47,11 @@ public class NoticeUtils { /*************面试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 ); } + + /** + * 直播开播 + * @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); + } } diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml index 22d2315..c3f3ca5 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml @@ -336,4 +336,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(dw_userid) from dwd_system_user where id_card=#{idCard} + + \ No newline at end of file