提交 36498f0a 编写于 作者: 街头小贩's avatar 街头小贩

增加Moderator相关事件的通知

上级 b210bd0a
......@@ -31,5 +31,4 @@ public class BoardConfigListener implements ApplicationListener<BoardCreateEvent
boardConfigDao.save(boardConfig);
logger.info("[Event][Board][2]版块配置文件执行结束");
}
}
......@@ -27,5 +27,4 @@ public class BoardStatsListener implements ApplicationListener<BoardCreateEvent>
boardStatsDao.createStats(board.getId(), board.getVolumesId());
logger.info("[Event][Board][2]版块统计文件执行结束");
}
}
......@@ -34,5 +34,4 @@ public class PostsStatsListener implements ApplicationListener<PostsPublishEvent
topicStatsDao.updatePosts(posts.getTopicId(), posts.getMemberId(), posts.getMemberNickname(), posts.getEntryDateTime(), posts.getId());
logger.info("[Event][Posts][1]执行回复相关的统计更新结束");
}
}
......@@ -34,5 +34,4 @@ public class TopicStatsListener implements ApplicationListener<TopicPublishEvent
boardStatsDao.updateTopic(topic.getBoardId(), topic.getTitle(), topic.getId(), topic.getEntryDateTime(), topic.getMemberId(), topic.getMemberNickname());
logger.info("[Event][Topic][3]话题统计和版块统计处理结束");
}
}
......@@ -33,5 +33,4 @@ public class TopicTagListener implements ApplicationListener<TopicPublishEvent>{
topicTagDao.batchSave(topic.getId(), topic.getTages());
logger.info("[Event][Topic][4]话题标签处理结束");
}
}
......@@ -34,5 +34,4 @@ public class ForumLetterPostInboxListener implements ApplicationListener<ForumLe
inboxDao.batchSave(letterEntryRecords);
logger.info("[Event][Letter][1]信件投递通知结束");
}
}
......@@ -14,10 +14,10 @@ import com.apobates.forum.member.api.dao.MemberDao;
* @since 20190804
*/
@Component
public class MemberChangeStatusListener implements ApplicationListener<MemberPenalizeEvent>{
public class MemberPenalizeChangeStatusListener implements ApplicationListener<MemberPenalizeEvent>{
@Autowired
private MemberDao memberDao;
private final static Logger logger = LoggerFactory.getLogger(MemberChangeStatusListener.class);
private final static Logger logger = LoggerFactory.getLogger(MemberPenalizeChangeStatusListener.class);
@Override
public void onApplicationEvent(MemberPenalizeEvent event) {
......@@ -26,5 +26,4 @@ public class MemberChangeStatusListener implements ApplicationListener<MemberPen
memberDao.editMemberStatus(event.getMember(), event.getArrive());
logger.info("[Event][Member][11]惩罚状态更新结束");
}
}
......@@ -29,5 +29,4 @@ public class MemberSignUpInviteCodeListener implements ApplicationListener<Membe
}
logger.info("[Event][Member][3]注册成功后激活邀请码结束");
}
}
......@@ -32,5 +32,4 @@ public class MemberSignUpPromoteListener implements ApplicationListener<MemberSi
}
logger.info("[Event][Member][2]通知发送完毕");
}
}
......@@ -7,12 +7,7 @@ import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.jcache.JCacheCacheManager;
import org.springframework.cache.jcache.JCacheManagerFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.EnableLoadTimeWeaving;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.orm.jpa.JpaTransactionManager;
......@@ -27,15 +22,6 @@ import com.apobates.forum.core.impl.CoreModuleActionEventAspect;
import com.apobates.forum.letterbox.impl.LetterAppConfig;
import com.apobates.forum.member.impl.MemberActionAspect;
import com.apobates.forum.member.impl.MemberAppConfig;
import com.apobates.forum.trident.event.MemberPenalizeNoticeListener;
import com.apobates.forum.trident.event.MemberSignInNoticeListener;
import com.apobates.forum.trident.event.MemberSignUpNoticeListener;
import com.apobates.forum.trident.event.ModeratorBornNoticeListener;
import com.apobates.forum.trident.event.ModeratorRecallNoticeListener;
import com.apobates.forum.trident.event.PostsMoodNoticeListener;
import com.apobates.forum.trident.event.PostsQuoteNoticeListener;
import com.apobates.forum.trident.event.PostsReplyNoticeListener;
import com.apobates.forum.trident.event.TopicMoveNoticeListener;
/**
* Spring framework配置类
* @applicationContext.xml
......@@ -49,6 +35,7 @@ import com.apobates.forum.trident.event.TopicMoveNoticeListener;
@EnableAspectJAutoProxy(proxyTargetClass=true)
@EnableTransactionManagement(proxyTargetClass=true)
@Import(value={MemberAppConfig.class, CoreAppConfig.class, LetterAppConfig.class})
@ComponentScan(basePackages = {"com.apobates.forum.trident.event"}, useDefaultFilters = false, includeFilters = {@ComponentScan.Filter(classes = {org.springframework.stereotype.Component.class})})
public class TridentAppConfig{
@Autowired
private Environment env;
......@@ -150,44 +137,6 @@ public class TridentAppConfig{
public CoreModuleActionEventAspect buildCmae(){
return new com.apobates.forum.core.impl.CoreModuleActionEventAspect();
}
//CORE事件侦听器
@Bean
public PostsReplyNoticeListener registerReplyNotice(){
return new com.apobates.forum.trident.event.PostsReplyNoticeListener();
}
@Bean
public PostsQuoteNoticeListener registerQuoteNotice(){
return new com.apobates.forum.trident.event.PostsQuoteNoticeListener();
}
@Bean
public PostsMoodNoticeListener registerMoodNotice(){
return new com.apobates.forum.trident.event.PostsMoodNoticeListener();
}
@Bean
public TopicMoveNoticeListener registerTopicMoveNotice(){
return new com.apobates.forum.trident.event.TopicMoveNoticeListener();
}
@Bean
public ModeratorRecallNoticeListener registerMRRoleChangeNotice() {
return new ModeratorRecallNoticeListener();
}
@Bean
public ModeratorBornNoticeListener registerMBRoleChangeNotice() {
return new ModeratorBornNoticeListener();
}
//Member事件侦听器
@Bean
public MemberSignUpNoticeListener registerSignUpNotice(){
return new com.apobates.forum.trident.event.MemberSignUpNoticeListener();
}
@Bean
public MemberSignInNoticeListener registerSignInNotice(){
return new com.apobates.forum.trident.event.MemberSignInNoticeListener();
}
@Bean
public MemberPenalizeNoticeListener registerPenalizeNotice(){
return new com.apobates.forum.trident.event.MemberPenalizeNoticeListener();
}
@Bean("tokenParamFilter")
public Filter requestTokenParameterFilter(){
return new com.apobates.forum.trident.controller.helper.RequestTokenParameterFilter();
......
......@@ -8,11 +8,14 @@ import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.member.entity.MemberStatusEnum;
import com.apobates.forum.member.impl.event.MemberPenalizeEvent;
import org.springframework.stereotype.Component;
/**
* 会员惩罚通知
* @author xiaofanku
* @since 20190804
*/
@Component
public class MemberPenalizeNoticeListener implements ApplicationListener<MemberPenalizeEvent>{
@Autowired
private ForumLetterService forumLetterService;
......
......@@ -17,11 +17,14 @@ import com.apobates.forum.member.impl.event.MemberSignInEvent;
import com.apobates.forum.utils.DateTimeUtils;
import com.apobates.forum.utils.ip.IPMatcher;
import com.apobates.forum.utils.ip.IPMatcher.IpMatchResult;
import org.springframework.stereotype.Component;
/**
* 会员登录事件侦听器,异地登录通知
* @author xiaofanku
* @since 20190703
*/
@Component
public class MemberSignInNoticeListener implements ApplicationListener<MemberSignInEvent>{
@Autowired
private ForumLetterService forumLetterService;
......
......@@ -9,11 +9,14 @@ import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.member.entity.Member;
import com.apobates.forum.member.impl.event.MemberSignUpEvent;
import org.springframework.stereotype.Component;
/**
* 会员注册事件侦听器,会员注册后的发送问候通知
* @author xiaofanku
* @since 20190703
*/
@Component
public class MemberSignUpNoticeListener implements ApplicationListener<MemberSignUpEvent>{
@Autowired
private ForumLetterService forumLetterService;
......
package com.apobates.forum.trident.event;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import com.apobates.forum.core.entity.BoardModerator;
import com.apobates.forum.core.impl.event.ModeratorBornEvent;
import com.apobates.forum.member.api.dao.MemberDao;
import com.apobates.forum.member.entity.Member;
import com.apobates.forum.member.entity.MemberRoleEnum;
import org.springframework.stereotype.Component;
/**
* 版主新生事件的角色变更监听器
*
* @author xiaofanku
* @since 20200831
*/
@Component
public class ModeratorBornChangeRoleListener implements ApplicationListener<ModeratorBornEvent>{
@Autowired
private MemberDao memberDao;
private final static Logger logger = LoggerFactory.getLogger(ModeratorBornChangeRoleListener.class);
//从BoardModeratorDaoImpl.pushModerator中取消MemberDao
@Override
public void onApplicationEvent(ModeratorBornEvent e) {
logger.info("[Event][Moderator][1]版主新生角色变更开始");
BoardModerator moderator = e.getModerator();
Member member = e.getMember();
MemberRoleEnum currentRole = moderator.isVolumesMaster()?MemberRoleEnum.MASTER:MemberRoleEnum.BM;
if (currentRole.getSymbol() > member.getMrole().getSymbol()) {
//更新会员的角色|这是升职了
memberDao.editMemberRole(member.getId(), currentRole);
}
logger.info("[Event][Moderator][1]版主新生角色变更结束");
}
}
package com.apobates.forum.trident.event;
import com.apobates.forum.core.api.service.BoardGroupService;
import com.apobates.forum.core.api.service.BoardService;
import com.apobates.forum.core.entity.Board;
import com.apobates.forum.core.entity.BoardGroup;
import com.apobates.forum.core.entity.BoardModerator;
import com.apobates.forum.core.entity.ModeratorLevelEnum;
import com.apobates.forum.core.impl.event.ModeratorBornEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.member.entity.MemberRoleEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import com.apobates.forum.core.entity.BoardModerator;
import com.apobates.forum.core.impl.event.ModeratorBornEvent;
import com.apobates.forum.member.api.dao.MemberDao;
import com.apobates.forum.member.entity.Member;
import com.apobates.forum.member.entity.MemberRoleEnum;
import java.util.Optional;
/**
* 版主新生事件的角色变更监听器
*
* @author xiaofanku
* @since 20200831
*/
public class ModeratorBornNoticeListener implements ApplicationListener<ModeratorBornEvent>{
public class ModeratorBornNoticeListener implements ApplicationListener<ModeratorBornEvent> {
@Autowired
private BoardService boardService;
@Autowired
private MemberDao memberDao;
private BoardGroupService boardGroupService;
@Autowired
private ForumLetterService forumLetterService;
private final static Logger logger = LoggerFactory.getLogger(ModeratorBornNoticeListener.class);
//从BoardModeratorDaoImpl.pushModerator中取消MemberDao
@Override
public void onApplicationEvent(ModeratorBornEvent e) {
logger.info("[Event][Moderator][1]版主新生角色变更开始");
BoardModerator moderator = e.getModerator();
Member member = e.getMember();
MemberRoleEnum currentRole = moderator.isVolumesMaster()?MemberRoleEnum.MASTER:MemberRoleEnum.BM;
if (currentRole.getSymbol() > member.getMrole().getSymbol()) {
//更新会员的角色|这是升职了
memberDao.editMemberRole(member.getId(), currentRole);
public void onApplicationEvent(ModeratorBornEvent event) {
logger.info("[Moderator][BornEvent][2]版主任命通知开始发送");
BoardModerator bm = event.getModerator();
MemberRoleEnum currentRole = bm.isVolumesMaster()?MemberRoleEnum.MASTER:MemberRoleEnum.BM;
forumLetterService.create(getModeratorBornNotice(bm.getMemberId(), bm.getMemberNickname(), bm.getLevel(), currentRole, boardGroupService.get(bm.getVolumesId()), boardService.get(bm.getBoardId())));
logger.info("[Moderator][BornEvent][2]版主任命通知发送结束");
}
//生成任命通知
private ForumLetter getModeratorBornNotice(long memberId, String names, ModeratorLevelEnum level, MemberRoleEnum currentRole, Optional<BoardGroup> boardGroup, Optional<Board> board) {
String section = "";
if(MemberRoleEnum.MASTER == currentRole && boardGroup.isPresent()){
BoardGroup bgr = boardGroup.get();
section=String.format("<a class=\"embed-link\" href=\"/board/volumes/%s.xhtml\">%s</a>的", bgr.getConnect(), bgr.getTitle());
}
if(MemberRoleEnum.BM == currentRole && boardGroup.isPresent() && board.isPresent()){
BoardGroup bgr = boardGroup.get();
Board br = board.get();
section=String.format("<a class=\"embed-link\" href=\"/board/volumes/%s.xhtml\">%s</a> &#187; <a class=\"embed-link\" href=\"/board/%s.xhtml\">%s</a>的",
bgr.getConnect(), bgr.getTitle(),
br.getConnect(), br.getTitle());
}
logger.info("[Event][Moderator][1]版主新生角色变更结束");
String content = String.format("恭喜您加入社区管理团队, 您现在是%s%s%s", section, level.getTitle(), currentRole.getTitle());
//(String title, String content, long author, String authorNames, ForumLetterTypeEnum type)
return new ForumLetter("版主任命通知", content, memberId, names);
}
}
package com.apobates.forum.trident.event;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import com.apobates.forum.core.entity.BoardModeratorRoleHistory;
import com.apobates.forum.core.impl.event.ModeratorRecallEvent;
import com.apobates.forum.member.api.dao.MemberDao;
import org.springframework.stereotype.Component;
/**
* 版主卸任事件的角色变更监听器
*
* @author xiaofanku
* @since 20200831
*/
@Component
public class ModeratorRecallChangeRoleListener implements ApplicationListener<ModeratorRecallEvent>{
@Autowired
private MemberDao memberDao;
private final static Logger logger = LoggerFactory.getLogger(ModeratorRecallChangeRoleListener.class);
//从BoardModeratorDaoImpl.deleteModerator中取消MemberDao
@Override
public void onApplicationEvent(ModeratorRecallEvent e) {
logger.info("[Event][Moderator][2]版主卸任角色变更开始");
BoardModeratorRoleHistory bmrh = e.getRemoveRoleHistory();
memberDao.editMemberRole(bmrh.getMemberId(), e.getUpdateRole());
logger.info("[Event][Moderator][2]版主卸任角色变更结束");
}
}
package com.apobates.forum.trident.event;
import com.apobates.forum.core.api.service.BoardGroupService;
import com.apobates.forum.core.api.service.BoardService;
import com.apobates.forum.core.entity.Board;
import com.apobates.forum.core.entity.BoardGroup;
import com.apobates.forum.core.entity.BoardModeratorRoleHistory;
import com.apobates.forum.core.impl.event.ModeratorRecallEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.member.api.service.MemberService;
import com.apobates.forum.member.entity.Member;
import com.apobates.forum.member.entity.MemberRoleEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import com.apobates.forum.core.entity.BoardModeratorRoleHistory;
import com.apobates.forum.core.impl.event.ModeratorRecallEvent;
import com.apobates.forum.member.api.dao.MemberDao;
import java.util.Optional;
/**
* 版主卸任事件的角色变更监听器
*
* @author xiaofanku
* @since 20200831
*/
public class ModeratorRecallNoticeListener implements ApplicationListener<ModeratorRecallEvent>{
public class ModeratorRecallNoticeListener implements ApplicationListener<ModeratorRecallEvent> {
@Autowired
private BoardService boardService;
@Autowired
private MemberDao memberDao;
private BoardGroupService boardGroupService;
@Autowired
private MemberService memberSerivce;
@Autowired
private ForumLetterService forumLetterService;
private final static Logger logger = LoggerFactory.getLogger(ModeratorRecallNoticeListener.class);
//从BoardModeratorDaoImpl.deleteModerator中取消MemberDao
@Override
public void onApplicationEvent(ModeratorRecallEvent e) {
logger.info("[Event][Moderator][2]版主卸任角色变更开始");
BoardModeratorRoleHistory bmrh = e.getRemoveRoleHistory();
memberDao.editMemberRole(bmrh.getMemberId(), e.getUpdateRole());
logger.info("[Event][Moderator][2]版主卸任角色变更结束");
public void onApplicationEvent(ModeratorRecallEvent event) {
logger.info("[Moderator][RecallEvent][2]版主卸任通知开始发送");
final BoardModeratorRoleHistory mrh = event.getRemoveRoleHistory();
final MemberRoleEnum currentRole = event.getUpdateRole();
Optional<Member> member = memberSerivce.get(mrh.getMemberId());
member.ifPresent(m -> {
forumLetterService.create(getModeratorRecallNotice(m.getId(), m.getNickname(), boardGroupService.get(mrh.getVolumesId()), boardService.get(mrh.getBoardId()), currentRole));
});
logger.info("[Moderator][RecallEvent][2]版主卸任通知发送结束");
}
//生成卸任通知
private ForumLetter getModeratorRecallNotice(long memberId, String names, Optional<BoardGroup> boardGroup, Optional<Board> board, MemberRoleEnum currentRole) {
String section = "";
if(MemberRoleEnum.MASTER == currentRole && boardGroup.isPresent()){
BoardGroup bgr = boardGroup.get();
section=String.format("<a class=\"embed-link\" href=\"/board/volumes/%s.xhtml\">%s</a>的大", bgr.getConnect(), bgr.getTitle());
}
if(MemberRoleEnum.BM == currentRole && boardGroup.isPresent() && board.isPresent()){
BoardGroup bgr = boardGroup.get();
Board br = board.get();
section=String.format("<a class=\"embed-link\" href=\"/board/volumes/%s.xhtml\">%s</a> &#187; <a class=\"embed-link\" href=\"/board/%s.xhtml\">%s</a>的",
bgr.getConnect(), bgr.getTitle(),
br.getConnect(), br.getTitle());
}
String content = String.format("您现在已经辞去%s版主! 感谢您对社区孜孜不倦的工作付出, 您当前的会员角色: %s", section, currentRole.getTitle());
return new ForumLetter("版主卸任通知", content, memberId, names);
}
}
......@@ -12,12 +12,15 @@ import com.apobates.forum.core.impl.event.PostsPublishEvent;
import com.apobates.forum.utils.ip.IPMatcher;
import com.apobates.forum.utils.ip.IPMatcher.IpMatchResult;
import eu.bitwalker.useragentutils.UserAgent;
import org.springframework.stereotype.Component;
/**
* 回复操作描述记录
*
* @author xiaofanku
*
*/
@Component
public class PostsDescriptorRecordListener implements ApplicationListener<PostsPublishEvent>{
@Autowired
private PostsDescriptorDao postsDescriptorDao;
......
......@@ -12,6 +12,7 @@ import com.apobates.forum.core.impl.event.PostsMoodEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.utils.DateTimeUtils;
import org.springframework.stereotype.Component;
/**
* 回复喜好动作通知
......@@ -19,6 +20,7 @@ import com.apobates.forum.utils.DateTimeUtils;
* @author xiaofanku
* @since 20191116
*/
@Component
public class PostsMoodNoticeListener implements ApplicationListener<PostsMoodEvent>{
@Autowired
private PostsService postsService;
......
......@@ -14,12 +14,15 @@ import com.apobates.forum.core.entity.Topic;
import com.apobates.forum.core.impl.event.PostsPublishEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import org.springframework.stereotype.Component;
/**
* 回复的引用通知
*
* @author xiaofanku
* @since 20200301
*/
@Component
public class PostsQuoteNoticeListener implements ApplicationListener<PostsPublishEvent>{
@Autowired
private TopicDao topicDao;
......@@ -53,7 +56,7 @@ public class PostsQuoteNoticeListener implements ApplicationListener<PostsPublis
//生成引用通知
private ForumLetter getQuoteNotice(Topic topic, Posts posts, long authorId, String authorNickname, long authorReplyFloor){
String floorLink=String.format("/topic/%s.xhtml#posts-%d", topic.getConnect(), posts.getId());
ForumLetter fl = new ForumLetter(
return new ForumLetter(
posts.getMemberNickname()+"引用了您的回复",
String.format(
"<p><a href=\"/member/%d.xhtml\">%s</a>引用了您在<a href=\"%s\">#%s#</a>%d楼发布的回复内容</p>",
......@@ -64,7 +67,6 @@ public class PostsQuoteNoticeListener implements ApplicationListener<PostsPublis
authorReplyFloor),
authorId,
authorNickname);
return fl;
}
//提取blockquote属性的cite
private long parseBlockquoteTag(String postsContent){
......
......@@ -14,6 +14,7 @@ import com.apobates.forum.core.impl.event.PostsPublishEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.utils.Commons;
import org.springframework.stereotype.Component;
/**
* 回复创建侦听器,如果话题开启了回复通知负责向楼主发送通知
......@@ -21,6 +22,7 @@ import com.apobates.forum.utils.Commons;
* @author xiaofanku
* @since 20190703
*/
@Component
public class PostsReplyNoticeListener implements ApplicationListener<PostsPublishEvent>{
@Autowired
private TopicDao topicDao;
......@@ -56,7 +58,7 @@ public class PostsReplyNoticeListener implements ApplicationListener<PostsPublis
//content: {张三}: {回复内容} #{主题}#
String floorLink=String.format("/topic/%s.xhtml#posts-%d", topic.getConnect(), posts.getId());
//(String title, String content, long author, String authorNames, ForumLetterTypeEnum type)
ForumLetter fl = new ForumLetter(
return new ForumLetter(
posts.getMemberNickname()+"回复了您的主题",
String.format(
"<p><strong><a href=\"/member/%d.xhtml\">%s</a>: </strong>%s <a class=\"embed-link\" href=\"%s\">#%s#</a></p>", //<a href=\"/member/%d.xhtml\">%s</a>回复了您在<a href=\"/board/%d.xhtml\">%s</a>版块中发布的话题<a href=\"/topic/%d.xhtml\">#%s#</a>
......@@ -67,6 +69,5 @@ public class PostsReplyNoticeListener implements ApplicationListener<PostsPublis
topic.getTitle()),
topic.getMemberId(),
topic.getMemberNickname());
return fl;
}
}
......@@ -9,12 +9,15 @@ import com.apobates.forum.core.impl.event.TopicMoveEvent;
import com.apobates.forum.letterbox.api.service.ForumLetterService;
import com.apobates.forum.letterbox.entity.ForumLetter;
import com.apobates.forum.utils.DateTimeUtils;
import org.springframework.stereotype.Component;
/**
* 话题移动通知侦听器
*
* @author xiaofanku
* @since 20191117
*/
@Component
public class TopicMoveNoticeListener implements ApplicationListener<TopicMoveEvent>{
@Autowired
private ForumLetterService forumLetterService;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册