diff --git a/backend/app/src/main/resources/commons.properties b/backend/app/src/main/resources/commons.properties index 31f613fe0..909e29972 100644 --- a/backend/app/src/main/resources/commons.properties +++ b/backend/app/src/main/resources/commons.properties @@ -23,7 +23,7 @@ spring.datasource.hikari.connection-test-query=SELECT 1 # Quartz Scheduler DataSource Settings quartz.enabled=true -quartz.scheduler-name=cordysCRMScheduler +quartz.scheduler-name=CORDYS-CRM-QUARTZ quartz.thread-count=10 quartz.properties.org.quartz.jobStore.acquireTriggersWithinLock=true diff --git a/backend/crm/src/main/java/io/cordys/crm/system/job/AddAnnounceNoticeJob.java b/backend/crm/src/main/java/io/cordys/crm/system/job/AnnounceToNotifyJob.java similarity index 86% rename from backend/crm/src/main/java/io/cordys/crm/system/job/AddAnnounceNoticeJob.java rename to backend/crm/src/main/java/io/cordys/crm/system/job/AnnounceToNotifyJob.java index a1dfde3a8..133bb670a 100644 --- a/backend/crm/src/main/java/io/cordys/crm/system/job/AddAnnounceNoticeJob.java +++ b/backend/crm/src/main/java/io/cordys/crm/system/job/AnnounceToNotifyJob.java @@ -16,14 +16,12 @@ import java.util.ArrayList; import java.util.List; @Component -public class AddAnnounceNoticeJob { +public class AnnounceToNotifyJob { @Resource private ExtAnnouncementMapper extAnnouncementMapper; - @Resource private AnnouncementService announcementService; - /** * 将到期发布的公告转成通知 每天凌晨三点执行 */ @@ -43,13 +41,13 @@ public class AddAnnounceNoticeJob { return; } //将公告根据接收人生成相关的通知 - Listids = new ArrayList<>(); + List ids = new ArrayList<>(); for (AnnouncementDTO announcementDTO : announcementDTOS) { List userIds = JSON.parseArray(new String(announcementDTO.getReceiver()), String.class); - announcementService.convertNotification("admin",announcementDTO,userIds); + announcementService.convertNotification("admin", announcementDTO, userIds); ids.add(announcementDTO.getId()); } - extAnnouncementMapper.updateNotice(ids,true,announcementDTOS.getFirst().getOrganizationId()); + extAnnouncementMapper.updateNotice(ids, true, announcementDTOS.getFirst().getOrganizationId()); } } diff --git a/backend/crm/src/main/java/io/cordys/crm/system/job/SSENotificationJob.java b/backend/crm/src/main/java/io/cordys/crm/system/job/SSENotificationJob.java new file mode 100644 index 000000000..4571a06dd --- /dev/null +++ b/backend/crm/src/main/java/io/cordys/crm/system/job/SSENotificationJob.java @@ -0,0 +1,21 @@ +package io.cordys.crm.system.job; + +import com.fit2cloud.quartz.anno.QuartzScheduled; +import io.cordys.crm.system.notice.sse.SseService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class SSENotificationJob { + + @Resource + private SseService sseService; + + /** + * 每 5 秒向对应客户端推送一次消息 + */ + @QuartzScheduled(fixedRate = 5000) + public void broadcastPeriodically() { + sseService.broadcastPeriodically(); + } +} diff --git a/backend/crm/src/main/java/io/cordys/crm/system/notice/sse/SseService.java b/backend/crm/src/main/java/io/cordys/crm/system/notice/sse/SseService.java index 84d98b714..32508416e 100644 --- a/backend/crm/src/main/java/io/cordys/crm/system/notice/sse/SseService.java +++ b/backend/crm/src/main/java/io/cordys/crm/system/notice/sse/SseService.java @@ -2,7 +2,6 @@ package io.cordys.crm.system.notice.sse; import io.cordys.common.util.LogUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -61,7 +60,6 @@ public class SseService { /** * 每隔 5 秒向所有客户端广播一次事件 */ - @Scheduled(fixedRate = 5000) // 单位:毫秒 public void broadcastPeriodically() { // 如果没有客户端连接,则不广播 if (emitters.isEmpty()) { diff --git a/backend/crm/src/test/java/io/cordys/crm/system/controller/AddNotificationJobTests.java b/backend/crm/src/test/java/io/cordys/crm/system/controller/AddNotificationJobTests.java index 360e4d083..4c376d373 100644 --- a/backend/crm/src/test/java/io/cordys/crm/system/controller/AddNotificationJobTests.java +++ b/backend/crm/src/test/java/io/cordys/crm/system/controller/AddNotificationJobTests.java @@ -6,7 +6,7 @@ import io.cordys.crm.system.domain.Announcement; import io.cordys.crm.system.domain.Notification; import io.cordys.crm.system.dto.AnnouncementReceiveTypeDTO; import io.cordys.crm.system.dto.response.NotificationDTO; -import io.cordys.crm.system.job.AddAnnounceNoticeJob; +import io.cordys.crm.system.job.AnnounceToNotifyJob; import io.cordys.crm.system.mapper.ExtNotificationMapper; import io.cordys.mybatis.BaseMapper; import jakarta.annotation.Resource; @@ -23,7 +23,7 @@ import java.util.List; public class AddNotificationJobTests { @Resource - private AddAnnounceNoticeJob addAnnounceNoticeJob; + private AnnounceToNotifyJob announceToNotifyJob; @Resource private BaseMapper announcementBaseMapper; @@ -57,7 +57,7 @@ public class AddNotificationJobTests { saveNotice(); List createTimeAsc = announcementBaseMapper.selectAll("create_time asc"); Assertions.assertTrue(CollectionUtils.isNotEmpty(createTimeAsc)); - addAnnounceNoticeJob.addNotification(); + announceToNotifyJob.addNotification(); Notification notification = new Notification(); notification.setOrganizationId("100001"); notification.setResourceId("SDDFDJJND");