当前位置: 首页 > 知识库问答 >
问题:

数据库 - 作品与章节的多种状态及审核流程实现该怎么设计?

姬乐池
2024-05-15

如何设计一个小说网站:
作者可以创建作品、发布章节;
管理员可以审核作品和章节决定是否对用户发布;
对于已发布的作品和章节,管理员日常巡检时,可以直接修改其审核状态和审核原因;
对于已发布的作品和章节,作者可以进行修改,修改后可以仅保存,也可以提交审核;
管理员可以审核作品和章节的更新申请,可以通过也可以驳回;
作品有连载中、已完结、停更三种状态;
作品有未签约、签约中、已签约三种状态;
作品和章节有不允许作者编辑的状态;
管理员可以直接设置作品和章节的可见状态;

状态太多了,设计了好多次都不尽人意。

共有2个答案

宋育
2024-05-15

这弄个图,或者思维导图,把属性一列不就清晰了嘛

胡璞瑜
2024-05-15

要实现上述的小说网站功能,你需要设计一个灵活且可扩展的状态和审核流程系统。以下是一个简化且结构化的设计建议:

数据库设计

1. 作品表 (Works)

  • id (唯一标识符)
  • title (作品标题)
  • author_id (作者ID)
  • current_status (当前状态,如连载中、已完结、停更)
  • contract_status (签约状态,如未签约、签约中、已签约)
  • is_visible (是否对用户可见)
  • last_modified (最后修改时间)

2. 章节表 (Chapters)

  • id (唯一标识符)
  • work_id (所属作品ID)
  • content (章节内容)
  • status (审核状态,如待审核、已发布、不允许编辑等)
  • review_reason (审核原因)
  • is_visible (是否对用户可见)
  • last_modified (最后修改时间)

3. 审核记录表 (Reviews)

  • id (唯一标识符)
  • type (审核类型,如作品审核、章节审核、更新申请审核)
  • target_id (目标ID,如作品ID或章节ID)
  • reviewer_id (审核员ID)
  • status (审核结果,如通过、驳回)
  • reason (审核原因或备注)
  • created_at (创建时间)

功能实现

1. 作者创建作品与发布章节

  • 作者登录后,可以创建新作品并发布章节。
  • 新作品默认状态为连载中、未签约,章节默认状态为待审核。

2. 管理员审核作品与章节

  • 管理员可以在后台查看待审核的作品和章节列表。
  • 管理员可以审核作品和章节,并设置审核状态和原因。
  • 审核通过后,作品或章节的状态更新为已发布,并设置为对用户可见。

3. 管理员日常巡检与修改审核状态

  • 管理员可以定期巡检已发布的作品和章节。
  • 管理员可以直接修改作品或章节的审核状态和审核原因。

4. 作者修改作品与章节并提交审核

  • 作者可以编辑已发布的作品或章节内容。
  • 编辑完成后,作者可以选择保存或提交审核。
  • 提交审核后,作品或章节的状态更新为待审核。

5. 管理员审核更新申请

  • 管理员可以查看作者的更新申请。
  • 管理员可以审核更新申请,通过或驳回。
  • 审核通过后,作品或章节的内容更新并重新发布。

6. 作品的连载状态与签约状态管理

  • 作品的连载状态、签约状态由管理员在后台进行设置。
  • 状态的变更可以自动触发相应的通知或日志记录。

7. 作品与章节的编辑权限管理

  • 根据需要,可以设置作品或章节进入某些状态后不允许作者编辑。
  • 通过数据库字段或逻辑判断来控制编辑权限。

8. 直接设置作品与章节的可见状态

  • 管理员可以在后台直接设置作品或章节的可见状态。
  • 可见状态的变更应即时反映在前端页面上。

注意事项

  • 在设计状态和流程时,要考虑状态的转换逻辑和权限控制。
  • 尽量避免状态之间的循环依赖或冲突。
  • 使用数据库事务来确保数据的一致性和完整性。
  • 前端页面应根据后端返回的状态和权限来动态展示内容和操作按钮。

这只是一个简化的设计建议,具体的实现细节可能需要根据项目的实际需求和技术栈进行调整和优化。

 类似资料:
  • 状态栏实际上是个窗口,一般分为几个窗格,每个窗格显示不同的信息。AppWizard会为应用程序自动创建一个状态栏,该状态栏包括几个窗格,分别用来显示状态栏提示和CAPS LOCK、NUM LOCK 、SCROLL LOCK键的状态。在MFC中,状态栏的功能由CStatusBar类实现。 创建一个状态栏需要以下几个步骤: 构建一个CStatusBar对象。 调用CStatusBar::Create创

  • 本文向大家介绍总结Java中线程的状态及多线程的实现方式,包括了总结Java中线程的状态及多线程的实现方式的使用技巧和注意事项,需要的朋友参考一下 线程的状态 线程状态图: 说明: 线程共包括以下5种状态。 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 2. 就绪状态(Runnable): 也被称为“可执行状态”

  • temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?

  • 仅团队管理员有权限设置移动审批的模板(流程) 轻应用-“审批”-管理后台

  • 为加强管理员对群聊的掌控力,新增加进群审核设置。群管理员在“群管理”中开启“群邀请审核”后,群内除管理员以外的成员邀请新人加入时,需管理员审核。 1.手机版 使用方法:群详情-群管理-群邀请审核 2.电脑版 使用方法:群详情-群邀请审核

  • 我有一个之前写的类,其中,比方说,有一个数据成员int count,一个函数fun. 我希望我做一个功能,在fun函数执行时,qt界面上的label实时地显示count的值. 但我不想修改已经写好的类,比方说在fun函数里加上修改label的值的内容.能吗?这样的话应该怎么办好?