创建新草稿

  • 接口地址: /api/fresns/editor/create
  • 请求方式: POST
  • 请求格式: JSON

header 可选参数:

参数名公开模式(是否必传)私有模式(是否必传)
uidYESYES
midYESYES
tokenYESYES

body 参数:

参数名类型是否必传说明
typeNumberYES1.帖子 / 2.评论
uuidStringNO为空代表创建空白草稿
有值代表编辑已发表内容(主表为已发表内容),获取已发表内容创建带现有内容的草稿
已发表内容在 posts 或 comments
pidStringNO2.评论专用,表示该帖子下的评论

返回结果:

成功

{
    "code": 0,
    "message": "ok",
    "data": {
        "detail": {
            // 创建成功,直接返回草稿详情
            // 帖子和评论参数,参考接口 /api/fresns/editor/detail
        }
    }
}
1
2
3
4
5
6
7
8
9
10

失败

{
    "code": "code_messages > code",
    "message": "code_messages > message"
}
1
2
3
4

开发说明

  • 如果是私有模式,当过期后 members > expired_at,该接口不可请求。
  • 根据 uuid 是否为空,判断是创建空白草稿,还是创建现有内容草稿,确定草稿形式,则先判断权限。
    • 创建新的空白草稿
      • 全员发表绑定要求是否满足(配置表):绑定邮箱、绑定手机号、实名认证
      • 主角色发表权限要求(成员角色表):该角色是否有权发表
      • 主角色发表绑定要求是否满足(成员角色表):绑定邮箱、绑定手机号、实名认证
      • 主角色说明:如果主角色有过期时间,并且已经过期,则以继承角色权限为主;如果无继承角色(或者该继承 ID 找不到角色),则以配置表 default_role 键名键值的角色权限为准;如果配置表键值为空(或找不到角色),则当无权处理。
    • 编辑已发表内容,拉取现有内容创建草稿(以“提交内容”接口的逻辑,用反向逻辑还原成日志表草稿)
      • 全员是否开启编辑功能(配置表)
      • 编辑功能是否有条件(配置表):时间范围、置顶和加精后
      • 判断是否为内容的作者(是不是本人)
  • type=1
    • uuid=空,创建新的空白草稿
      • 有权发表则有权创建草稿,不做数量检查,帖子草稿可以有多个。
      • post_logs 创建空白草稿
    • uuid=有值,编辑已发表内容
      • 创建前检查是否有重复草稿,state=1、2、4 是否存在该帖子 ID 记录 post_logs > post_id
        • 存在,该 ID 不可再创建新草稿,同一篇帖子只能有一篇正在编辑的草稿,直接返回当前草稿详情。
        • 不存在,根据 uuid 获取现有帖子所有表内容(包括多语言表),复制创建一条 post_logs 日志记录,然后当前接口输出。
        • 创建日志时,扩展内容 canDelete 值根据 extends > post_id 字段判断,有值,在编辑器不能删。
  • type=2
    • uuid=空,创建新的空白草稿(此时 pid 必填)
      • 检查当前成员在该 pid 是否存在评论草稿(状态 state=1、2、4 是否存在该评论 ID 草稿)。
        • 存在,不可再创建,同一篇帖子只有一篇评论草稿,直接返回当前草稿详情。
        • 不存在,创建新草稿,在 comment_logs 创建空白草稿。
    • uuid=有值,编辑已发表内容(此时忽略 pid 参数)
      • 创建前检查是否有重复草稿,state=1、2、4 是否存在该评论 ID 记录 comment_logs > comment_id
        • 存在,该 ID 不可再创建新草稿,同一篇评论只能有一篇正在编辑的草稿,直接返回当前草稿详情。
        • 不存在,根据 uuid 获取现有评论所有表内容(包括多语言表),复制创建一条 comment_logs 日志记录,然后当前接口输出。
        • 创建日志时,扩展内容 canDelete 值根据 extends > post_id 字段判断,有值,在编辑器不能删。
  • headerdeviceInfo 记录创建交互日志后,需将草稿 主键 ID 填到 session_logs > object_order_id
  • 补充资料:编辑器逻辑