更新eventstore的code码标准

更新eventstore的code码标准

系统发布系统发布
0 次阅读
eventstorecode码
文章目录

code 码规则文档

一、概述

code 码规则在“按业务模块划分主区间”的基础上,新增子码统一语义规则:即每个业务模块下,子码末尾数字固定对应操作类型(1=更新、2=删除、3=查询、4=统计总数),形成“模块+操作”的双维度编码体系,降低记忆成本、提升扩展性。

二、code 码分类及子类型(含统一语义规则)

子码统一语义说明

子码末尾数字操作类型示例(以用户模块为例)
1更新操作101(更新用户信息)
2删除操作102(删除用户)
3查询操作103(查询用户信息)
4统计总数104(获取用户总数)

(一)用户相关操作(100 - 199

code操作描述子码语义匹配
100创建用户基础创建(无统一末尾数字,为模块起始码)
101更新用户信息1=更新
102删除用户2=删除
103查询用户信息3=查询
104获取用户总数4=统计总数

详细说明

  • 创建用户(100):客户端发起创建新用户请求时使用,系统验证公钥、邮箱等信息合法性后存储用户数据。
  • 更新用户信息(101):仅允许更新非核心字段(禁止修改公钥、邮箱),验证请求合法性后更新数据。
  • 删除用户(102):执行逻辑删除(标记 deleted 状态),不物理删除数据。
  • 查询用户信息(103):根据公钥或邮箱查询用户详情,支持权限内的数据筛选。
  • 获取用户总数(104):统计系统用户总量,支持按状态(正常/已删除)筛选,需验证请求者权限。

(二)事件相关操作(200 - 299

code操作描述子码语义匹配
200创建事件基础创建
201更新事件信息1=更新
202删除事件2=删除
203查询事件信息3=查询
204获取事件总数4=统计总数

详细说明

  • 创建事件(200):客户端提交事件数据(含时间、用户、签名),系统校验通过后存储。
  • 更新事件信息(201):仅允许更新事件内容、标签等字段,验证权限后执行更新。
  • 删除事件(202):物理删除指定事件(需事件创建者或管理员权限)。
  • 查询事件信息(203):按用户、标签、时间范围等条件查询事件详情。
  • 获取事件总数(204):统计符合筛选条件(如时间范围、标签)的事件总量。

(三)权限相关操作(300 - 399

code操作描述子码语义匹配
300分配权限基础创建(分配即新增权限关联)
301撤销权限1=更新(更新用户权限列表)
302(预留)删除权限模板2=删除(未来用于删除系统权限模板)
303查询权限信息3=查询
304获取权限总数4=统计总数

详细说明

  • 分配权限(300):管理员为用户分配权限,需验证管理员签名及权限模板合法性。
  • 撤销权限(301):管理员从用户权限列表中移除指定权限,更新用户权限关联关系。
  • 查询权限信息(303):查询指定用户的所有权限,或查询系统内所有权限模板。
  • 获取权限总数(304):统计系统内权限模板总数,或指定用户的权限数量。

(四)文件操作(400 - 499

code操作描述子码语义匹配
400上传文件基础创建
401更新文件(元信息)1=更新(如更新文件名、描述)
402删除文件2=删除
403查询文件信息3=查询
404获取文件总数4=统计总数

详细说明

  • 上传文件(400):用户上传文件,系统验证权限后存储文件并返回访问URL。
  • 更新文件(401):仅支持更新文件元信息(文件名、描述),不支持替换文件内容。
  • 删除文件(402):用户删除自身上传的文件,或管理员删除违规文件,物理移除存储数据。
  • 查询文件信息(403):查询文件元信息(大小、类型、上传时间、访问URL)。
  • 获取文件总数(404):统计用户上传的文件总量,或系统内某类型文件总数。

(五)评论相关操作(500 - 599

code操作描述子码语义匹配
500发布评论基础创建
501更新评论内容1=更新(仅允许修改自身评论内容)
502删除评论2=删除
503查询评论信息(列表/详情)3=查询
504获取评论总数4=统计总数
505评论点赞/取消点赞(扩展操作)更新评论点赞状态
506回复评论(嵌套评论)(扩展操作)创建嵌套评论

详细说明

  • 发布评论(500):用户对目标内容(章节/事件)发布评论,需携带目标ID、内容、签名。
  • 更新评论内容(501):用户修改自身发布的评论内容,系统记录修改时间。
  • 删除评论(502):用户删除自身评论,或管理员删除所有评论,支持逻辑/物理删除配置。
  • 查询评论信息(503):按目标内容ID、分页、排序(时间/热度)查询评论列表或单条详情。
  • 获取评论总数(504):统计指定目标内容的评论总量(含嵌套评论)。
  • 评论点赞/取消点赞(505):更新单条评论的点赞状态,同步增减评论点赞数。
  • 回复评论(506):创建嵌套评论,关联父评论ID,形成评论层级。

(六)点赞相关操作(600 - 699

code操作描述子码语义匹配
600内容点赞/取消点赞基础操作(创建/取消点赞关联)
601(预留)更新点赞备注1=更新(未来用于添加点赞备注)
602(预留)批量取消点赞2=删除(未来用于批量删除点赞记录)
603查询点赞信息(用户/内容)3=查询
604获取点赞总数4=统计总数

详细说明

  • 内容点赞/取消点赞(600):用户对内容(章节/事件)发起点赞或取消,系统更新点赞关联记录及内容点赞数。
  • 查询点赞信息(603):查询指定内容的所有点赞用户,或指定用户的所有点赞记录。
  • 获取点赞总数(604):统计指定内容的实时点赞总量。

三、使用示例(遵循统一语义规则)

1. 按“更新操作=子码末尾1”示例(更新用户信息)

json
{  "ops": "U",  "code": 101,  // 100=用户模块,末尾1=更新  "user": "用户公钥",  "data": {    "nickname": "新昵称",    "avatarUrl": "新头像URL"  },  "sig": "用户签名信息"}

2. 按“统计总数=子码末尾4”示例(获取章节评论总数)

json
{  "ops": "R",  "code": 504,  // 500=评论模块,末尾4=统计总数  "user": "用户公钥",  "data": {    "targetType": "chapter",    "targetId": "chapter_123456"  },  "sig": "用户签名信息"}

3. 服务器处理逻辑(按统一语义匹配服务方法)

javascript
async handleMessage(clientId, message) {  try {    const event = JSON.parse(message);    const [moduleCode, actionCode] = [      Math.floor(event.code / 100) * 100,  // 提取模块码(如500)      event.code % 10                      // 提取操作码(如4=统计总数)    ];    let response;    // 按“模块+操作”匹配逻辑,降低分支复杂度    if (moduleCode === 100) { // 用户模块      if (actionCode === 0) response = await this.userService.create(event.data);      if (actionCode === 1) response = await this.userService.update(event.user, event.data);      if (actionCode === 2) response = await this.userService.delete(event.user);      if (actionCode === 3) response = await this.userService.query(event.data);      if (actionCode === 4) response = await this.userService.count(event.data);    }    if (moduleCode === 500) { // 评论模块      if (actionCode === 0) response = await this.commentService.publish(event.user, event.data);      if (actionCode === 1) response = await this.commentService.update(event.user, event.data);      if (actionCode === 2) response = await this.commentService.delete(event.user, event.data);      if (actionCode === 3) response = await this.commentService.query(event.data);      if (actionCode === 4) response = await this.commentService.count(event.data);    }    // 其他模块逻辑...    this.sendResponse(clientId, { success: true, data: response });  } catch (error) {    this.sendResponse(clientId, { success: false, error: error.message });  }}

四、规则优势

  1. 语义统一:所有模块共享“1=更新、2=删除、3=查询、4=统计”的子码逻辑,开发无需记忆各模块特殊编码。
  2. 扩展性强:新增模块时,直接按“模块区间+子码语义”生成编码(如700=消息创建、701=消息更新),无需重新定义规则。
  3. 故障排查高效:通过 code 码即可快速定位业务模块(如6xx=点赞)和操作类型(如603=查询点赞),简化日志分析。

评论区0

还没有评论,快来抢沙发吧~

登录 后可发表评论