帮助首页 > 网站操作说明 · 7. 公司部门 · 逻辑流程 > 部门管理全流程上线实施方案

部门管理全流程上线实施方案

部门管理全流程上线实施方案(管理后台 + 公司后台)

目标:上线“部门增删改查、人员归属、负责人、角色继承、审计日志”,并打通“添加公司员工时可选择部门”。

1. 现状结论(基于当前代码)

  • 已有 RBAC 底表(迁移SQL已存在):

- by_org_department

- by_org_role

- by_org_permission

- by_org_role_permission

- by_org_user_role

  • Merchant/CommonAction 已能读取 org_user_role -> org_role_permission -> org_permission
  • 员工管理页(Merchant/worker/create/edit当前没有部门选择字段
  • 现有员工权限主要靠 shop_worker.is_xxx,与 RBAC 并行,尚未完全统一。

2. 你问的几个关键点(直接答)

2.1 部门在哪里添加?

建议两级入口:

  1. 公司后台(Merchant)主入口

菜单位置:公司管理 下新增 组织与权限

- 部门管理:merchant/orgdepartment/index

- 角色管理:merchant/orgrole/index

- 用户角色分配:merchant/orguserrole/index

- 权限审计日志:merchant/orgaudit/index

  1. 系统后台(Backstage)配置入口

仅维护“全局权限点字典”,不直接操作企业组织数据:

- 权限点管理:backstage/orgpermission/index

- 菜单/权限点映射维护

2.2 权限在哪里设置?

  • 公司级权限:在 Merchant 后台给角色绑定 permission_code

- 数据落表:org_role_permission

  • 人员权限:给用户绑定角色(可选部门)

- 数据落表:org_user_role

  • 员工模块位权限(is_xxx):保留在员工编辑页(业务开关)

- 数据落表:shop_worker.is_xxx

建议:上线初期“双轨并行”,后续再收敛到统一策略(见第7章)。

2.3 添加公司员工时有没有部门选择?

现在没有。

上线后需要在以下页面新增:

  • themes/default/Merchant/worker/create.html
  • themes/default/Merchant/worker/edit.html

新增字段:

  • dept_id(单选,下拉)
  • 可选 role_id(默认“员工基础角色”)

提交时流程:

  1. 先写 shop_worker
  2. 再写 org_user_roleshop_id + user_id + worker_id + dept_id + role_id

3. 全流程设计(业务)

3.1 部门增删改查

  • 新增:部门名称、编码、父部门、负责人
  • 编辑:部门信息、负责人变更、排序
  • 删除:仅允许无成员/无子部门时删(或做软删)
  • 树结构:parent_dept_id

3.2 人员归属

  • 在“员工管理 -> 编辑”中选择部门
  • 批量调整成员部门(组织页)
  • 同步维护 org_user_role.dept_id

3.3 负责人

  • 负责人字段:org_department.dept_leader_user_id
  • 负责人候选来源:当前 shop_id 下有效员工(shop_worker.status=1, closed=0

3.4 角色继承(建议方案)

继承策略采用“父到子覆盖”:

  • 默认:子部门继承父部门角色模板(只在“新成员加入时”自动带入)
  • 角色分配优先级:

1. 用户直接角色(org_user_role.role_id

2. 部门默认角色(新增 org_department_role 可选)

3. 店主默认 *


4. 审计日志(谁给了谁什么权限)

4.1 新增表建议

by_org_audit_log(建议新增)

  • id
  • shop_id
  • operator_user_id(操作人)
  • target_user_id(被操作用户)
  • target_worker_id
  • action_type(ASSIGN_ROLE/REMOVE_ROLE/CHANGE_DEPT/CREATE_DEPT/DELETE_DEPT/UPDATE_ROLE_PERMS)
  • before_json
  • after_json
  • ip
  • create_time

4.2 记录时机

  • 给用户分配/移除角色
  • 调整部门归属
  • 部门负责人变更
  • 角色权限点变更
  • 部门新增/删除/改名

4.3 展示位置

  • merchant/orgaudit/index(支持按人员、动作、日期筛选)

5. 代码落地清单(按模块)

5.1 控制器(新增)

  • Banyan/Lib/Action/Merchant/OrgdepartmentAction.class.php
  • Banyan/Lib/Action/Merchant/OrgroleAction.class.php
  • Banyan/Lib/Action/Merchant/OrguserroleAction.class.php
  • Banyan/Lib/Action/Merchant/OrgauditAction.class.php

5.2 模板(新增)

  • themes/default/Merchant/orgdepartment/index.html
  • themes/default/Merchant/orgdepartment/create.html
  • themes/default/Merchant/orgdepartment/edit.html
  • themes/default/Merchant/orgrole/index.html
  • themes/default/Merchant/orguserrole/index.html
  • themes/default/Merchant/orgaudit/index.html

5.3 员工页改造(现有页)

  • themes/default/Merchant/worker/create.html:加部门选择
  • themes/default/Merchant/worker/edit.html:加部门选择
  • Banyan/Lib/Action/Merchant/WorkerAction.class.php

- create/edit 后维护 org_user_role

- 删除员工时处理角色关系(软删/解绑)

5.4 菜单入口(现有页)

  • themes/default/Merchant/index/index.html

- 在“公司管理”分组下新增“组织与权限”入口


6. 数据一致性规则(必须)

  • 同一 shop_id 下,org_user_role 允许多角色,但需有 is_primary 主角色
  • 员工离职/禁用后:

- shop_worker.closed=1status!=1

- 同步停用其 org_user_role

  • 部门删除前必须检查:

- 无有效成员

- 无子部门


7. 与现有 is_xxx 权限位的关系

上线建议(避免一次性重构风险):

  • 第一阶段:

- 保留 shop_worker.is_xxx(业务模块开关)

- 新增 RBAC 动作权限(接口/按钮)

  • 第二阶段:

- 在关键模块逐步由 is_xxx 迁移到 permission_code

- 最终 is_xxx 仅作为兼容字段或废弃


8. 上线顺序建议

  1. 先上部门/角色/分配 + 审计日志(不改老权限)
  2. 再改员工新增/编辑:加入部门选择并写 org_user_role
  3. 最后改项目、招采、企业信息采集等关键模块,接入 RBAC 强校验

9. 验收清单(可直接测试)

  • [ ] 可新增/编辑/删除部门(含层级)
  • [ ] 可设置部门负责人
  • [ ] 员工新增时可选部门,编辑可改部门
  • [ ] 可给员工分配角色并立即生效
  • [ ] 角色权限修改后,菜单与动作权限变化正确
  • [ ] 每次权限/部门变更均有审计日志,能追溯“谁改了谁”
copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1