Skip to content

组织架构管理

组织架构管理实现 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 地址绑定到项目时,系统自动:

  1. 获取项目所属的部门
  2. 将 IP 地址的部门设置为项目所属部门
  3. 将 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
}

归属规则

  1. 项目优先:IP 优先绑定到项目
  2. 自动继承:绑定项目时自动继承部门和单位
  3. 独立设置:也可直接设置部门或单位
  4. 使用人关联:可关联具体使用人

使用场景

场景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删除联系人

最佳实践

组织架构设计

  1. 扁平化原则:避免过深的层级结构
  2. 命名规范:统一单位和部门的命名规则
  3. 编码规则:制定清晰的编码规范
  4. 定期维护:定期清理不再使用的组织资源

IP 分配流程

  1. 确定项目:首先确定 IP 所属的项目
  2. 自动归属:系统自动设置部门和单位
  3. 指定使用人:关联具体的使用人
  4. 记录用途:填写 IP 的使用用途

数据一致性

  • 级联更新:项目变更时检查 IP 归属
  • 删除保护:有下级资源时阻止删除
  • 批量操作:支持批量修改 IP 归属

基于 MIT 许可发布