🎨 代码优化

This commit is contained in:
ronger 2023-05-13 08:52:15 +08:00
parent d66a515da0
commit 0eb8c9872e

View File

@ -10,9 +10,9 @@ import com.rymcu.forest.entity.Notification;
import com.rymcu.forest.entity.User; import com.rymcu.forest.entity.User;
import com.rymcu.forest.service.*; import com.rymcu.forest.service.*;
import javax.mail.MessagingException;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.*;
/** /**
* 消息通知工具类 * 消息通知工具类
@ -21,75 +21,56 @@ import java.util.concurrent.*;
*/ */
public class NotificationUtils { public class NotificationUtils {
private static NotificationService notificationService = SpringContextHolder.getBean(NotificationService.class); private static final NotificationService notificationService = SpringContextHolder.getBean(NotificationService.class);
private static UserService userService = SpringContextHolder.getBean(UserService.class); private static final UserService userService = SpringContextHolder.getBean(UserService.class);
private static FollowService followService = SpringContextHolder.getBean(FollowService.class); private static final FollowService followService = SpringContextHolder.getBean(FollowService.class);
private static JavaMailService mailService = SpringContextHolder.getBean(JavaMailService.class); private static final JavaMailService mailService = SpringContextHolder.getBean(JavaMailService.class);
private static final ArticleService articleService = SpringContextHolder.getBean(ArticleService.class);
private static ArticleService articleService = SpringContextHolder.getBean(ArticleService.class); private static final CommentService commentService = SpringContextHolder.getBean(CommentService.class);
private static CommentService commentService = SpringContextHolder.getBean(CommentService.class);
public static void sendAnnouncement(Long dataId, String dataType, String dataSummary) { public static void sendAnnouncement(Long dataId, String dataType, String dataSummary) {
ExecutorService executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); List<User> users = userService.findAll();
CompletableFuture.supplyAsync(() -> { users.forEach(user -> {
try { try {
List<User> users = userService.findAll(); saveNotification(user.getIdUser(), dataId, dataType, dataSummary);
users.forEach(user -> { } catch (MessagingException e) {
saveNotification(user.getIdUser(), dataId, dataType, dataSummary); throw new RuntimeException(e);
});
} catch (Exception ex) {
ex.printStackTrace();
} }
return 0; });
}, executor);
} }
public static void saveNotification(Long idUser, Long dataId, String dataType, String dataSummary) { public static void saveNotification(Long idUser, Long dataId, String dataType, String dataSummary) throws MessagingException {
ExecutorService executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); Notification notification = notificationService.findNotification(idUser, dataId, dataType);
CompletableFuture.supplyAsync(() -> { if (notification == null || NotificationConstant.UpdateArticle.equals(dataType)) {
try { System.out.println("------------------- 开始执行消息通知 ------------------");
Notification notification = notificationService.findNotification(idUser, dataId, dataType); Integer result = notificationService.save(idUser, dataId, dataType, dataSummary);
if (notification == null || NotificationConstant.UpdateArticle.equals(dataType)) { if (result == 0) {
System.out.println("------------------- 开始执行消息通知 ------------------");
Integer result = notificationService.save(idUser, dataId, dataType, dataSummary);
if (result == 0) {
// TODO 记录操作失败数据
}
}
if (NotificationConstant.Comment.equals(dataType)) {
notification = notificationService.findNotification(idUser, dataId, dataType);
NotificationDTO notificationDTO = genNotification(notification);
mailService.sendNotification(notificationDTO);
}
} catch (Exception ex) {
// TODO 记录操作失败数据 // TODO 记录操作失败数据
ex.printStackTrace();
} }
return 0; }
}, executor); if (NotificationConstant.Comment.equals(dataType)) {
notification = notificationService.findNotification(idUser, dataId, dataType);
NotificationDTO notificationDTO = genNotification(notification);
mailService.sendNotification(notificationDTO);
}
} }
public static void sendArticlePush(Long dataId, String dataType, String dataSummary, Long articleAuthorId) { public static void sendArticlePush(Long dataId, String dataType, String dataSummary, Long articleAuthorId) {
ExecutorService executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); List<Follow> follows;
CompletableFuture.supplyAsync(() -> { if (NotificationConstant.PostArticle.equals(dataType)) {
// 关注用户通知
follows = followService.findByFollowingId("0", articleAuthorId);
} else {
// 关注文章通知
follows = followService.findByFollowingId("3", articleAuthorId);
}
follows.forEach(follow -> {
try { try {
List<Follow> follows; saveNotification(follow.getFollowerId(), dataId, dataType, dataSummary);
if (NotificationConstant.PostArticle.equals(dataType)) { } catch (MessagingException e) {
// 关注用户通知 throw new RuntimeException(e);
follows = followService.findByFollowingId("0", articleAuthorId);
} else {
// 关注文章通知
follows = followService.findByFollowingId("3", articleAuthorId);
}
follows.forEach(follow -> {
saveNotification(follow.getFollowerId(), dataId, dataType, dataSummary);
});
} catch (Exception ex) {
ex.printStackTrace();
} }
return 0; });
}, executor);
} }
public static NotificationDTO genNotification(Notification notification) { public static NotificationDTO genNotification(Notification notification) {