### 数据模型

***

1. 集团

1. 项目

1. 部门，用于表示集团下的组织结构，树形数据

1. 岗位，用于描述具体的工作职能

1. 用户，用于表示具体的人员

1. 应用，用于描述功能和产品

1. 功能，用于描述应用包含的功能、菜单、操作等

### 数据关系

***

1. 集团与部门，每个集团下有一个顶级部门与集团对应，创建集团时会同时创建一个部门，部门名称默认与集团名称相同

1. 部门与项目，为部门分配项目，只能分配上级部门已分配的项目。顶级部门默认配置了集团下的全部项目，新增项目时也同时将项目分配到顶级部门

1. 项目与应用，描述项目是否开通应用

1. 岗位配置功能，描述岗位具备的功能权限

1. 用户组织岗位关系，将用户配置到某个组织的某个岗位上，则用户具备组织已配置的项目的数据权限，同时具备岗位已配置的功能权限

### 数据结构

***

| 集团   |          |              |      |                            |
| ------ | -------- | ------------ | ---- | -------------------------- |
| 字段   | 字段名称 | 类型         | 非空 | 备注                       |
| code   | 编码     | varchar(20)  | Y    | 全局唯一，生成后不允许更改 |
| name   | 名称     | varchar(40)  | Y    |                            |
| remark | 备注     | varchar(200) |      |                            |
|        |          |              |      |                            |

| 项目       |          |              |      |          |
| ---------- | -------- | ------------ | ---- | -------- |
| 字段       | 字段名称 | 类型         | 非空 | 备注     |
| id         | 项目编码 | varchar(20)  | Y    | 全局唯一 |
| name       | 项目名称 | varchar(40)  | Y    |          |
| group_code | 集团编码 | varchar(20)  |      |          |
| remark     | 备注     | varchar(200) |      |          |
|            |          |              |      |          |

| 部门         |        |              |     |                 |
| ---------- | ------ | ------------ | --- | --------------- |
| 字段         | 字段名称   | 类型           | 非空  | 备注              |
| id         | ID     | varchar(40)  | Y   | 全局唯一            |
| name       | 名称     | varchar(40)  | Y   |                 |
| parent_id  | 上级部门ID | varchar(40)  | Y   | “0”表示顶级部门       |
| group_code | 所属集团编码 | varchar(20)  | Y   |                 |
| type       | 部门分类   | varchar(20)  | Y   | 工程类财务类等，引用数据编码表 |
| remark     | 备注     | varchar(200) |     |                 |
|            |        |              |     |                 |

