业务逻辑流程描述
在创建一个资源之后,资源有 2 个可选的状态:1 草稿箱,2 审核中。
1 草稿箱 可以进行删除操作,删除后进入 5 回收站 状态,回收站内的资源不可编辑。也可以进行提交审核,进入 2 审核中 状态。
5 回收站 可以进行恢复操作,恢复到 1 草稿箱,只有回收站内的内容才有恢复操作,并且只能恢复到草稿箱 。
2 审核中 的资源,将会被总后台进行审核,审核之后有 2 种可能:4 未通过 3 已发布。如果该资源尚未发布过,即 正式表 内无该资源,则也可以删除到回收站。
4 已驳回 的资源,可以修改之后重新提交,再次进入 2 审核中 重新审核。如果该资源尚未发布过,即 正式表 内无该资源,则也可以删除到 5 回收站 或者移动到 1 草稿箱 。
3 已发布 的资源,将会是最终的状态。如果用户对 3 已发布 的资源进行修改,如果修改了重要内容,则会重新进入 2 审核中 状态(目前修改所有的内容都会触发)。已发布的资源不能删除,不能移动到草稿箱。
备注今后我们可能会签约免审商户,签署一些协议之后,这些商户上传的资源将不需要审核,直接发布。
只有 3 已发布 的资源,可以进行下架和隐藏操作,下架和隐藏官方和用户均可进行操作,互不影响。资源显示时将以最严格的的条件进行显示。
列表中只有临时表的数据,正式表的数据看不到,正式表的数据只能通过前端去看。
拷贝除了回收站的数据都能拷贝。拷贝出来的新数据默认为草稿箱状态,并且拷贝只能复制 临时表 中的数据。
停售、隐藏只有已发布的资源,才能设置停售、隐藏功能。取消停售时,应当把停售的原因置空,隐藏不需要原因。
各端接口每种资源都包括 2 个表,不同状态的资源保存在不同的表中。
例如 audiobook 包括 audiobook 和 audiobook_request 表
为了便于交流,这里我们将 audiobook 称之为 正式表,audiobook_request 称之为 临时表
两个表的内容一致。
后端开发人员可以自行决定是否将下架和隐藏也保存到临时表中一份,但是临时表中的停售隐藏不提供给前端使用。
总后台总后台拥有最高的权限,可以对资源进行所有的管理,包括:审核、下架、隐藏。
资源列表
列表中的数据均从 临时表 查询
通过审核接口
通过审核之后,将资源从临时表复制到正式表一份
商户端商户端用户管理 自己上传 的资源。商户自己也可以下架、隐藏资源。
列表 接口返回的数据应该满足以下条件 (不满足条件的数据不显示):
资源必须由该商户创建的
列表中的数据均从 临时表 查询
客户端客户端不涉及状态操作,只涉及浏览、购买。
列表 接口返回的数据应该满足以下条件 (不满足条件的数据不显示):
资源必须来自于 正式表,此表内的数据状态均为 3 已发布
如果包括期望发布时间,则应在期望发布时间之后才可查询,即 当前时间 >= 期望发布时间
资源未被隐藏,即 hiddenAt 和 hiddenByOfficialAt 均为 null
查询 单个 资源资源的接口。在返回数据时应当满足以下条件 (不满足条件的数据报错):
资源必须来自于 正式表,此表内的数据状态均为 3 已发布
如果包括期望发布时间,则应在期望发布时间之后才可查询,即 当前时间 >= 期望发布时间
查询单个资源的接口不受隐藏的影响,隐藏之后不能再列表之内查看,但是仍然可以直接查看。
资源付费的介绍查询页面会有两种状态,一种为未付费状态,一种为已付费状态。
进入页面时前端需要通过接口判断该资源是否有权限查看,即已经付费,如果未付费,有以下 3 种情况
未付费,资源免费,这种情况自动购买资源,然后查看
未付费,资源收费,这种情况显示购买页面
已付费,这种情况显示查看页面
这里后端将会提供若干接口配合前端,主要可能包括以下接口:
检查资源是否有权限查看(是否已经购买过)
检查资源是否可自动购买
自动购买 + 检测是否有权限查看。以上两个接口的组合
付费购买资源