evangeo / tickets
工单支持系统
dev-master
2023-12-05 13:30 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/contracts: ^8.0|^9.0|^10
- illuminate/support: ^8.0|^9.0|^10
- laravel/tinker: ^2.7
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-05 00:54:34 UTC
README
简介
Laravel 工单支持后端包是一个专门用于管理客户支持请求并简化支持系统后端流程的解决方案。此包旨在通过提供高效处理和解决工单所需的工具来赋予您的支持团队权力。
安装
您可以通过 composer 安装此包
composer require evangeo/tickets
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="tickets-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="tickets-config"
表格
工单表结构
工单回复表结构
工单附件表结构
工单分类/内部组/标签表结构
工单标签关联表结构
用法
- 作为用户创建工单
$ticket = ticket()->createAsUser($userId, $ticketData)
- 作为实体创建工单
$ticket = ticket()->createAsEntity($entityId, $ticketData)
- 与工单状态交互
$ticket->reOpen() ->open() ->archived()
- 与工单分类交互
$ticket->setCategory($id) ->removeCategory()
- 与工单内部组交互
$ticket->setInternalGroup($id) ->removeInternalGroup()
- 与工单标签交互
$ticket->attachTags([$tagId1,$tagId2,$tagId3]) ->detachTags([$tagId1]) ->syncTags([$tagId4, $tagId5, $tagId6])
- 创建工单回复
$reponse = $ticket->replyAsUser($userId, $responseData) $reponse = $ticket->replyAsEntity($entityId, $responseData)
- 与回复消息类型交互
$response->markAsInternalMessage() ->markAsExternalMessage()
- 在回复中上传文档
$response->attachDocuments($attachments, function (AttachmentRepository $repository) use ($uploads){ $repository->upload($uploads, '/path/to/folder'); })
- 链式函数
$ticket = ticket() ->createAsUser($userId, $ticketData) ->setCategory($categoryId ->setInternalGroup($internalGroupId ->attachTags([$tagId1,$tagId2,$tagId3]) ->detachTags([$tagId1]) ->syncTags([$tagId4, $tagId5, $tagId6]) ->reOpen() ->open() ->archived() ->replyAsUser($userId, $responseData) ->markAsInternalMessage() ->attachDocuments($attachments, function (AttachmentRepository $repository) use ($uploads){ $repository->upload($uploads, '/path/to/folder'); }) ->getTicket();
- 真实场景
$ticket = ticket() ->createAsUser($userId, $ticketData) ->replyAsUser($userId, $responseData) ->markAsInternalMessage() ->attachDocuments($attachments, function (AttachmentRepository $repository) use ($uploads){ $repository->upload($uploads, '/path/to/folder'); }) ->getTicket();
测试
composer test