55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
# 6.5 职级管理
|
||
|
||
:::tip 概述
|
||
职级模块(goframe_level,租户级表)管理用户职级属性:标准 CRUD + 状态切换 + Excel 导入导出(与 user/example 并列的三个导入导出示范模块之一),列表带 user_count 引用统计。
|
||
:::
|
||
|
||
## 接口清单
|
||
|
||
| 方法 | 路由 | 权限 | 说明 |
|
||
|------|------|------|------|
|
||
| GET | /api/level/page | sys:level:page | 分页 |
|
||
| GET | /api/level/list | sys:level:list | 列表 |
|
||
| GET | /api/level/detail/:id | sys:level:detail | 详情 |
|
||
| POST | /api/level/add | sys:level:add | 新增 |
|
||
| PUT | /api/level/update | sys:level:update | 修改 |
|
||
| PUT | /api/level/status | sys:level:status | 状态切换 |
|
||
| DELETE | /api/level/delete/:id | sys:level:delete | 软删 |
|
||
| DELETE | /api/level/batchDelete | sys:level:batchDelete | 批量删除 |
|
||
| POST | /api/level/import | sys:level:import | Excel 导入 |
|
||
| GET | /api/level/export | sys:level:export | Excel 导出 |
|
||
|
||
## 模块特征
|
||
|
||
| 特征 | 实现 |
|
||
|------|------|
|
||
| 导入导出 | excel.ReadSheet / WriteSheet + ChunkQuery 分批导出 |
|
||
| 引用统计 | fillUserCount:按 level_id 统计引用用户数(base.go 共享能力,level/position 复用) |
|
||
| 唯一性 | 租户内名称唯一(uk_tenant_name);未声明预检,1062 兜底 |
|
||
| 字典 | status → 字典驱动 {field}Text |
|
||
|
||
## 与其他模块的关系
|
||
|
||
```text
|
||
user.level_id → level.id 用户归属职级(用户表单职级选择)
|
||
fillUserCount 列表/详情展示 user_count(该职级下用户数)
|
||
—— 删除前可据此判断是否被引用
|
||
```
|
||
|
||
## 导入导出模式(与 user/example 同款)
|
||
|
||
```text
|
||
Import:multipart file(*ghttp.UploadFile + p:"file")
|
||
→ excel.ReadSheet(首行表头,全单元格字符串,空行跳过)
|
||
→ 逐行映射/校验(唯一、字典值)→ 批量 Insert → 返回导入统计
|
||
|
||
Export:与列表同筛选 → ChunkQuery 分批(默认 500/页,防 OOM)
|
||
→ excel.WriteSheet 写临时文件 → 返回文件 URL(/upload/temp/...)
|
||
```
|
||
|
||
## 管理建议
|
||
|
||
+ 职级是租户级数据——各租户独立维护自己的职级体系
|
||
+ 删除前查 user_count 引用;有引用先调整用户职级
|
||
+ 导入模板与导出列保持一致(表头=表单字段名);批量导入注意租户内唯一名称
|