| 岗位         |        |             |     |                  |
| ---------- | ------ | ----------- | --- | ---------------- |
| 字段         | 字段名称   | 类型          | 非空  | 备注               |
| id         | ID     | varchar(40) | Y   | 全局唯一             |
| name       | 名称     | varchar(40) | Y   |                  |
| group_code | 所属集团编码 | varchar(20) | Y   |                  |
| type       | 岗位类型   | varchar(40） | Y   | 工程经理/出纳等，应用数据编码表 |
|            |        |             |     |                  |
|            |        |             |     |                  |

| 用户     |          |              |      |                |
| -------- | -------- | ------------ | ---- | -------------- |
| 字段     | 字段名称 | 类型         | 非空 | 备注           |
| id       | ID       | varchar(40)  | Y    | 全局唯一       |
| username | 账号     | varchar(40） |      |                |
| password | 密码     | varchar(40)  |      |                |
| realname | 姓名     | varchar(40)  |      |                |
| gender   | 性别     | bit          |      | 引用数据编码表 |
| status   | 状态     | bit          | Y    | 是否有效       |
|          |          |              |      |                |
|          |          |              |      |                |

| 应用       |        |             |     |             |
| -------- | ------ | ----------- | --- | ----------- |
| 字段       | 字段名称   | 类型          | 非空  | 备注          |
| code     | 编码     | varchar(20) | Y   | 全局唯一        |
| name     | 应用名称   | varchar(40) | Y   |             |
| category | 所属产品大类 | varchar(40) | Y   | 标识产品线，引用编码表 |
|          |        |             |     |             |
|          |        |             |     |             |

| 功能          |        |             |     |      |
| ----------- | ------ | ----------- | --- | ---- |
| 字段          | 字段名称   | 类型          | 非空  | 备注   |
| code        | 编码     | varchar(20) | Y   | 全局唯一 |
| name        | 功能名称   | varchar(40) | Y   |      |
| app_code    | 所属应用   | varchar(20) | Y   | 应用编码 |
| parent_code | 上级功能编码 | varchar(20) |     |      |
|             |        |             |     |      |

| 部门管理项目 |              |             |      |          |
| ------------ | ------------ | ----------- | ---- | -------- |
| 字段         | 字段名称     | 类型        | 非空 | 备注     |
| id           | ID           | varchar(40) | Y    | 全局唯一 |
| dept_id      | 部门ID       | varchar(40) | Y    |          |
| project_id   | 项目ID       | varchar(40) | Y    |          |
| group_code   | 所属集团编码 | varchar(20) | Y    | 冗余字段 |
|              |              |             |      |          |

| 项目配置应用 |              |             |      |          |
| ------------ | ------------ | ----------- | ---- | -------- |
| 字段         | 字段名称     | 类型        | 非空 | 备注     |
| id           | ID           | varchar(40) | Y    | 全局唯一 |
| project_id   | 项目ID       | varchar(40) | Y    |          |
| app_code     | 应用编码     | varchar(40) | Y    |          |
| status       | 状态         | bit         | Y    | 是否有效 |
| group_code   | 所属集团编码 | varchar(20) | Y    | 冗余字段 |
|              |              |             |      |          |

| 岗位配置功能 |              |             |      |          |
| ------------ | ------------ | ----------- | ---- | -------- |
| 字段         | 字段名称     | 类型        | 非空 | 备注     |
| id           | ID           | varchar(40) | Y    | 全局唯一 |
| group_code   | 所属集团编码 | varchar(20) | Y    | 冗余字段 |
| app_code     | 应用编码     | varchar(40) | Y    |          |
| job_id       | 岗位id       | varchar(40) | Y    |          |
| opt_code     | 功能编码     | varchar(20) | Y    |          |
| status       | 状态         | bit         | Y    | 是否有效 |
|              |              |             |      |          |

| 用户岗位配置 |          |             |      |                                                |
| ------------ | -------- | ----------- | ---- | ---------------------------------------------- |
| 字段         | 字段名称 | 类型        | 非空 | 备注                                           |
| id           | ID       | varchar(40) | Y    | 全局唯一                                       |
| user_id      | 用户id   | varchar(40) | Y    |                                                |
| dept_id      | 部门id   | varchar(40) | Y    | 用户配置部门后即拥有部门所配置的项目的数据权限 |
| job_id       | 岗位id   | varchar(40) | Y    | 用户配置岗位后即拥有岗位所配置的功能权限       |
| status       | 状态     | bit         | Y    | 是否有效                                       |
|              |          |             |      |                                                |

### 数据存储

1. 采用mysql数据库

1. 考虑数据规模，暂不进行分库分表

### 接口清单

***

1. 创建集团

1. 查询集团

1. 创建应用

1. 查询应用

1. 创建功能

1. 查询功能（按应用）

1. 编辑功能

1. 删除功能

1. 创建项目

1. 查询项目（按集团等）

1. 编辑项目

1. 删除项目

1. 创建部门

1. 查询部门（按集团等）

1. 编辑部门

1. 配置项目

1. 删除部门

1. 创建岗位

1. 查询岗位

1. 编辑岗位

1. 配置岗位功能

1. 删除岗位

1. 创建用户

1. 查询用户（按集团、项目、岗位、部门等）

1. 编辑用户

1. 修改密码

1. 配置部门岗位

1. 删除用户



