# 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 引用;有引用先调整用户职级 + 导入模板与导出列保持一致(表头=表单字段名);批量导入注意租户内唯一名称