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 } }