1、JDK Stream流的使用方式
    JDK1.8后的两个重大改变,分别是lambda表达式,Stream流,此外还有接口中新增了静态方法,默认方法等、Map中的entry改为node等
    JDK Stream流使用主要有三步骤:
    1、创建流 三种方式

    • 集合.stream 最常用
    • Arrays.stream()
    • Stream.of()

    2、中间操作

    • filter 过滤 distinct 去重(要重写hash equal) map 映射(要改变数值时) limit 截取 skip 跳过 sort 排序

    3、终止操作

    • collect 收集 最常用 流本身不改变源 但是可以重新覆盖获得新的数据 Collectors.toList join….
    • foreach 遍历流
    • reduce 归并 相邻数据两两按照规则或加或乘 再与第三个数计算

    2、发布文章的流程(业务流程,涉及表,具体实现)
    基本业务流程: 自媒体人可以在发表文章页面中填写文章信息, title content[文本,图片] images封面
    type 布局(-1 自动生成封面) pulishTime (发布时间),提交到后台 后台将数据保存到
    wm_news表中 此时文章状态 ( 0 草稿 1 待审核 ),如果是待审状态需要报错 素材和文章的 关联关系 到 wm_news_material
    涉及表: wm_news 文章 wm_material 素材 wm_news_material 文章素材关联表具体流程: 将将文章信息 封装成一个大的json传入后台,后台封装dto实体类来接收
    1. 校验参数 并转为wmNews实体对象
    标题 内容 不能为空
    是否登陆
    type == -1 代表自动
    images (集合) ==> 封面(str)
    2. 保存或修改文章
    如果 id存在:
    删除文章和素材的关联关系
    修改文章
    如果 id不存在
    直接保存
    3. 保存文章和素材关联关系

    3.1 解析出内容中的引用的素材

    content: [{type:text value: 文本 },{type:image,value: 素材url},{},{}]
    3.2 保存内容引用素材关联关系

    foreach
    select id from wm_material where url in (素材url路径集合) and user_id = ?

    素材ids集合
    foreach 标签
    insert into 表 (字段) values (值),(值),(值)

    3.3 保存封面引用素材关联关系

    如果type == -1 需要先生成封面

    如果内容图片长度大于2
    取 3个作为封面 多图

    如果内容图片长度大于0 小于等于2
    取 1个作为封面 单图

    其它
    无图