coderflex/laravel-ticket

Laravel Ticket系统,帮助您轻松管理您的票据

v2.0.1 2024-09-09 19:55 UTC

This package is auto-updated.

Last update: 2024-09-09 19:55:59 UTC


README

Laravisit Logo

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

简介

Laravel Ticket 包,是一个用于处理票据系统的后端API,使用起来非常简单。

安装

您可以通过composer安装此包

composer require coderflex/laravel-ticket

配置

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="ticket-config"

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="ticket-migrations"

在运行迁移之前,您可能需要发布配置文件,并确保当前表不会与现有应用程序冲突,一旦您对迁移表满意,您可以运行

php artisan migrate

准备您的模型

HasTickets 特性添加到您的 User 模型中,同时添加 CanUseTickets 接口

...
use Coderflex\LaravelTicket\Concerns\HasTickets;
use Coderflex\LaravelTicket\Contracts\CanUseTickets;
...
class User extends Model implements CanUseTickets
{
    ...
    use HasTickets;
    ...
}

使用方法

此包的基本用法是创建一个 ticket,然后将 labelscategories 关联到它。

您可以将尽可能多的 categories/labels 关联到一个票据中。

以下是一个示例

use Coderflex\LaravelTicket\Models\Ticket;
use Coderflex\LaravelTicket\Models\Category;
use Coderflex\LaravelTicket\Models\Label;

...
public function store(Request $request)
{
    /** @var User */
    $user = Auth::user();

    $ticket = $user->tickets()
                    ->create($request->validated());

    $category = Category::first();
    $label = Label::first();

    $ticket->attachCategories($category);
    $ticket->attachLabels($label);
    
    // or you can create the categories & the tickets directly by:
    // $ticket->categories()->create(...);
    // $ticket->labels()->create(...);

    return redirect(route('tickets.show', $ticket->uuid))
            ->with('success', __('Your Ticket Was created successfully.'));
}

public function createLabel()
{
    // If you create a label seperated from the ticket and wants to
    // associate it to a ticket, you may do the following.
    $label = Label::create(...);

    $label->tickets()->attach($ticket);

    // or maybe 
    $label->tickets()->detach($ticket);
}

public function createCategory()
{
    // If you create a category/categories seperated from the ticket and wants to
    // associate it to a ticket, you may do the following.
    $category = Category::create(...);

    $category->tickets()->attach($ticket);

    // or maybe 
    $category->tickets()->detach($ticket);
}
...

票据表结构

消息表结构

标签表结构

类别表结构

API方法

票据API方法

ticket 模型包含一些方便的方法,可以简化构建过程,以下是可用的 API 列表

可链式列显示方法的当前状态,表示该方法是否可链式调用,例如

    $ticket->archive()
            ->close()
            ->markAsResolved();

票据关联API方法

ticket 模型还有一些用于与其他相关模型交互的方法

attachCategoriessyncCategories 方法是 attachsync Laravel 方法的替代方案,如果您想了解更多信息,请查看此 链接

commentAsUser 接受一个用户作为第一个参数,如果为null,则默认使用 认证 用户。

票据作用域

ticket 模型还有一系列作用域,以开始过滤。

类别与标签作用域

处理文件上传

此包目前没有文件上传功能,您可以使用 Spatielaravel-medialibrary 来处理文件功能。

步骤非常简单,您需要做的以下。

通过在应用程序中创建新的模型文件来扩展 Ticket 模型

php artisan make:model Ticket

然后扩展基础 Ticket Model,然后使用 spatie 包的 InteractWithMedia 特性和 HasMedia 接口

namespace App\Models\Ticket;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;

class Ticket extends \Coderflex\LaravelTicket\Models\Ticket implements HasMedia
{
    use InteractsWithMedia;
}

其余的实现,请参阅 spatie 包的 文档 以获取更多信息。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

请查看我们关于如何报告安全漏洞的安全策略:我们的安全策略

鸣谢

许可证

MIT许可(MIT)。请参阅许可文件获取更多信息。