🎨 代码优化
This commit is contained in:
parent
d66a515da0
commit
0eb8c9872e
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user