文档目录
工作相关API

简介

本文件面向企业用户与管理员,系统化梳理“工作中心”模块的API能力,覆盖工作台首页、工作记录列表、权限校验等对外接口;同时提供后台工作人员(员工)管理的CRUD流程说明。文档聚焦以下目标:

  • 工作分配、任务审批、完成确认等业务流在系统中的入口与数据流转
  • 进度跟踪与状态更新的数据来源与展示方式
  • 工作数据统计与报表能力的接入点
  • 权限控制模型(查看、编辑、审批)
  • 通知、提醒、协作等扩展点的说明与建议

项目结构

工作相关能力由“前台/小程序端API”、“后台管理端”、“核心服务”三层组成:

  • API层:暴露工作中心对外接口(工作台首页、工作记录、权限校验)
  • 后台管理端:提供工作人员(员工)账号的增删改查与权限配置
  • 核心服务:封装权限判断、导航树构建、通用逻辑复用
graph TB
subgraph "API端"
A["api/controller/work/WorkController"]
R1["api/route/work.php"]
end
subgraph "后台管理端"
B["admin/controller/work/WorkController"]
R2["admin/route/work.php"]
Q["admin/request/work/WorkFormRequest"]
end
subgraph "核心服务"
S1["core/service/work/WorkService"]
S2["admin/service/work/WorkService"]
S3["front/service/work/WorkService"]
end
R1 --> A
R2 --> B
A --> S3
A --> S1
B --> S2
S2 --> S1
S3 --> S1

图示来源

  • api/route/work.php:15-33
  • admin/route/work.php:15-28
  • api/controller/work/WorkController.php:15-49
  • admin/controller/work/WorkController.php:15-43
  • core/service/work/WorkService.php:15-49
  • admin/service/work/WorkService.php:15-46
  • front/service/work/WorkService.php:15-43

章节来源

  • api/route/work.php:15-33
  • admin/route/work.php:15-28

核心组件

  • API控制器 WorkController:负责鉴权、参数校验、调用服务并返回统一响应
  • 后台控制器 WorkController:实现工作人员(员工)的CRUD与表单处理
  • 核心服务 WorkService:权限校验、工作中心导航树构建、模块名映射
  • 前台服务 WorkService:工作台行数据组装、工作日志列表、总数统计
  • 后台服务 WorkService:列表过滤、分页、新增/更新/删除、附件处理、审计日志
  • 表单请求 WorkFormRequest:字段白名单与规则校验

章节来源

  • api/controller/work/WorkController.php:30-122
  • admin/controller/work/WorkController.php:29-187
  • core/service/work/WorkService.php:25-140
  • front/service/work/WorkService.php:29-131
  • admin/service/work/WorkService.php:32-322
  • admin/request/work/WorkFormRequest.php:23-72

架构总览

工作中心API采用“路由→控制器→服务→数据源”的分层架构。API端通过声明式路由绑定到控制器方法,控制器进行鉴权后委托给服务完成业务逻辑;后台管理端同样遵循该分层,但侧重管理员视角的CRUD与审计。

sequenceDiagram
participant C as "客户端"
participant R as "路由"
participant AC as "API控制器"
participant FS as "前台服务"
participant CS as "核心服务"
C->>R : GET /api/?route=work
R->>AC : index()
AC->>AC : 鉴权与功能开关检查
AC->>FS : getDashboardWorkRow(userId)
FS->>CS : linkWorkCenter(current_module, userId)
CS-->>FS : work_tree
FS-->>AC : 工作台行数据
AC-->>C : 成功响应{title, work, link_work_center}

图示来源

  • api/route/work.php:29-32
  • api/controller/work/WorkController.php:51-73
  • front/service/work/WorkService.php:45-67
  • core/service/work/WorkService.php:101-139

详细组件分析

API端:工作台首页

  • 路径与方法:GET /api/?route=work → WorkController::index
  • 鉴权:要求开启用户功能且已登录
  • 业务:获取当前用户的工作台行,若不存在则拒绝访问
  • 返回:标题、工作台信息、工作中心链接集合
flowchart TD
Start(["进入 index"]) --> Auth{"是否已登录且功能已启用?"}
Auth -- 否 --> Err401["返回未授权"]
Auth -- 是 --> Fetch["获取工作台行"]
Fetch --> HasWork{"是否存在工作台行?"}
HasWork -- 否 --> Err403["返回无权限"]
HasWork -- 是 --> Build["组装标题/工作信息/链接"]
Build --> Ok["返回成功"]

图示来源

  • api/controller/work/WorkController.php:51-73

章节来源

  • api/controller/work/WorkController.php:51-73

API端:工作记录列表

  • 路径与方法:GET /api/?route=work/product → WorkController::product
  • 鉴权:同上
  • 业务:按页获取当前用户的工作记录(财务明细),并返回分页与总数
  • 返回:标题、工作记录列表、分页信息、总数
