推荐PHP 8.0+ + MySQL 5.7+ + Bootstrap 5 + 原生JS轻量组合,以PDO操作数据库、简单路由分发,核心三表(ticket/ticket_log/user)支撑闭环流转,权限按角色最小化控制,关键操作留痕可溯。

用PHP搭建企业内部售后工单系统,核心是实现“提交→分配→处理→反馈→归档”的闭环流转,不追求大而全,重在稳定、可维护、权限清晰、操作轻量。
基础架构与技术选型
推荐采用轻量级组合:PHP 8.0+ + MySQL 5.7+ + Bootstrap 5 + jQuery(或原生JS)。避免过度依赖框架,Laravel虽好但对中小团队维护成本高;用原生PDO操作数据库,配合简单路由分发(如index.php?action=submit),代码易读、调试方便。数据库设计关键三张表:ticket(工单主表)、ticket_log(处理日志)、user(员工及角色),其中ticket表需包含status(0草稿/1待分配/2处理中/3已解决/4已关闭)、priority(低/中/高)、assign_to、created_by等字段。
核心功能实现要点
工单流转不能只靠状态字段切换,要绑定行为逻辑:
- 提交时自动记录创建人、时间、IP,触发邮件/SMS通知对应部门负责人(可用PHP内置mail()或对接SMTP服务)
- 分配操作必须校验接收人权限(如只有“技术支持组”成员才能被指派为处理人),并写入log表留痕
- 处理中支持附件上传(限制类型和大小,保存路径用ticket_id分目录,如uploads/ticket_12345/),文件名重命名防覆盖
- 结单前强制填写解决说明,且支持富文本(TinyMCE精简版即可),客户可见部分可单独勾选“是否向用户反馈”
权限与角色控制策略
最小必要权限原则,预设四类角色:
立即学习“PHP免费学习笔记(深入)”;
- 普通员工:仅能提交工单、查看自己发起的工单及处理进度
- 客服专员:可查看全部待分配工单、手动分配、催办、导出Excel(用PhpSpreadsheet生成)
- 技术工程师:只能看到分配给自己的工单,可更新状态、添加处理日志、上传附件
- 管理员:管理用户、角色、工单分类(如硬件/软件/网络)、SLA时效规则(如“高优先级2小时内响应”)
权限判断统一放在include/auth.php中,每个页面顶部include一次,用$_SESSION['role']控制菜单显示和接口访问。
实用增强建议
上线后快速提升体验的几个小改进:
- 首页加一个“我的待办”卡片,显示当前登录人未读消息数和超时未响应工单数(SQL直接COUNT关联查询)
- 工单编号按年月+流水号生成(如TK20240500123),便于归档检索
- 提供简单统计页:近7天工单量、平均解决时长、各分类占比(用MySQL GROUP BY + PHP数组渲染图表)
- 所有操作日志写入数据库(非文件),含操作人、时间、动作、影响ID,供审计追溯



















