73 lines
2.1 KiB
PHP
73 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace app\ticket\logic;
|
|
|
|
use app\common\model\UserTokenLog;
|
|
use app\common\model\Systems;
|
|
use app\common\model\User;
|
|
use app\common\model\UserSn;
|
|
use app\common\utils\Jwt;
|
|
use app\ticket\model\Ticket;
|
|
use support\Redis;
|
|
use support\exception\BusinessException;
|
|
use support\Log;
|
|
|
|
class TicketLogic
|
|
{
|
|
public function list($params)
|
|
{
|
|
$where = [];
|
|
if(!empty($params['categorie_id'])){
|
|
$where[] = ['categorie_id', '=', $params['categorie_id']];
|
|
}
|
|
if(!empty($params['status'])){
|
|
$where[] = ['status', '=', $params['status']];
|
|
}
|
|
$size = $params['size'];
|
|
$current = $params['current'];
|
|
return Ticket::with('attachments')->with('categorie')->with('categorie.translation')->where($where)->orderBy('id','desc')->paginate($size, ['*'], 'page', $current);
|
|
}
|
|
public function add(array $data)
|
|
{
|
|
$data['status'] = 1;
|
|
$data['code'] = self::generateSimpleTicketNo();
|
|
try {
|
|
return Ticket::create($data);
|
|
} catch (\Throwable $e) {
|
|
Log::error('工单创建失败', [
|
|
'data' => $data,
|
|
'error' => $e->getMessage()
|
|
]);
|
|
throw new BusinessException('工单创建失败,请稍后重试', 500);
|
|
}
|
|
}
|
|
public function edit(array $data)
|
|
{
|
|
try {
|
|
unset($data['code']);
|
|
$ticket = Ticket::updateOrCreate(['id' => $data['id']],$data);
|
|
return $ticket;
|
|
} catch (\Throwable $e) {
|
|
Log::error('工单编辑失败', [
|
|
'data' => $data,
|
|
'error' => $e->getMessage()
|
|
]);
|
|
throw new BusinessException('工单编辑失败,请稍后重试', 500);
|
|
}
|
|
}
|
|
|
|
public function find(int $id)
|
|
{
|
|
$ticket = Ticket::find($id);
|
|
return $ticket;
|
|
}
|
|
|
|
public static function generateSimpleTicketNo(): string
|
|
{
|
|
$date = date('Ymd'); // 日期
|
|
$prefix = 'GD'; // 前缀
|
|
$random = strtoupper(substr(md5(uniqid()), 0, 5)); // 5位随机字母数字
|
|
|
|
return $prefix . $date . '-' . $random; // 如 GD20240702-AB3X9Z
|
|
}
|
|
} |