组织架构管理
组织架构管理实现 IP 地址与组织资源的深度集成,支持单位、部门、项目的层级管理,实现资源的精细化归属。
单位管理
单位是组织架构的顶层,代表独立的组织实体。
功能特性
- 创建单位:定义单位名称、编码和描述
- 编辑单位:修改单位信息
- 删除单位:删除不再使用的单位
- 单位统计:查看单位下的部门和项目数量
- 双重验证:支持名称+编码双重验证
数据模型
go
type Unit struct {
ID int // 单位ID
Name string // 单位名称
Code string // 单位编码(唯一)
Description string // 单位描述
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}使用场景
- 集团公司:管理集团下的各个子公司
- 多校区:学校管理不同校区
- 分支机构:企业管理各地分支机构
部门管理
部门隶属于单位,支持层级结构管理。
功能特性
- 创建部门:定义部门名称、编码和所属单位
- 编辑部门:修改部门信息
- 删除部门:删除不再使用的部门
- 层级结构:支持多级部门结构
- 部门统计:查看部门下的项目和IP数量
数据模型
go
type Department struct {
ID int // 部门ID
Name string // 部门名称
Code string // 部门编码
UnitID int // 所属单位ID
ParentID *int // 上级部门ID(支持层级)
Description string // 部门描述
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}层级结构示例
单位:总公司
├── 部门:技术部
│ ├── 子部门:研发组
│ ├── 子部门:运维组
│ └── 子部门:测试组
├── 部门:市场部
│ ├── 子部门:销售组
│ └── 子部门:推广组
└── 部门:行政部项目管理
项目是 IP 地址分配的基本单位,IP 地址通过项目实现组织归属。
功能特性
- 创建项目:定义项目名称、编码和所属部门
- 编辑项目:修改项目信息
- 删除项目:删除不再使用的项目
- IP绑定:IP地址绑定到项目时自动设置部门
- 项目统计:查看项目的IP使用情况
数据模型
go
type Project struct {
ID int // 项目ID
Name string // 项目名称
Code string // 项目编码
DepartmentID int // 所属部门ID
UnitID int // 所属单位ID(冗余,便于查询)
Description string // 项目描述
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}自动部门绑定
当 IP 地址绑定到项目时,系统自动:
- 获取项目所属的部门
- 将 IP 地址的部门设置为项目所属部门
- 将 IP 地址的单位设置为项目所属单位
这确保了 IP 地址的组织归属一致性。
用户联系方式
管理 IP 地址的实际使用人信息。
功能特性
- 创建联系人:记录使用人姓名、电话、邮箱等信息
- 编辑联系人:更新联系人信息
- 删除联系人:删除不再使用的联系人
- IP关联:将联系人与 IP 地址关联
- 联系人查询:按姓名、电话等条件查询
数据模型
go
type UserContact struct {
ID int // 联系人ID
Name string // 姓名
Phone string // 电话
Email string // 邮箱
Position string // 职位
CreatedAt time.Time // 创建时间
UpdatedAt time.Time // 更新时间
}数据关系
单位 (Unit)
└── 部门 (Department)
└── 项目 (Project)
└── IP地址 (IPAddress)
└── 用户联系人 (UserContact)组织架构与 IP 的集成
IP 地址的组织归属
go
type IPAddress struct {
// ... 其他字段
UnitID *int // 单位ID
DepartmentID *int // 部门ID
ProjectID *int // 项目ID
UserContactID *int // 使用人ID
}归属规则
- 项目优先:IP 优先绑定到项目
- 自动继承:绑定项目时自动继承部门和单位
- 独立设置:也可直接设置部门或单位
- 使用人关联:可关联具体使用人
使用场景
场景1:企业部门管理
单位:科技有限公司
├── 部门:研发中心
│ ├── 项目:核心系统
│ ├── 项目:移动APP
│ └── 项目:数据分析平台
├── 部门:运维中心
│ ├── 项目:服务器集群
│ └── 项目:网络设备
└── 部门:业务部门
├── 项目:销售系统
└── 项目:客服系统场景2:学校管理
单位:XX大学
├── 部门:计算机学院
│ ├── 项目:实验室网络
│ └── 项目:教学网络
├── 部门:图书馆
│ └── 项目:图书馆网络
└── 部门:行政楼
└── 项目:办公网络API 接口
单位接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/units | 获取单位列表 |
| POST | /api/units | 创建单位 |
| PUT | /api/units/:id | 更新单位 |
| DELETE | /api/units/:id | 删除单位 |
部门接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/departments | 获取部门列表 |
| POST | /api/departments | 创建部门 |
| PUT | /api/departments/:id | 更新部门 |
| DELETE | /api/departments/:id | 删除部门 |
项目接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/projects | 获取项目列表 |
| POST | /api/projects | 创建项目 |
| PUT | /api/projects/:id | 更新项目 |
| DELETE | /api/projects/:id | 删除项目 |
用户联系人接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/user-contacts | 获取联系人列表 |
| POST | /api/user-contacts | 创建联系人 |
| PUT | /api/user-contacts/:id | 更新联系人 |
| DELETE | /api/user-contacts/:id | 删除联系人 |
最佳实践
组织架构设计
- 扁平化原则:避免过深的层级结构
- 命名规范:统一单位和部门的命名规则
- 编码规则:制定清晰的编码规范
- 定期维护:定期清理不再使用的组织资源
IP 分配流程
- 确定项目:首先确定 IP 所属的项目
- 自动归属:系统自动设置部门和单位
- 指定使用人:关联具体的使用人
- 记录用途:填写 IP 的使用用途
数据一致性
- 级联更新:项目变更时检查 IP 归属
- 删除保护:有下级资源时阻止删除
- 批量操作:支持批量修改 IP 归属