淘宝客网站主题,seo应该如何做,宁波做网站烟台厂商,wordpress网站制作价格自媒体文章上下架功能完成
需求分析 流程说明 接口定义
说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult
DTO
Data
public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒…自媒体文章上下架功能完成
需求分析 流程说明 接口定义
说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult
DTO
Data
public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒体文章上下架-功能实现
接口定义
在heima-leadnews-wemedia工程下的WmNewsController新增方法
PostMapping(/down_or_up)
public ResponseResult downOrUp(RequestBody WmNewsDto dto){return null;
}在WmNewsDto中新增enable属性 完整的代码如下
package com.heima.model.wemedia.dtos;import lombok.Data;import java.util.Date;
import java.util.List;Data
public class WmNewsDto {private Integer id;/*** 标题*/private String title;/*** 频道id*/private Integer channelId;/*** 标签*/private String labels;/*** 发布时间*/private Date publishTime;/*** 文章内容*/private String content;/*** 文章封面类型 0 无图 1 单图 3 多图 -1 自动*/private Short type;/*** 提交时间*/private Date submitedTime; /*** 状态 提交为1 草稿为0*/private Short status;/*** 封面图片列表 多张图以逗号隔开*/private ListString images;/*** 上下架 0 下架 1 上架*/private Short enable;
}9.4.2)业务层编写
在WmNewsService新增方法
/*** 文章的上下架* param dto* return*/
public ResponseResult downOrUp(WmNewsDto dto);实现方法
/*** 文章的上下架* param dto* return*/
Override
public ResponseResult downOrUp(WmNewsDto dto) {//1.检查参数if(dto.getId() null){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);}//2.查询文章WmNews wmNews getById(dto.getId());if(wmNews null){return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,文章不存在);}//3.判断文章是否已发布if(!wmNews.getStatus().equals(WmNews.Status.PUBLISHED.getCode())){return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,当前文章不是发布状态不能上下架);}//4.修改文章enableif(dto.getEnable() ! null dto.getEnable() -1 dto.getEnable() 2){update(Wrappers.WmNewslambdaUpdate().set(WmNews::getEnable,dto.getEnable()).eq(WmNews::getId,wmNews.getId()));}return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}9.4.3)控制器
PostMapping(/down_or_up)
public ResponseResult downOrUp(RequestBody WmNewsDto dto){return wmNewsService.downOrUp(dto);
}9.4.4)测试
消息通知article端文章上下架
在heima-leadnews-common模块下导入kafka依赖
!-- kafkfa --
dependencygroupIdorg.springframework.kafka/groupIdartifactIdspring-kafka/artifactId
/dependency
dependencygroupIdorg.apache.kafka/groupIdartifactIdkafka-clients/artifactId
/dependency9.5.2)在自媒体端的nacos配置中心配置kafka的生产者
spring:kafka:bootstrap-servers: 172.20.10.2:9092producer:retries: 10key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializer9.5.3)在自媒体端文章上下架后发送消息
//发送消息通知article端修改文章配置
if(wmNews.getArticleId() ! null){MapString,Object map new HashMap();map.put(articleId,wmNews.getArticleId());map.put(enable,dto.getEnable());kafkaTemplate.send(WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC,JSON.toJSONString(map));
}常量类
public class WmNewsMessageConstants {public static final String WM_NEWS_UP_OR_DOWN_TOPICwm.news.up.or.down.topic;
}9.5.4)在article端的nacos配置中心配置kafka的消费者
spring:kafka:bootstrap-servers: 172.20.10.2:9092consumer:group-id: ${spring.application.name}key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializer9.5.5)在article端编写监听接收数据
package com.heima.article.listener;import com.alibaba.fastjson.JSON;
import com.heima.article.service.ApArticleConfigService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;import java.util.Map;Component
Slf4j
public class ArtilceIsDownListener {Autowiredprivate ApArticleConfigService apArticleConfigService;KafkaListener(topics WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC)public void onMessage(String message){if(StringUtils.isNotBlank(message)){Map map JSON.parseObject(message, Map.class);apArticleConfigService.updateByMap(map);log.info(article端文章配置修改articleId{},map.get(articleId));}}
}9.5.6)修改ap_article_config表的数据
新建ApArticleConfigService
package com.heima.article.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.pojos.ApArticleConfig;import java.util.Map;public interface ApArticleConfigService extends IServiceApArticleConfig {/*** 修改文章配置* param map*/public void updateByMap(Map map);
}实现类
package com.heima.article.service.impl;import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.heima.article.mapper.ApArticleConfigMapper;
import com.heima.article.service.ApArticleConfigService;
import com.heima.model.article.pojos.ApArticleConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.Map;Service
Slf4j
Transactional
public class ApArticleConfigServiceImpl extends ServiceImplApArticleConfigMapper, ApArticleConfig implements ApArticleConfigService {/*** 修改文章配置* param map*/Overridepublic void updateByMap(Map map) {//0 下架 1 上架Object enable map.get(enable);boolean isDown true;if(enable.equals(1)){isDown false;}//修改文章配置update(Wrappers.ApArticleConfiglambdaUpdate().eq(ApArticleConfig::getArticleId,map.get(articleId)).set(ApArticleConfig::getIsDown,isDown));}
}