本文档定义了 Forge Admin 项目的编码规范和约定,所有贡献者应严格遵守。
| 类型 | 规则 | 示例 |
|---|---|---|
| 类名 | 大驼峰,见名知意 | UserService, OrderController |
| 方法名 | 小驼峰,动词开头 | getUserById(), createOrder() |
| 常量 | 全大写下划线分隔 | MAX_RETRY_COUNT, DEFAULT_TIMEOUT |
| 抽象类 | 以 Abstract 或 Base 开头 |
BaseEntity, AbstractHandler |
| 测试类 | 以被测类名开头 + Test 结尾 |
UserServiceTest |
禁止:使用拼音或中英文混拼命名。
| 规则 | 说明 |
|---|---|
| 业务异常 | 使用 BusinessException,携带错误码 |
| 系统异常 | 向上抛出,由 GlobalExceptionHandler 统一兜底 |
| 禁止吞异常 | 不允许空的 catch 块 |
| catch 中必须记录日志 | 使用 log.error() 记录完整堆栈 |
项目通过 @RestControllerAdvice + @ExceptionHandler 实现统一异常处理,覆盖以下异常类型:
BusinessException → 返回业务错误信息MethodArgumentNotValidException → 参数校验失败ConstraintViolationException → 约束违反AccessDeniedException → 权限不足NullPointerException → 空指针异常所有异常统一返回 RespInfo 格式。
| 场景 | 级别 | 要求 |
|---|---|---|
| Controller 入口 | INFO |
包含请求关键参数 |
| 异常 | ERROR |
包含完整堆栈 |
| 调试信息 | DEBUG |
仅在开发环境开启 |
禁止:在日志中打印用户敏感信息(手机号、身份证、银行卡等)。
| 规则 | 说明 |
|---|---|
| 字符集 | utf8mb4 |
| 引擎 | InnoDB |
| 审计字段 | 所有业务表必须包含 id, tenant_id, create_by, create_time, create_dept, update_by, update_time |
| 索引 | 频繁查询的字段必须创建索引,复合索引遵循最左前缀原则 |
del_flag 承担逻辑删除状态:0 表示有效,非 0 表示已删除;实体必须显式添加 @TableLogic,Mapper XML 查询必须显式过滤有效数据。BIGINT del_flag 和普通唯一索引 (tenant_id, 业务键..., del_flag)。实体使用 Long 与 @TableLogic(value = "0", delval = "id"),删除后以当前主键作为唯一墓碑。SET del_flag = id,不能固定写 1。字符串主键使用同类型删除字段和专用 Mapper。logic_delete_active 生成列、函数索引或部分索引;数据库唯一约束不能降级为 Service 层先查后插。| 类型 | 规则 |
|---|---|
| 金额 | 使用 long 类型,单位为 分 |
| 时间 | 统一使用 LocalDateTime |
| 规则 | 说明 |
|---|---|
| 分支 | 禁止 master 分支变更,必须使用 feature 分支 |
| Commit 频率 | 每个 task/fix 完成后自动 commit |
| Commit 质量 | 每次提交必须保证编译通过 |
| Push | 禁止自动 push,由用户手动触发 |
[<变更名>] <中文简述>
示例:
[idempotent-refactor] 重构幂等模块,支持多策略和 Redisson 分布式锁
[client-management] 新增客户端管理功能
前端操作按钮使用 UnoCSS 语义化颜色类进行区分:
| 颜色类 | 颜色 | 适用场景 |
|---|---|---|
text-primary |
蓝色 | 编辑、查看、授权等主要操作 |
text-info |
灰蓝色 | 查看详情、在线用户、统计信息等 |
text-warning |
黄色 | 刷新缓存、重置、封禁等警告操作 |
text-error |
红色 | 删除、强制下线等危险操作 |
text-success |
绿色 | 启用、发布、通过等成功操作 |
<template #table-action="{ row }">
<a class="text-primary cursor-pointer hover:text-primary-hover">编辑</a>
<a class="text-info cursor-pointer hover:text-info-hover">在线用户</a>
<a class="text-warning cursor-pointer hover:text-warning-hover">刷新缓存</a>
<a class="text-error cursor-pointer hover:text-error-hover">删除</a>
</template>
规则:同一行的操作按钮应使用不同颜色区分,保证一眼可辨识。
| 注解 | 包路径 | 说明 |
|---|---|---|
@ApiEncrypt / @ApiDecrypt |
core.annotation.crypto |
API 请求/响应加解密 |
@OperationLog |
core.annotation.log |
操作日志记录 |
@ApiPermissionIgnore |
core.annotation.api |
跳过权限校验 |
@IgnoreTenant |
core.annotation.tenant |
跳过租户隔离 |
@RefreshScope |
core.annotation.config |
动态配置刷新 |
@Idempotent |
starter.idempotent |
分布式幂等 |
@FlowBind |
flow.client |
绑定流程模型 |
@FlowStart |
flow.client |
自动启动流程 |
@FlowCallback |
flow.client |
流程事件回调 |