帮助首页 > 网站操作说明 · 5. 公司员工 · 逻辑流程 > 员工完整报告(权限+操作)

员工完整报告(权限+操作)

员工完整报告(权限+操作)

适用范围:ThinkPHP 系统中的 PC/WAP、个人(员工)后台、公司后台(商家双后台)、员工编辑与权限、员工在前台可执行的操作。

1. 总体架构与登录体系

系统主要分为三类入口(从路由/模板目录与代码结构推断):

  1. 员工个人后台(前台“员工验证中心”)

- 模板入口:themes/default/Worker/index/index.html

- 控制器基类:Banyan\Lib\Action\Worker\CommonAction.class.php

- 权限生效点:在员工个人后台对应的功能控制器里通过 $this->workers[...] 校验。

  1. 公司后台(商家双后台)

- 模板入口:themes/default/Distributors/*

- 控制器基类:Banyan\Lib\Action\Distributors\CommonAction.class.php

- 典型模块:员工管理(distributors/worker/*)、相册/活动/资讯(distributors/shop/*distributors/coupon/*distributors/news/*)、项目管理等。

  1. 系统后台(采集管理/企业信息采集)

- 控制器:Banyan\Lib\Action\Backstage\CompanycollectAction.class.php

- 模板:Banyan\Backstage\companycollect/*(后台“企业信息采集”)

2. 员工权限数据模型(ShopWorker 权限位)

员工权限由员工在公司后台设置后写入 shop_worker 表(控制器与模板只依赖这些字段名,不关心字段来源)。

2.1 已存在的权限位(来自现有员工权限编辑页/菜单逻辑)

员工在个人后台可见菜单与可访问功能(主要依赖以下字段):

  • 相册权限:is_photo
  • 活动权限:is_coupon
  • 资讯权限:is_news
  • 员工管理权限:is_worker
  • 点评权限:is_dianping
  • 招聘权限:is_job
  • 公司管理权限:is_shop
  • 分公司管理权限:is_branch
  • 项目管理权限:is_project

员工权限编辑页(公司后台):

  • 模板:themes/default/Distributors/worker/edit.html
  • 后端写入:Banyan\Lib\Action\Distributors\WorkerAction.class.php

- private $edit_fields = array(...);

- editCheck() 中会把权限字段 (int) 强制转换。

2.2 本次新增的权限位(你要求的两项)

新增两项员工权限开关:

  • 招采权限:is_tender
  • 企业信息权限:is_companycollect

落地点:

  • 权限编辑页新增开关:

- themes/default/Distributors/worker/edit.html(已新增 is_tenderis_companycollect 两组 radio)

- 同步到员工新增页(创建员工时可设置权限):

- themes/default/Distributors/worker/create.html

  • 后端允许写入这些字段:

- Banyan\Lib\Action\Distributors\WorkerAction.class.php

- edit_fields 增加 is_tender, is_companycollect

- editCheck() 增加 (int) 转换与校验流程

3. 员工个人后台(个人后台)菜单与权限校验

3.1 菜单展示逻辑(前端可见性)

员工个人后台“功能入口”由权限位决定是否展示:

  • 模板:themes/default/Worker/index/index.html
  • 典型逻辑示例:

- if ($worker['is_photo'] eq 1) 显示相册管理

- if ($worker['is_news'] eq 1) 显示资讯管理

本次新增两项菜单入口(已加入):

  • if ($worker['is_tender'] eq 1):跳转 distributors/tender/index
  • if ($worker['is_companycollect'] eq 1):跳转 distributors/companycollect/index

3.2 服务器端权限校验(真正拦截入口)

员工个人后台的每个功能控制器会在 _initialize()index/create/edit 前进行权限判断。

已观察到的校验例子(用于说明“校验点在哪里”):

  • Banyan\Lib\Action\Worker\NewsAction.class.php

- _initialize()if ($this->workers['is_news'] != 1) $this->error(...)

  • Banyan\Lib\Action\Worker\NearworkAction.class.php

- _initialize()if ($this->workers['is_job'] != 1) $this->error(...)

  • Banyan\Lib\Action\Worker\AppointAction.class.php

- _initialize()if ($this->workers['is_appoint'] != 1) ...

结论:对“员工个人后台的业务功能”(如资讯/招聘等),权限不仅控制菜单可见性,还会在控制器层拦截。

4. 员工编辑与公司后台操作(distributors/worker)

4.1 员工列表(公司后台)

入口:

  • distributors/worker/index.html
  • PC 模板:themes/default/Distributors/worker/index.html
  • WAP 列表模板:themes/default/Wap/banyanfw/wxpay.html

本次按你要求修改:

  • 已从这两个列表页的顶部 TAB 中移除“分公司管理”,只保留“员工管理”入口。

4.2 员工新增(公司后台)

入口:

  • distributors/worker/create
  • 模板:themes/default/Distributors/worker/create.html
  • 控制器:Banyan\Lib\Action\Distributors\WorkerAction.class.php::create()

主要流程(从代码可读逻辑):

  • POST 提交后:

- 校验数据:editCheck()

- 找到用户:D('Users')->find($user_id)

- 检查是否已属于其他公司/是否重复添加

- D('Shopworker')->add($data) 写入员工权限与基础信息

- 发送系统消息 D('Msg')->add(...),提示员工等待确认

4.3 员工编辑(公司后台)

入口:

  • distributors/worker/edit/worker_id/:id
  • 模板:themes/default/Distributors/worker/edit.html
  • 控制器:Banyan\Lib\Action\Distributors\WorkerAction.class.php::edit()

权限项展示与写入:

  • 模板中通过 radio 写入 data[is_xxx]
  • 控制器里把这些字段 (int)save($data)

本次新增两项开关:

  • data[is_tender]
  • data[is_companycollect]

4.4 员工删除(公司后台)

入口:

  • distributors/worker/delete/worker_id/:id(ajax)
  • 控制器:WorkerAction::delete()
  • 逻辑:把 shop_worker.closed 置为 1

5. 员工在个人后台可做的操作(按权限对应的功能入口归类)

下面按权限位把“员工实际能操作哪些模块”映射出来(以“个人后台菜单跳转的目标”为主,并补充控制器校验点存在的地方)。

5.1 相册权限 is_photo

  • 菜单入口(员工端):distributors/shop/photo
  • 公司后台功能(相册管理)代码:

- Banyan\Lib\Action\Distributors\ShopAction.class.php

- photo() / photo_create() / photo_delete()

5.2 活动权限 is_coupon

  • 菜单入口(员工端):distributors/coupon/index(模板中以 coupon 模块为准)
  • 公司后台功能(活动/优惠券)代码:

- Banyan\Lib\Action\Distributors\CouponAction.class.php

- sale()/create()/edit()/delete()

5.3 资讯权限 is_news

  • 员工端:模板菜单显示资讯管理
  • 个人后台控制器拦截示例:

- Banyan\Lib\Action\Worker\NewsAction.class.php 检查 is_news

5.4 点评权限 is_dianping

  • 员工端菜单:dianping/index
  • 个人后台控制器拦截点需要继续对照 Banyan\Lib\Action\Worker\DianpingAction.class.php(当前未逐行展开)

5.5 招聘权限 is_job

  • 菜单入口:nearwork/index(员工端招聘管理)
  • 个人后台控制器拦截示例:

- Banyan\Lib\Action\Worker\NearworkAction.class.php 检查 is_job

5.6 公司管理权限 is_shop / 分公司管理权限 is_branch

  • 菜单入口分别跳转:

- 公司管理:distributors/shop/about

- 分公司管理:distributors/branch/index

说明:

  • 分公司入口还会受到你在“员工列表页” TAB 的调整影响(本次仅移除了列表 TAB)

5.7 项目管理权限 is_project

  • 菜单入口:worker/project/index

5.8 招采权限 is_tender(本次新增)

  • 菜单入口:distributors/tender/index(商家双后台招采管理)

待你确认/补齐:

  • 你现有是否已有 shop_worker.is_tender 字段(如果还没加,需要补 DB 字段)

5.9 企业信息权限 is_companycollect(本次新增)

  • 菜单入口:distributors/companycollect/index
  • 本次已新增商家双后台页面与入口:

- Banyan\Lib\Action\Distributors\CompanycollectAction.class.php

- 模板:

- themes/default/Distributors/companycollect/index.html(列表 + 查询)

- themes/default/Distributors/companycollect/detail.html(详情查看)

- themes/default/Distributors/companycollect/create.html(新增企业基础信息)

6. 你提出的 3 点需求:状态回填

  1. http://localhost/distributors/worker/index.html

- 只保留员工管理

- 分公司管理另放一个地方及入口

- 已完成:

- themes/default/Distributors/worker/index.html 移除分公司 TAB

- themes/default/Wap/banyanfw/wxpay.html 移除分公司 TAB

  1. http://localhost/distributors/worker/edit/worker_id/10.html 员工权限管理

- 已包含:

- 相册、活动、资讯、员工管理、点评、招聘、公司管理、分公司管理、项目管理

- 本次新增:

- 招采权限:is_tender

- 企业信息权限:is_companycollect

- 已完成:

- themes/default/Distributors/worker/edit.html + create.html 增加两组 radio

- Banyan\Lib\Action\Distributors\WorkerAction.class.php 增加可写字段

  1. backstage/companycollect/index.html 在商家双后台可查看/添加/查询

- 已完成(等价实现):

- 新增 distributors/companycollect/index(商家双后台版本)

- 提供列表查询、详情查看、新增入口

- 并在商家双后台首页菜单中增加入口

备注:

  • 由于当前项目里“采集管理/企业信息采集”原本只在 Backstage 目录下实现(Banyan\Lib\Action\Backstage\CompanycollectAction.class.php),为了让商家双后台可直接使用,我采用了“新增 Distributors 版本的 companycollect”方式复用同一张数据表 by_company_base

7. 关键待确认项(建议你在数据库侧确认)

  1. shop_worker 表是否已经存在新字段

本次新增的权限开关会写入以下字段:

  • is_tender
  • is_companycollect

建议在数据库侧确认 shop_worker 表结构;如果不存在,需要加字段。

  1. 字段默认值与兼容性
  • 建议默认都为 0,避免老数据影响菜单展示。

8. 建议的下一步(如果你要继续“全功能”到位)

如果你希望我把“员工报告”扩展到真正 100% 覆盖(包括:每个权限对应控制器的 index/create/edit/delete 具体参数、UI 页面字段、以及 WAP 对应页面是否一致),我需要你确认:

  1. distributors/companycollect 页面你期望的“添加”方式是:

- 仅手工新增(当前实现)

- 还是允许像后台那样上传 XLSX/批次导入(需要复用/改造导入流程)

  1. is_tender/is_companycollect 是否已经在 shop_worker 中建好字段;如果没有,我就按你的表结构补一份 ALTER TABLE SQL,并把异常路径(保存失败提示)也补齐。
copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1