sequenceDiagram
participant C as "客户端"
participant AC as "API控制器"
participant FS as "前台服务"
C->>AC : GET /api/?route=work/product?page=1
AC->>AC : 鉴权
AC->>FS : buildWorkLogListData(userId, page, url)
FS-->>AC : {work_log_list, pager}
AC->>FS : getWorkTotalForUser(userId)
FS-->>AC : total
AC-->>C : 成功响应{title, work_log_list, pager, total}

图示来源

  • api/controller/work/WorkController.php:75-99
  • front/service/work/WorkService.php:69-130

章节来源

  • api/controller/work/WorkController.php:75-99
  • front/service/work/WorkService.php:69-130

API端:模块权限校验

  • 路径与方法:POST /api/?route=work/permission → WorkController::permission
  • 入参:module(字符串)
  • 业务:校验当前用户对指定模块的工作端访问权限
  • 返回:成功或无权限错误
flowchart TD
PStart(["进入 permission"]) --> CheckAuth{"已登录且功能启用?"}
CheckAuth -- 否 --> E401["返回未授权"]
CheckAuth -- 是 --> ReadMod["读取 module"]
ReadMod --> CallCheck["调用核心服务 checkPermission(module, userId)"]
CallCheck --> Allow{"是否允许?"}
Allow -- 否 --> E403["返回无权限"]
Allow -- 是 --> OK["返回成功"]

图示来源

  • api/controller/work/WorkController.php:102-121
  • core/service/work/WorkService.php:75-99

章节来源

  • api/controller/work/WorkController.php:102-121
  • core/service/work/WorkService.php:75-99

后台管理端:工作人员(员工)管理

  • 路由:基于资源路由,支持 index/create/store/edit/update/destroy
  • 列表:支持按“收件人/联系人”、会员关键字、时间范围筛选与分页
  • 新增/编辑:表单字段校验,写入工作账号、权限模块、联系方式等,支持头像上传
  • 删除:二次确认后执行删除,清理附件并记录审计日志
classDiagram
class AdminWorkController {
+index(request)
+create()
+store(formRequest, request)
+edit(request)
+update(formRequest, request)
+destroy(request)
}
class AdminWorkService {
+buildWorkDefaultData()
+getActionListForForm(csv)
+buildWorkListData(consignee, username, start, end, page)
+insert(data)
+buildWorkEditData(id)
+update(data)
+delete(id, post)
}
class CoreWorkService {
+actionList(cur)
+checkPermission(module, user_id)
+linkWorkCenter(current_module, user_id)
}
AdminWorkController --> AdminWorkService : "调用"
AdminWorkService --> CoreWorkService : "复用权限/导航"

图示来源

  • admin/controller/work/WorkController.php:55-187
  • admin/service/work/WorkService.php:48-322
  • core/service/work/WorkService.php:54-139

章节来源

  • admin/controller/work/WorkController.php:55-187
  • admin/service/work/WorkService.php:48-322

权限控制模型

  • 工作台行存在性:API端要求用户必须拥有工作台行,否则拒绝访问
  • 模块级权限:通过 action_list 字段控制可访问的模块集合;核心服务根据当前用户ID与模块标识进行校验
  • 后台配置:管理员可为工作人员勾选可用模块,形成 action_list 逗号分隔字符串
flowchart TD
MStart["模块访问请求"] --> LoadWork["加载用户工作台行"]
LoadWork --> HasAL{"是否包含目标模块?"}
HasAL -- 否 --> Deny["拒绝访问"]
HasAL -- 是 --> Allow["允许访问"]

图示来源

  • core/service/work/WorkService.php:75-99
  • core/service/work/WorkService.php:101-139
  • admin/service/work/WorkService.php:176-180
  • admin/service/work/WorkService.php:261-265

章节来源

  • core/service/work/WorkService.php:75-99
  • admin/service/work/WorkService.php:176-180
  • admin/service/work/WorkService.php:261-265

数据模型关系(概念图)

  • 用户与工作台行一对一关联
  • 工作台行包含 action_list 用于模块权限控制
  • 工作记录(财务明细)通过 work_id 关联到工作台行
