首页 > 其他分享 >自媒体文章上下架

自媒体文章上下架

时间:2023-07-06 22:11:38浏览次数:26  
标签:map dto 媒体 文章 上下 article import com

需求分析:

  已发表且已下架的文章可以上架

  已发表且已上架的文章可以下架

自媒体端点击上架下架按钮:

  上架下架——>根据id查询文章——>文章是否存在:否结束,是——文章是否发布——>否结束,是——修改自媒体文章状态enable

    app移动端:自媒体端发送请求到kafka,参数文章的articleId和enable,让article端监听消息,修改article端的config的is_down[是否下架]。

 

一、自媒体端

/**
     * 文章的上下架
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult dowmOrUp(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.DATA_NOT_EXIST, "当前文章不是发布状态,不能上下架");
        }
        //4、修改文章enable:0、1
        if(dto.getEnable() != null && dto.getEnable() > -1 && dto.getEnable() < 2){
            update(Wrappers.<WmNews>lambdaUpdate().set(WmNews::getEnable, dto.getEnable())
                            .eq(WmNews::getId, wmNews.getId()));
           
        }
        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
    }

二、消息传递article通知article文章上下架【即移动端用户是否可见】

自媒体微服务作为生产者producer发送消息,文章微服务作为消费者consumer拉取处理消息

自媒体端修改文章enable后发送消息:

if(wmNews.getArticleId() != null){
                //发送消息通知article修改文章配置
                Map<String, 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));
            }

文章微服务监听topic处理消息:

package com.heima.article.listener;

import com.alibaba.fastjson.JSON;
import com.heima.article.mapper.ApArticleMapper;
import com.heima.article.service.ApArticleConfigService;
import com.heima.common.constants.WmNewsMessageConstants;
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 {

    @Autowired
    private 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);

        }
    }

}
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 ServiceImpl<ApArticleConfigMapper, ApArticleConfig> implements ApArticleConfigService {
    /**
     * 修改文章【上下架】
     *  map中的down的0/1表示与articleconfig的0/1含义相反
     * @param map
     */
    @Override
    public void updateByMap(Map map) {
        //0下架  1上架
        Object enable = map.get("enable");
        boolean isDown = true;
        if(enable.equals(1)){
            isDown = false;
        }
        update(Wrappers.<ApArticleConfig>lambdaUpdate().eq(ApArticleConfig::getArticleId, map.get("articleId"))
                                                        .set(ApArticleConfig::getIsDown, isDown));


    }
}

 

 

 

 

 

                     

标签:map,dto,媒体,文章,上下,article,import,com
From: https://www.cnblogs.com/fxzm/p/17533470.html

相关文章

  • 消费任务进行审核文章
    文章审核:按照固定的频率拉取任务,每秒钟拉取一次,再审核文章。@AutowiredprivateWmNewsAutoScanServicewmNewsAutoScanService;/***消费任务【拉取任务】*/@Scheduled(fixedRate=1000)@OverridepublicvoidscanNewsByTask(){......
  • 去除内容多余样式php函数-文章来源 植物号 www.zhiwuhao.com
    去除内容多余样式php函数-文章来源植物号 www.zhiwuhao.comfunctionKillStyle($content){$content=preg_replace("/STYLE=.+?['|\"]/i",'',$content);//去除样式$content=preg_replace("/style=.+?['|\"]/i",'',$conte......
  • python-contextlib上下文管理器
    pythoncontextlib上下文管理器python-contextlib上下文管理器两大作用:--可以以一种更加优雅的方式,操作(创建/获取/释放)资源,如文件操作、数据库连接;--可以以一种更加优雅的方式,处理异常;读取文件的一般流程#打开文件f=open('file.txt')try:forlineinf:......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger存储过程一、一个简单的存储过程1,一个简单的存储过程delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建格式:createpr......
  • 面试再问MySQL存储过程和触发器就把这篇文章给他
    Mysql存储过程及触发器trigger 存储过程一、一个简单的存储过程1,一个简单的存储过程 delimiter$$ createproceduretesta() begin Select*fromemp; Select*fromdept; End; $$; delimiter; --调用存储过程 calltesta();存储过程的结构组成:1,创建......
  • 易基因: RRBS揭示基于DNA甲基化驱动基因的肾透明细胞癌预后模型的鉴定和验证|项目文章
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。肾细胞癌(RCC)是最常见的肾癌亚型,每年超400万例新发病例,是泌尿系统恶性肿瘤导致的第二大死因。2%-70%的RCC为透明细胞RCC(Clearcellrenalcellcarcinoma,ccRCC)。DNA甲基化(DNAmethylation,DNAm)是主要的表观遗传修饰之一......
  • 文章审核存在问题
    一、自媒体微服务——远程调用——>文章微服务倘若有一个微服务报错,另一个微服务不知道,无法保证事务的一致性。作业:使用seata来解决审核过程中的分布式事务的问题二、倘若文章发布是一个未来时间,该如何按照精确时间发布?如1月1号提交,但是设定发布时间是1月5号。 ......
  • Solon Web 开发:四、认识请求上下文(Context)
    Handler+Context架构,是SolonWeb的基础。在Context(org.noear.solon.core.handle.Context)里可以获取:请求相关的对象与接口会话状态相关的对象与接口响应相关的对象与接口或者理解所有请求与响应相关的,都在它身上。关于架构方面,可以再看看《想法与架构笔记》1、三种获......
  • Permute 3 mac全能媒体格式转换器
    Permute3Mac版是一款全能的媒体格式转换工具,它能够将常见的媒体格式快速转换成多种音频格式,如:MP3、WAV、MP4、DAT、AAC等等。还能够将多种音频格式快速转换成AVI或WMV文件,如:MP4、AVI、WMV等,支持大多数视频平台,包括VCD、DVD。→→↓↓载Permute3mac 1、支持的格......
  • 前端Vue自定义精美上下滚动通告栏组件 常用于展示公告信息 上下滚动跑马灯 上下滚动广
    前端Vue自定义精美上下滚动通告栏组件常用于展示公告信息上下滚动跑马灯上下滚动广播,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13318效果图如下:cc-noticeBar使用方法<!--默认颜色#333公告栏--><viewclass="header">默认颜色......