Bläddra i källkod

新增人员组织权限文档

wudla 4 år sedan
förälder
incheckning
1e2e55cc20
7 ändrade filer med 1638 tillägg och 1 borttagningar
  1. 28 1
      docs/.vuepress/config.js
  2. 456 0
      docs/org/bak/org_api.md
  3. 7 0
      docs/org/index.md
  4. 509 0
      docs/org/org_api.md
  5. 246 0
      docs/org/org_ddl_sql.md
  6. 167 0
      docs/org/org_design.md
  7. 225 0
      docs/utils/query.md

+ 28 - 1
docs/.vuepress/config.js

@@ -3,11 +3,38 @@ module.exports = {
     description: 'Just playing around',
     plugins: ['@vuepress/back-to-top'],
     themeConfig: {
-        nav: [{ text: '主页', link: '/' }, { text: '物理世界', link: '/rwd/' }],
+
+        nav: [{ text: '主页', link: '/' },
+            { text: '物理世界', link: '/rwd/' },
+            { text: '人员组织权限', link: '/org/' }
+            // { text: '数据字典', link: '/dic/'}
+            ],
 
         sidebarDepth: 1,
         displayAllHeaders: true,
         sidebar: {
+            '/org': [
+                {
+                    title: '人员组织权限',
+                    collapsable: false,
+                    children: [
+                        {title: '建表语句', path: '/org/org_ddl_sql'},
+                        {title: '接口文档', path: '/org/org_api'},
+                        {title: '数据结构设计', path: '/org/org_design'}
+                    ]
+                }
+            ],
+            // '/dic': [
+            //     {
+            //         title: '数据字典',
+            //         collapsable: false,
+            //         children: [
+            //             {title: '建表语句', path: '/dic/dic_ddl_sql'},
+            //             {title: '接口文档', path: '/dic/dic_api'},
+            //             {title: '数据结构设计', path: '/dic/dic_design'}
+            //         ]
+            //     }
+            // ],
             '/rwd': [
                 {
                     title: '定义数据',

+ 456 - 0
docs/org/bak/org_api.md

@@ -0,0 +1,456 @@
+# 人员组织权限接口文档
+
+## 以下查询为模板案例
+
+参考实体类 Example
+
+| 字段 | 类型   |
+| ---- | ------ |
+| id   | int    |
+| name | string |
+| age  | int    |
+
+### 查询(请参考[通用查询](/utils/query.md))
+
+### 新增
+
+请求地址
+
+```text
+/example/create
+```
+
+请求参数
+
+```json
+{
+    "id": "1",
+    "name": "test",
+    "age": "23"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "1"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+
+
+### 更新
+
+请求地址
+
+```json
+POST: /example/update
+```
+
+请求参数
+
+```json
+{
+    "id": "1",
+    "name": "test",
+    "age": "23"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "123456"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+
+
+### 删除
+
+请求地址
+
+```json
+POST: /example/delete
+```
+
+请求参数
+
+```json
+{
+    "id": "1"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "1"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+### 
+
+### 系统接口
+
+### (注:condition 为 query,create,update,delete)
+
+### (注:为了读写分离,serviceid还会变动,请不要写死)
+
+#### 请求方法:POST
+
+#### 集团
+
+请求路径:/group/{condition}?userId=123&groupCode=集团编码&projectId=项目id&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "WD",//非空
+  "name": "万达",//非空
+  "remark": "测试数据"
+}
+更新:全量更新
+{
+  "id": "1",
+  "code": "WD",
+  "name": "万达",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602635731000,
+  "updateUser": "test",
+  "updateTime": 1602635741000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 公司
+
+请求路径:/company/{condition}?userId=123&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+更新
+{
+  "id": "1",
+  "code": "WD_CP_01",
+  "name": "万达测试1",
+  "groupCode": "WD",
+  "parentId": "0",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602472956000,
+  "updateUser": "w",
+  "updateTime": 1602529759000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 项目
+
+请求路径:/project/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "3",
+  "name": "测试项目3",
+  "groupCode": "WD",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602473167000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 人员账号
+
+请求路径:/user/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "name": "King",
+  "username": "king",
+  "password": "123456",
+  "gender": 1,
+  "phone": "13399998888",
+  "mail": "test@p.com",
+  "birthday": 1602635405000,
+  "headPortrait": "test_url",
+  "otherAccount": "test_other",
+  "userFrom": "test_0",
+  "isAdmin": "0",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602635430000,
+  "updateUser": "test1",
+  "updateTime": 1602635517000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 部门
+
+请求路径:/dept/{condition}?userId=123
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "deptClassifyCode": "DEV_DATA",
+  "code": "DEV_DMP",
+  "name": "数据中台",
+  "companyId": "1",
+  "parentId": "0",
+  "groupCode": "WD",
+  "resourceFrom": "0",
+  "manager": "admin",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602637869000,
+  "updateUser": "test",
+  "updateTime": 1602637875000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 部门分类
+
+请求路径: /dept/classify/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "code": "DEV",
+  "name": "开发",
+  "parentId": "0",
+  "orderNum": "1",
+  "groupCode": "WD",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602637581000,
+  "updateUser": "test",
+  "updateTime": 1602637584000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位
+
+请求路径:/job/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "code": "DEV_JAVA",
+  "name": "Java开发",
+  "groupCode": "WD",
+  "userId": "1",
+  "deptId": "1",
+  "jobClassifyCode": "DEV_JAVA_CLASS",
+  "resourceFrom": "0",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602635883000,
+  "updateUser": "test",
+  "updateTime": 1602635887000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位分类
+
+请求路径:/job/classify/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "code": "DEV_JAVA_CLASS",
+  "name": "开发",
+  "groupCode": "WD",
+  "orderNum": "1",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602637370000,
+  "updateUser": "test",
+  "updateTime": 1602637379000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 应用
+
+请求路径:/application/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "code": "DMP",
+  "name": "数据中台",
+  "category": "运维",
+  "appOrder": 1,
+  "menuIconKey": "test_icon",
+  "iconKey": "test_key",
+  "description": "测试des",
+  "objType": "test_type",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602638586000,
+  "updateUser": "test",
+  "updateTime": 1602638597000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 功能
+
+请求路径:/function/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "code": "DMP_FUNC",
+  "name": "数据中台功能",
+  "type": "test",
+  "parentId": "0",
+  "appId": "1",
+  "functionUrl": "test_url",
+  "icon": "test_icon",
+  "description": "test_des",
+  "functionAlias": "test_alias",
+  "objType": "test_type",
+  "funcOrder": 1,
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602638915000,
+  "updateUser": "test",
+  "updateTime": 1602638923000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位分类与应用功能关系
+
+请求路径:/job/classify/rel/{condition}
+
+请求参数:
+
+```json
+{
+  "id": "1",
+  "jobClassifyCode": "DEV_JAVA_CLASS",
+  "appId": "1",
+  "functionId": "1",
+  "groupCode": "WD",
+  "status": 1,
+  "createUser": "test",
+  "createTime": 1602637470000,
+  "updateUser": "test",
+  "updateTime": 1602637476000,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```

+ 7 - 0
docs/org/index.md

@@ -0,0 +1,7 @@
+## 人员组织权限
+
+#### [建表语句](/org/org_ddl_sql.md)
+
+#### [接口文档](/org/org_api.md)
+
+#### [数据结构设计](/org/org_design.md)

+ 509 - 0
docs/org/org_api.md

@@ -0,0 +1,509 @@
+# 人员组织权限接口文档
+
+## 模板案例
+
+参考实体类 Example
+
+| 字段 | 类型   |
+| ---- | ------ |
+| id   | int    |
+| name | string |
+| age  | int    |
+
+### 查询(请参考[通用查询](/utils/query.md))
+
+### 新增
+
+请求地址
+
+```text
+/example/create
+```
+
+请求参数
+
+```json
+{
+    "id": "1",
+    "name": "test",
+    "age": "23"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "1"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+
+
+### 更新
+
+请求地址
+
+```json
+POST: /example/update
+```
+
+请求参数
+
+```json
+{
+    "id": "1",
+    "name": "test",
+    "age": "23"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "123456"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+
+
+### 删除
+
+请求地址
+
+```json
+POST: /example/delete
+```
+
+请求参数
+
+```json
+{
+    "id": "1"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "1"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "success",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+### 
+
+## 系统接口
+
+### (注:condition 为 query,create,update,delete)
+
+### (注:为了读写分离,serviceid还会变动,请不要写死)
+
+### (注:userId、groupCode必须传值,appId可以为空)
+
+#### 请求方法:POST
+
+#### 集团
+
+请求路径:/group/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "WD",//非空
+  "name": "万达",//非空
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "WD",//非空
+  "name": "万达",//非空
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 公司
+
+请求路径:/company/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "WD_CP_01",//非空
+  "name": "万达测试1",//非空
+  "parentId": "1",//非空
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "WD_CP_01",//非空
+  "name": "万达测试1",//非空
+  "parentId": "2",//非空
+  "remark": "测试数据",
+  "projects": [
+    {"id": "1"},
+    {"id": "3"}
+  ]//projects 给公司配置项目的id
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 项目
+
+请求路径:/project/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "id": "3",//非空,业务维护项目Id字段
+  "name": "测试项目3",//非空
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "3",//非空
+  "name": "测试项目3",//非空
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 人员账号
+
+请求路径:/user/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "name": "King",
+  "username": "king",
+  "password": "123456",
+  "gender": 1,
+  "phone": "13399998888",
+  "mail": "test@p.com",
+  "birthday": 1602635405000,
+  "headPortrait": "test_url",
+  "otherAccount": "test_other",
+  "userFrom": "test_0",
+  "isAdmin": "0",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",
+  "name": "King",
+  "username": "king",
+  "password": "123456",
+  "gender": 1,
+  "phone": "13399998888",
+  "mail": "test@p.com",
+  "birthday": 1602635405000,
+  "headPortrait": "test_url",
+  "otherAccount": "test_other",
+  "userFrom": "test_0",
+  "isAdmin": "0",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 部门
+
+请求路径:/dept/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "deptClassifyCode": "DEV_DATA",//非空
+  "code": "DEV_DMP",//建议非空
+  "name": "数据中台",//非空
+  "companyId": "1",//非空
+  "parentId": "0",//“0”表示顶级部门,非空
+  "resourceFrom": "0",//非空
+  "manager": "admin",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "deptClassifyCode": "DEV_DATA",//非空
+  "code": "DEV_DMP",//建议非空
+  "name": "数据中台",//非空
+  "companyId": "1",//非空
+  "parentId": "0",//非空
+  "resourceFrom": "0",//非空
+  "manager": "admin",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 部门分类
+
+请求路径: /dept/classify/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "DEV",//非空
+  "name": "开发",//非空
+  "parentId": "0",
+  "orderNum": "1",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "DEV",//非空
+  "name": "开发",//非空
+  "parentId": "0",
+  "orderNum": "1",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位
+
+请求路径:/job/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "DEV_JAVA",//建议非空
+  "name": "Java开发",//建议非空
+  "groupCode": "WD",//非空
+  "userId": "1",//非空
+  "deptId": "1",//非空
+  "jobClassifyCode": "DEV_JAVA_CLASS",//非空
+  "resourceFrom": "0",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "DEV_JAVA",//建议非空
+  "name": "Java开发",//建议非空
+  "userId": "1",//非空
+  "deptId": "1",//非空
+  "jobClassifyCode": "DEV_JAVA_CLASS",//非空
+  "resourceFrom": "0",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位分类
+
+请求路径:/job/classify/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "DEV_JAVA_CLASS",//非空
+  "name": "开发",//非空
+  "orderNum": "1",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "DEV_JAVA_CLASS",//非空
+  "name": "开发",//非空
+  "orderNum": "1",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+
+#### 应用
+
+请求路径:/application/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "DMP",//非空
+  "name": "数据中台",//非空
+  "category": "运维",//非空
+  "appOrder": 1,//非空
+  "menuIconKey": "test_icon",
+  "iconKey": "test_key",
+  "description": "测试des",
+  "objType": "test_type",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "DMP",//非空
+  "name": "数据中台",//非空
+  "category": "运维",//非空
+  "appOrder": 1,//非空
+  "menuIconKey": "test_icon",
+  "iconKey": "test_key",
+  "description": "测试des",
+  "objType": "test_type",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 功能
+
+请求路径:/function/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "code": "DMP_FUNC",//非空
+  "name": "数据中台功能",//非空
+  "type": "test",
+  "parentId": "0",
+  "appId": "1",//非空
+  "functionUrl": "test_url",
+  "icon": "test_icon",
+  "description": "test_des",
+  "functionAlias": "test_alias",
+  "objType": "test_type",
+  "funcOrder": 1,
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "code": "DMP_FUNC",//非空
+  "name": "数据中台功能",//非空
+  "type": "test",
+  "parentId": "0",
+  "appId": "1",//非空
+  "functionUrl": "test_url",
+  "icon": "test_icon",
+  "description": "test_des",
+  "functionAlias": "test_alias",
+  "objType": "test_type",
+  "funcOrder": 1,
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```
+#### 岗位分类与应用功能关系
+
+请求路径:/job/classify/rel/{condition}?userId=用户id&groupCode=集团编码&appId=应用id
+
+请求参数:
+
+```json
+新增:
+{
+  "jobClassifyCode": "DEV_JAVA_CLASS",//非空
+  "appId": "1",
+  "functionId": "1",
+  "remark": "测试数据"
+}
+更新(注:全量更新):
+{
+  "id": "1",//非空
+  "jobClassifyCode": "DEV_JAVA_CLASS",
+  "appId": "1",
+  "functionId": "1",
+  "remark": "测试数据"
+}
+删除:
+{
+  "id": "1"
+}
+```

+ 246 - 0
docs/org/org_ddl_sql.md

@@ -0,0 +1,246 @@
+# 人员组织权限
+### 集团,岗位分类,部门分类使用code关联,id没有实际意义,其他表均以id进行关联
+### 除了项目id为公司自行维护,其余id均为UUID
+
+#### 1、集团(多租户)
+
+```sql
+DROP TABLE IF EXISTS `org_group`;
+
+CREATE TABLE org_group (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NULL COMMENT '集团编码',
+    name varchar(255) NULL COMMENT '集团名称',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500) NULL COMMENT '备注'
+) COMMENT '集团';
+```
+
+#### 2、公司
+
+```sql
+DROP TABLE IF EXISTS `org_company`;
+
+CREATE TABLE org_company (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NOT NULL COMMENT '公司编码',
+    name varchar(80) NULL COMMENT '公司名称',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    parent_id varchar(80) NULL COMMENT '上级公司ID',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500) NULL COMMENT '备注'
+) COMMENT '公司';
+```
+
+#### 3、项目
+
+```sql
+DROP TABLE IF EXISTS `org_project`;
+
+CREATE TABLE org_project (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    name varchar(80) NOT NULL COMMENT '部门名称',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '项目';
+```
+
+#### 4、人员账号
+
+```sql
+DROP TABLE IF EXISTS `org_user`;
+
+CREATE TABLE org_user (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    name varchar(80) NULL COMMENT '姓名',
+    username varchar(80) NULL COMMENT '账号',
+    password varchar(80) NULL COMMENT '密码',
+    gender int NULL COMMENT '性别',
+    phone varchar(80) NULL COMMENT '手机号',
+    mail varchar(80) NULL COMMENT '邮箱',
+    birthday timestamp NULL COMMENT '生日',
+    head_portrait varchar(80) NULL COMMENT '头像',
+    other_account varchar(80) NULL COMMENT '第三方账号',
+    user_from varchar(80) NULL COMMENT '账号来源',
+    isAdmin varchar(80) NULL COMMENT '是否为PERSAGYADMIN',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '人员账号';
+```
+
+#### 5、部门
+
+```sql
+DROP TABLE IF EXISTS `org_dept`;
+
+CREATE TABLE org_dept (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    dept_classify_code varchar(80) NOT NULL COMMENT '部门分类编码',
+    code varchar(80) NOT NULL COMMENT '部门编码',
+    name varchar(80) NOT NULL COMMENT '部门名称',
+    company_id varchar(80) NOT NULL COMMENT '所属公司ID',
+    parent_id varchar(80) NOT NULL COMMENT '上级部门ID,0:顶级部门',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    resource_from varchar(80) NOT NULL COMMENT '部门来源',
+    manager varchar(80) NOT NULL COMMENT '部门负责人',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '部门';
+```
+
+#### 6、部门分类
+
+```sql
+DROP TABLE IF EXISTS `org_dept_classify`;
+
+CREATE TABLE org_dept_classify (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(200) NOT NULL COMMENT '部门分类编码',
+    name varchar(200) NOT NULL COMMENT '名称',
+    parent_id varchar(200) NOT NULL COMMENT '父级分类ID',
+    order_num varchar(200) NOT NULL COMMENT '排序',
+    group_code varchar(80) NOT NULL COMMENT '集团ID',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '部门分类';
+```
+
+#### 7、岗位分类
+
+```sql
+DROP TABLE IF EXISTS `org_job_classify`;
+
+CREATE TABLE org_job_classify (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NOT NULL COMMENT '岗位分类编码',
+    name varchar(80) NOT NULL COMMENT '名称',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    order_num varchar(200) NOT NULL COMMENT '排序',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '岗位分类';
+```
+
+#### 8、岗位
+
+```sql
+DROP TABLE IF EXISTS `org_job`;
+
+CREATE TABLE org_job (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NOT NULL COMMENT '岗位编码',
+    name varchar(80) NOT NULL COMMENT '岗位名称',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    user_id varchar(80) NOT NULL COMMENT '账号ID',
+    dept_id varchar(80) NOT NULL COMMENT '部门ID',
+    job_classify_code varchar(80) NOT NULL COMMENT '岗位类型',
+    resource_from varchar(80) NULL COMMENT '部门来源',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '岗位';
+```
+
+#### 9、应用
+
+```sql
+DROP TABLE IF EXISTS `org_application`;
+
+CREATE TABLE org_application (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NOT NULL COMMENT '应用编码',
+    name varchar(80) NOT NULL COMMENT '应用名称',
+    category varchar(80) NOT NULL COMMENT '所属产品大类',
+    app_order int NOT NULL COMMENT '排序',
+    menu_icon_key varchar(80) NULL COMMENT '菜单小图标',
+    icon_key varchar(80) NULL COMMENT '小图标的key',
+    description varchar(80) NULL COMMENT '描述',
+    obj_type varchar(80) NULL COMMENT '标签类型',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '应用';
+```
+
+#### 10、功能
+
+```sql
+DROP TABLE IF EXISTS `org_function`;
+
+CREATE TABLE org_function (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    code varchar(80) NOT NULL COMMENT '功能编码',
+    name varchar(80) NOT NULL COMMENT '功能名称',
+    type varchar(80) NOT NULL COMMENT '功能类型',
+    parent_id varchar(80) NOT NULL COMMENT '父节级编码',
+    app_id varchar(80) NOT NULL COMMENT '应用编码',
+    function_url varchar(200) NULL COMMENT '功能跳转URL',
+    icon varchar(50) NULL COMMENT '图标',
+    description varchar(50) NULL COMMENT '描述',
+    function_alias varchar(50) NULL COMMENT '功能别名',
+    obj_type varchar(50) NULL COMMENT '对象类型',
+    func_order int NOT NULL COMMENT '排序',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500)
+) COMMENT '功能';
+```
+
+#### 11、岗位分类与应用功能关系
+
+```sql
+DROP TABLE IF EXISTS `org_job_classify_rel`;
+
+CREATE TABLE org_job_classify_rel (
+    id varchar(80) NOT NULL PRIMARY KEY,
+    job_classify_code varchar(80) NOT NULL COMMENT '岗位分类ID',
+    app_id varchar(80) NOT NULL COMMENT '应用ID',
+    function_id  varchar(80) NOT NULL COMMENT '功能ID',
+    group_code varchar(80) NOT NULL COMMENT '集团编码',
+    status int NOT NULL COMMENT '状态',
+    create_user varchar(80) NULL COMMENT '创建用户',
+    create_time timestamp NULL COMMENT '创建时间',
+    update_user varchar(80) NULL COMMENT '更新用户',
+    update_time timestamp NULL COMMENT '更新时间',
+    remark varchar(500) NULL
+) COMMENT '岗位分类与应用功能关系';
+```
+

+ 167 - 0
docs/org/org_design.md

@@ -0,0 +1,167 @@
+# 人员组织权限数据结构
+
+#### 注:集团,岗位分类,部门分类使用code关联,id没有实际意义,其他表均以id进行关联
+#### 注:除了项目id为公司自行维护,其余id均为UUID
+
+### 1、集团 org_group
+
+| 字段   | 字段名称 | 非空 | 备注                       |
+| ------ | -------- | ---- | -------------------------- |
+| id     | 主键     | Y    | 全局唯一                   |
+| code   | 编码     | Y    | 全局唯一,生成后不允许更改 |
+| name   | 名称     | Y    | 集团名称(租户的名称)     |
+| remark | 备注     |      |                            |
+
+
+
+### 2、公司 org_company
+
+| 字段       | 字段名称       | 非空 | 备注                     |
+| ---------- | -------------- | ---- | ------------------------ |
+| id         | 主键           | Y    | 全局唯一,UUID无实际意义 |
+| code       | 公司编码       |      |                          |
+| name       | 公司名称       |      |                          |
+| group_code | 集团编码       | Y    |                          |
+| parent_id  | 上级公司ID     | Y    | 若为顶级公司为0          |
+| projects   | 公司关联的项目 |      | 返回值,无实际字段       |
+| remark     | 备注           |      |                          |
+
+
+
+### 3、项目 org_project
+
+| 字段       | 字段名称       | 非空 | 备注                 |
+| ---------- | -------------- | ---- | -------------------- |
+| id         | 主键           | Y    | 全局唯一(公司维护) |
+| name       | 项目名称       | Y    |                      |
+| group_code | 集团编码       | Y    |                      |
+| companies  | 项目关联的公司 |      | 返回值,无实际字段   |
+| remark     | 备注           |      |                      |
+
+
+
+### 4、部门 org_dept
+
+| 字段               | 字段名称                           | 非空 | 备注                     |
+| ------------------ | ---------------------------------- | ---- | ------------------------ |
+| id                 | ID                                 | Y    | 全局唯一,UUID无实际意义 |
+| dept_classify_code | 部门分类编码                       | Y    |                          |
+| code               | 部门编码                           |      |                          |
+| name               | 名称                               | Y    |                          |
+| parent_id          | 上级部门ID                         | Y    | “0”表示顶级部门          |
+| company_id         | 所属公司                           | Y    |                          |
+| resource_from      | 部门来源,null或0-FM新建,1-新城同步 |      |                          |
+| group_code         | 所属集团编码                       | Y    |                          |
+| manager            | 部门负责人                         |      |                          |
+| remark             | 备注                               |      |                          |
+
+
+
+### 5、人员账号 org_user
+
+| 字段          | 字段名称                                             | 非空 | 备注                     |
+| ------------- | ---------------------------------------------------- | ---- | ------------------------ |
+| id            | ID                                                   | Y    | 全局唯一,UUID无实际意义 |
+| name          | 姓名                                                 |      |                          |
+| id_number     | 员工编号                                             |      |                          |
+| username      | 账号                                                 |      |                          |
+| password      | 密码                                                 |      |                          |
+| gender        | 性别                                                 |      | 引用数据字典             |
+| head_portrait | 头像                                                 |      |                          |
+| birthday      | 生日                                                 |      |                          |
+| phone         | 手机号                                               |      |                          |
+| mail          | 邮箱                                                 |      |                          |
+| other_account | 第三方账号                                           |      |                          |
+| user_from     | 账号来源,0-FM账号,1-苏宁账号,2-万达账号,3-新城OA账号 |      |                          |
+| isAdmin       | 是否为PERSAGYADMIN,0-不是,1-是                       |      |                          |
+| status        | 状态                                                 | Y    | 是否有效                 |
+
+
+
+### 6、部门分类 org_dept_classify
+
+| 字段       | 字段名称     | 非空 | 备注                     |
+| ---------- | ------------ | ---- | ------------------------ |
+| id         | 主键         | Y    | 全局唯一,UUID无实际意义 |
+| code       | 部门分类编码 | Y    | 全局唯一,关联字段       |
+| name       | 名称         | Y    |                          |
+| parent_id  | 父级分类ID   |      |                          |
+| group_code | 所属集团编码 | Y    |                          |
+| order_num  | 排序         |      |                          |
+| remark     | 备注         |      |                          |
+
+
+
+### 7、岗位分类org_job_classify
+
+| 字段       | 字段名称     | 非空 | 备注                     |
+| ---------- | ------------ | ---- | ------------------------ |
+| id         | 主键         | Y    | 全局唯一,UUID无实际意义 |
+| code       | 岗位分类编码 | Y    | 全局唯一,关联字段       |
+| name       | 名称         | Y    |                          |
+| group_code | 所属集团编码 | Y    |                          |
+| order_num  | 排序         |      |                          |
+
+
+
+### 8、岗位 org_job
+
+| 字段              | 字段名称                           | 非空 | 备注                     |
+| ----------------- | ---------------------------------- | ---- | ------------------------ |
+| id                | ID                                 | Y    | 全局唯一,UUID无实际意义 |
+| code              | 岗位编码                           |      |                          |
+| name              | 名称                               |      |                          |
+| group_code        | 所属集团编码                       | Y    |                          |
+| user_id           | 账号ID                             | Y    |                          |
+| dept_id           | 部门ID                             | Y    |                          |
+| job_classify_code | 岗位分类code                       | Y    |                          |
+| resource_from     | 部门来源,null或0-FM新建,1-新城同步 |      |                          |
+| status            | 状态                               | Y    |                          |
+
+
+
+### 9、应用org_application
+
+| 字段          | 字段名称                                                     | 非空 | 备注                     |
+| ------------- | ------------------------------------------------------------ | ---- | ------------------------ |
+| id            | ID                                                           | Y    | 全局唯一,UUID无实际意义 |
+| code          | 编码                                                         | Y    | 全局唯一                 |
+| name          | 应用名称                                                     | Y    |                          |
+| category      | 所属产品大类                                                 | Y    | 标识产品线,引用数据字典 |
+| app_order     | 排序                                                         | Y    |                          |
+| menu_icon_key | 菜单小图标                                                   |      |                          |
+| icon_key      | 小图标的Key                                                  |      |                          |
+| description   | 描述标签                                                     |      |                          |
+| obj_type      | 标签类型,<br />g1-默认分组,g2-自定义分组,g3-APP端默认分组,<br />g4-APP端自定义分组,g5-BIM默认分组,<br />g6-BIM自定义分组标签 |      | 引用数据字典             |
+
+
+
+### 10、功能org_function
+
+| 字段           | 字段名称                                                     | 非空 | 备注                     |
+| -------------- | ------------------------------------------------------------ | ---- | ------------------------ |
+| id             | ID                                                           | Y    | 全局唯一,UUID无实际意义 |
+| code           | 编码                                                         | Y    | 全局唯一                 |
+| name           | 功能名称                                                     | Y    |                          |
+| type           | 功能类型                                                     |      | 从数据字典取             |
+| parent_id      | 父节点                                                       |      |                          |
+| app_id         | 所属应用                                                     | Y    | 应用编码                 |
+| function_url   | 功能跳转URL                                                  |      |                          |
+| icon           | 图标                                                         |      |                          |
+| description    | 功能描述                                                     |      |                          |
+| function_alias | 功能别名,页面展示菜单时优先取该字段值,如果为空才取name字段的值 |      |                          |
+| obj_type       | 对象类型,f2-PC端功能F,f3-APP端功能F                          |      |                          |
+| func_order     | 排序                                                         | Y    |                          |
+
+
+
+### 11、岗位分类与应用功能关系 org_job_classify_rel
+
+| 字段              | 字段名称     | 非空 | 备注                     |
+| ----------------- | ------------ | ---- | ------------------------ |
+| id                | ID           | Y    | 全局唯一,UUID无实际意义 |
+| job_classify_code | 岗位分类code | Y    |                          |
+| group_code        | 所属集团编码 | Y    |                          |
+| app_id            | 应用id       |      |                          |
+| function_id       | 功能id       |      |                          |
+

+ 225 - 0
docs/utils/query.md

@@ -0,0 +1,225 @@
+## 数据结构
+
+```
+{
+    "page": 1,
+    "size": 20,
+    "onlyCount": false,
+    "criteria": {
+        "age": {
+            "$gt": 21
+        }
+    },
+    "orders": [
+        {
+            "column": "name",
+            "asc": false
+        }
+    ],
+    "withColumns": [ "roles" ]
+}  
+```
+
+参数说明
+
+| 字段        |          | 说明                      |
+| ----------- | -------- | ------------------------- |
+| page        |          | 分页页码,从1开始          |
+| size        |          | 分页大小                  |
+| onlyCount   |          | 是否只统计数量,默认false  |
+| criteria    |          | 查询条件                  |
+| orders      | object[] | 排序参数,支持多个字段排序 |
+|             | column   | 排序字段                  |
+|             | asc      | 是否升序,默认true         |
+| withColumns |          | 额外返回的扩展字段清单    |
+|             |          |                           |
+
+## criteria说明
+
+#### 符号说明
+
+| 符号                     | 说明                           |
+| ------------------------ | ------------------------------ |
+| $ne                      | dayu                           |
+| \$gt, \$gte, \$lt, \$lte | 大于, 大于等于, 小于, 小于等于 |
+| \$in                     | 范围查询                       |
+| \$like, \$notlike        | 模糊匹配 不匹配                |
+| \$null                   | 是否为空                       |
+|                          |                                |
+|                          |                                |
+
+以下实例针对的实体类型user如下
+
+| 字段 | 类型   |
+| ---- | ------ |
+| id   | int    |
+| name | string |
+| age  | int    |
+
+#### 相等
+
+查询name为zhangsan的数据
+
+```
+{
+    "criteria": {
+        "name": "zhangsan"
+    }
+}
+```
+
+#### 不等于
+
+查询name不等于张三的数据
+
+```
+{
+    "criteria": {
+        "name": {
+            "$ne": "zhangsan"
+        }
+    }
+}
+```
+
+#### 是否为空
+
+查询name不为空的数据
+
+```
+{
+    "criteria": {
+        "name": {
+            "$null": false
+        }
+    }
+}
+```
+
+
+
+#### 比较大小
+
+查询age大于25小于35的数据
+
+```
+{
+    "criteria": {
+        "age": {
+            "$gt": 25,
+            "$lt": 35
+        }
+    }
+}
+```
+
+#### in查询
+
+查询name为zhangsan、lisi的数据
+
+```
+{
+    "criteria": {
+        "name": {
+            "$in": [ "zhangsan", "lisi" ]
+        }
+    }
+}
+```
+
+也可直接写成
+
+```
+{
+    "criteria": {
+        "name": [ "zhangsan", "lisi" ]
+    }
+}
+```
+
+#### 模糊查询
+
+查询name以zh开头的数据
+
+```
+{
+    "criteria": {
+        "name": {
+            "$like": "zh%"
+        }
+    }
+}
+```
+
+
+
+## withColumns说明
+
+通过withColumns可以控制返回的数据内容,可以一定程度上提供服务性能.
+
+withColumns粒度比较粗,一般由服务提供者决定哪些字段可以通过withColumns来控制.
+
+假设数据如下
+
+```
+{
+    "name": "zhangsan",
+    "age": 22,
+    "roles": [ "administrator", "manager" ]
+}
+```
+
+将roles设计为可选字段,由withColumns来管理,如果查询参数中有withColumns并包含roles,则返回roles字段
+
+默认查询和返回的数据内容为
+
+```
+{
+    "criteria": {
+        "name": "zhangsan"
+    }
+}
+```
+
+
+
+```
+{
+    "name": "zhangsan",
+    "age": 22
+}
+```
+
+包含withColumns时的查询参数和返回的数据
+
+```
+{
+    "criteria": {
+        "name": "zhangsan"
+    },
+    "withColumns": [ "roles" ]
+}
+```
+
+```
+{
+    "name": "zhangsan",
+    "age": 22,
+    "roles": [ "administrator", "manager" ]
+}
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+