erDiagram
USER {
int id PK
string username
}
WORK {
int id PK
int user_id FK
string contact
string phone
string company
string address
string avatar
string action_list
int status
datetime created_at
}
MONEY {
int id PK
int user_id FK
int work_id FK
string action
string from
decimal money
decimal total
datetime created_at
}
USER ||--o| WORK : "拥有"
WORK ||--o{ MONEY : "产生记录"

[此图为概念示意,不直接对应具体代码文件]

依赖分析

  • API控制器依赖前台服务与核心服务,完成鉴权后的业务编排
  • 后台控制器依赖后台服务,实现CRUD与审计
  • 核心服务被前台与后台共同复用,保证权限与导航一致性
  • 表单请求对象集中管理字段校验规则,降低控制器复杂度
graph LR
API_C["API控制器"] --> FS["前台服务"]
API_C --> CS["核心服务"]
ADMIN_C["后台控制器"] --> AS["后台服务"]
AS --> CS
FORM["表单请求"] --> ADMIN_C

图示来源

  • api/controller/work/WorkController.php:15-49
  • admin/controller/work/WorkController.php:15-43
  • admin/request/work/WorkFormRequest.php:23-72

章节来源

  • api/controller/work/WorkController.php:15-49
  • admin/controller/work/WorkController.php:15-43
  • admin/request/work/WorkFormRequest.php:23-72

性能考虑

  • 列表分页:后台与前台均使用分页查询,避免一次性加载大量数据
  • 权限判断:基于单表条件查询与内存数组匹配,开销较低
  • 附件处理:仅在新增/更新时进行存储与回写,减少IO
  • 建议:对高频查询可增加缓存层(如模块树、权限结果),并对大列表增加索引优化

故障排查指南

  • 未授权(401):检查是否已登录以及用户功能开关是否启用
  • 无权限(403):确认工作台行是否存在且包含目标模块
  • 非法参数:后台CRUD会校验必填字段与ID合法性,出现异常需检查表单提交
  • 删除失败:确认是否已二次确认,并检查附件删除与审计日志写入

章节来源

  • api/controller/work/WorkController.php:51-121
  • admin/controller/work/WorkController.php:117-187
  • admin/service/work/WorkService.php:160-205
  • admin/service/work/WorkService.php:234-283
  • admin/service/work/WorkService.php:293-321

结论

工作中心模块以清晰的分层架构实现了工作台展示、权限控制与后台管理。API端提供稳定的工作台与记录查询能力,后台端提供完整的工作人员管理与权限配置。结合现有能力,可在上层扩展任务审批、进度跟踪、通知协作等业务流程。

附录:接口清单与示例

API端接口

  • 工作台首页

    • 方法:GET
    • 路径:/api/?route=work
    • 鉴权:需要登录且功能启用
    • 返回:标题、工作台信息、工作中心链接集合
    • 参考:api/controller/work/WorkController.php:51-73
  • 工作记录列表

    • 方法:GET
    • 路径:/api/?route=work/product
    • 参数:page(默认1)
    • 鉴权:需要登录且功能启用
    • 返回:标题、工作记录列表、分页信息、总数
    • 参考:api/controller/work/WorkController.php:75-99
  • 模块权限校验

    • 方法:POST
    • 路径:/api/?route=work/permission
    • 参数:module(字符串)
    • 鉴权:需要登录且功能启用
    • 返回:成功或无权限错误
    • 参考:api/controller/work/WorkController.php:102-121

后台管理端接口(资源路由)

  • 列表:?route=work
  • 新增表单:?route=work/create
  • 新增提交:?route=work/store
  • 编辑表单:?route=work/edit?id={id}
  • 编辑提交:?route=work/update
  • 删除:?route=work/destroy&id={id}
  • 参考:
    • admin/route/work.php:15-28
    • admin/controller/work/WorkController.php:55-187
    • admin/request/work/WorkFormRequest.php:23-72

业务场景与数据流

  • 工作分配:管理员在后台创建工作人员并勾选可用模块(action_list)
    • 参考:admin/service/work/WorkService.php:176-180
  • 任务审批:可在上层基于模块权限(action_list)扩展审批节点
    • 参考:core/service/work/WorkService.php:75-99
  • 完成确认:在工作记录(财务明细)中体现完成动作与金额变动
    • 参考:front/service/work/WorkService.php:69-117
  • 进度跟踪:通过工作记录列表展示历史操作与时间
    • 参考:front/service/work/WorkService.php:69-117
  • 数据统计:可基于工作记录聚合统计(如总额、次数)
    • 参考:front/service/work/WorkService.php:119-130

权限控制要点

  • 查看权限:API端先校验工作台行存在性
    • 参考:api/controller/work/WorkController.php:51-73
  • 编辑权限:后台管理员可修改工作人员信息与模块权限
    • 参考:admin/service/work/WorkService.php:234-283
  • 审批权限:通过模块权限控制可访问的模块,再在上层实现审批流程
    • 参考:core/service/work/WorkService.php:75-99

通知、提醒、协作

  • 通知与提醒:可在工作记录生成时触发消息队列或站内信(建议在业务层扩展)
  • 协作:基于模块权限与工作台导航,将多角色纳入同一工作流(建议在业务层扩展)
添加日期:2026-10-05