1. 文章发布模块
- 文章审核通过之后发布APP文章实质:把wm_news 数据保存到article数据库(ap_article,ap_article_config,ap_article_content)的三张表中。再将wm_news中的文章状态改为9
实现思路:
1. 查询并校验文章
1. 使用feign查询自媒体文章
1. 校验文章是否存在
1. 校验文章状态 是否为 4 8(人工审核通过,自动审核通过)
2. 将wmNews封装成apArticle
1. 创建article对象,将wmNews中的属性拷贝到article中
1. 补全未拷贝属性 (articleId flag layout)
1. 补全作者信息 远程查询自媒体服务 得到与文章相关的作者信息
1. 频道信息 远程查询管理者服务 得到与文章相关的频道信息
3. 保存或修改aparticle
1. 根据id是否存在来决定是保存还是修改
1. 若id为空 则保存文章信息, 若id不为空 则修改文章信息
1. 修改文章后删除与该文章关联的配置信息,删除与该文章关联的内容信息
4. 保存 关联配置信息 和 文章内容
1. 保存配置信息
1. 保存内容信息
5. _TODO 页面静态化(详见Day7)_
5. 更新wmNews的状态为9
5. _TODO 通知es索引库添加文章索引_
2.实现延时发布文章
安装mq的延时插件,设置延时交换机,延时队列
- 计算延时时间,设置参数,完成消息发送
- 生产者: 自媒体服务的自动审核方法和管理者微服务的人工审核方法
消费者: 文章微服务的发布文章方法
//TODO 5.根据文章的发布时间 延时发布文章 //5.1 获取发布时间 long publishTime = wmNews.getPublishTime().getTime(); //5.2 获取当前时间 long nowTime = System.currentTimeMillis(); //5.3 计算延时时间 long delayTime = publishTime - nowTime; //距离发布文章还有多长时间 //5.4 发送消息给mq rabbitTemplate.convertAndSend(PublishArticleConstants.DELAY_DIRECT_EXCHANGE , PublishArticleConstants.PUBLISH_ARTICLE_ROUTE_KEY , wmNews.getId(), new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { message.getMessageProperties().setHeader("x-delay",delayTime<=0 ? 0 : delayTime); return message; } } );
3.完善自媒体文章上下架
使用mq发送与消费消息
- 交换机: 选择主题交换机,可以处理复杂路由,和多种队列
- 生产者: 自媒体微服务的上下架方法
- 消费者: 文章微服务的上下架方法