📋 主要变更: - ✅ 补充完整的7个业务模块表命名规范 - ✅ 新增后勤管理模块:hq_ 前缀 - ✅ 明确系统公共模块:common_ 前缀 - ✅ 提供完整的命名示例和实体类映射规则 - ✅ 更新变更记录文档 🎯 覆盖模块: - 后勤管理(hq_)、人事管理(rs_)、财务管理(cw_) - 学工管理(xg_)、招生就业(zsjy_)、安全保卫(aqbw_) - 系统公共(common_) 📚 文件变更: - .cursor/cursorrules-backend.md - 数据库表命名规范 - docs/变更管理/code-adjust-record-2025-01-23-wuzilong.md - 变更记录 - 各业务模块工程文件和前端结构文件 Co-authored-by: Cursor AI <cursor@cursor.sh>
128 lines
3.5 KiB
Markdown
128 lines
3.5 KiB
Markdown
# 代码风格和约定规范
|
|
|
|
## Java后端代码规范
|
|
|
|
### 命名约定
|
|
- **类名**: 使用PascalCase,如 `PmRepairOrderController`
|
|
- **方法名**: 使用camelCase,如 `updateRepairOrder`
|
|
- **常量**: 使用UPPER_SNAKE_CASE,如 `DEFAULT_PAGE_SIZE`
|
|
- **包名**: 使用小写,如 `org.dromara.hq.service`
|
|
|
|
### 项目结构模式
|
|
```
|
|
org.dromara.zhxy.hq/
|
|
├── controller/ # 控制器层
|
|
├── service/ # 服务层
|
|
│ └── impl/ # 服务实现
|
|
├── mapper/ # 数据访问层
|
|
├── domain/ # 实体类
|
|
│ ├── vo/ # 视图对象
|
|
│ └── bo/ # 业务对象
|
|
└── config/ # 配置类
|
|
```
|
|
|
|
### 注解使用
|
|
- **Controller**: `@RestController`, `@RequestMapping`
|
|
- **Service**: `@Service`, `@Transactional`
|
|
- **Mapper**: `@Mapper`
|
|
- **权限校验**: `@RequiresPermissions("hq:repair:list")`
|
|
- **日志记录**: `@Log(title = "报修管理", businessType = BusinessType.UPDATE)`
|
|
|
|
### 数据库设计规范
|
|
- **主键**: 使用雪花ID `@TableId(type = IdType.ASSIGN_ID)`
|
|
- **基础字段**: 继承 `BaseEntity` (id, create_time, create_by, update_time, update_by, tenant_id)
|
|
- **命名**: 使用下划线命名法,如 `repair_order`, `user_name`
|
|
- **多租户**: 所有业务表包含 `tenant_id` 字段
|
|
|
|
## Vue前端代码规范
|
|
|
|
### 命名约定
|
|
- **组件名**: 使用PascalCase,如 `RepairOrderList.vue`
|
|
- **文件名**: 使用kebab-case,如 `repair-order-list.vue`
|
|
- **变量名**: 使用camelCase,如 `repairOrderList`
|
|
- **常量**: 使用UPPER_SNAKE_CASE,如 `API_BASE_URL`
|
|
|
|
### 组件结构
|
|
```vue
|
|
<template>
|
|
<!-- 模板内容 -->
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
// 导入
|
|
// 类型定义
|
|
// 响应式数据
|
|
// 计算属性
|
|
// 生命周期钩子
|
|
// 方法定义
|
|
</script>
|
|
|
|
<style scoped>
|
|
/* 样式 */
|
|
</style>
|
|
```
|
|
|
|
### TypeScript类型定义
|
|
- **接口命名**: 使用PascalCase + Interface后缀,如 `RepairOrderInterface`
|
|
- **类型导出**: 统一在 `types/` 目录管理
|
|
- **API响应**: 使用泛型 `R<RepairOrderVo>`
|
|
|
|
### API调用规范
|
|
```typescript
|
|
// API定义
|
|
export const getRepairOrderList = (params: RepairOrderQuery) => {
|
|
return request<RepairOrderVo[]>({
|
|
url: '/hq/repair/list',
|
|
method: 'get',
|
|
params
|
|
})
|
|
}
|
|
|
|
// 组件中使用
|
|
const { data, loading, refresh } = useRequest(getRepairOrderList)
|
|
```
|
|
|
|
## 通用开发规范
|
|
|
|
### 注释规范
|
|
```java
|
|
/**
|
|
* 获取报修订单列表
|
|
*
|
|
* @param bo 查询条件
|
|
* @return 报修订单列表
|
|
* @author wuzilong
|
|
* @date 2025-07-01
|
|
*/
|
|
public List<PmRepairOrderVo> queryPageList(PmRepairOrderBo bo)
|
|
```
|
|
|
|
### 错误处理
|
|
- **后端**: 使用统一异常处理 `@ControllerAdvice`
|
|
- **前端**: 使用统一的错误提示组件
|
|
- **日志记录**: 使用 `@Log` 注解记录关键操作
|
|
|
|
### 权限控制
|
|
- **接口级**: `@RequiresPermissions("hq:repair:add")`
|
|
- **按钮级**: `v-hasPermi="['hq:repair:edit']"`
|
|
- **数据级**: 使用 `@DataPermission` 注解
|
|
|
|
### 多租户规范
|
|
- **数据隔离**: 自动注入 `tenant_id` 条件
|
|
- **缓存隔离**: 使用租户前缀
|
|
- **权限隔离**: 基于租户的权限控制
|
|
|
|
### 国际化支持
|
|
- **前端**: 使用 `$t('message.key')`
|
|
- **后端**: 使用 `MessageUtils.message("key")`
|
|
- **配置文件**: 统一在 `i18n/` 目录管理
|
|
|
|
### 测试规范
|
|
- **单元测试**: 使用JUnit 5 + Mockito
|
|
- **接口测试**: 使用 `@Test` 注解
|
|
- **覆盖率**: 要求 >80%
|
|
|
|
### 文档规范
|
|
- **API文档**: 使用Swagger/OpenAPI注解自动生成
|
|
- **代码文档**: 重要方法必须有JavaDoc
|
|
- **变更记录**: 每次变更必须更新变更日志 |