作者 ZhengBing He

ok

... ... @@ -8,6 +8,8 @@ use App\Http\Requests\Aside\WorkOrder\AsideTicketStoreRequest;
use App\Http\Requests\Aside\WorkOrder\AsideTicketListRequest;
use App\Http\Requests\Aside\WorkOrder\AsideTicketUpdateRequest;
use App\Http\Requests\Aside\WorkOrder\TicketProjectListRequest;
use App\Models\ProjectAssociation\ProjectAssociation;
use App\Models\Workchat\MessagePush;
use App\Models\WorkOrder\TicketLog;
use App\Models\WorkOrder\TicketProject;
use App\Models\WorkOrder\Tickets;
... ... @@ -216,4 +218,39 @@ class AsideTicketController extends BaseController
{
//
}
/**
* 手动触发,推送工单到企微群
*/
public function pushNotify($id)
{
$ticket = Tickets::find($id);
if (!$ticket) {
$this->response('工单不存在', Code::USER_MODEL_NOTFOUND_ERROE);
}
$project = $ticket->project;
if (empty($project->association)) {
$this->response('该工单没有绑定的企微群', Code::USER_MODEL_NOTFOUND_ERROE);
}
$message_push = new MessagePush();
$message_push->project_id = $project->table_id;
$message_push->friend_id = $project->association->friend_id;
$message_push->content_type = 'Link';
$message_push->content = json_encode([
'title' => '工单查看 - ' . $project->company_name,
'desc' => $ticket->title,
'size' => 0,
'thumbSize' => 0,
'thumbUrl' => 'https://oa.quanqiusou.cn/logo.ico',
'url' => 'https://oa.quanqiusou.cn/tickets?project_id='.$project->uuid
], JSON_UNESCAPED_UNICODE);
$message_push->send_time = now();
$message_push->type = MessagePush::TYPE_TICKET;
$message_push->save();
$this->response('success', Code::SUCCESS);
}
}
... ...
... ... @@ -5,6 +5,7 @@ namespace App\Models\WorkOrder;
use App\Models\Base;
use App\Models\Manage\Manage;
use App\Models\Project\Project;
use App\Models\ProjectAssociation\ProjectAssociation;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class TicketProject extends Base
... ... @@ -41,4 +42,15 @@ class TicketProject extends Base
return $this->hasOne(Manage::class, 'id', 'engineer_id')
->select(['id', 'name']);
}
/**
* 绑定的企微群
*/
public function association()
{
return $this->hasOne(ProjectAssociation::class, 'project_id', 'table_id')
->where('status', 1)
->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT)
->select(['id', 'project_id', 'friend_id', 'binding_app']);
}
}
... ...
... ... @@ -259,6 +259,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::post('/log/{id}', [Aside\WorkOrder\AsideTicketLogController::class, 'update'])->name('admin.tickets.log.update')->summary('A端工单操作日志更新,完成工单');
Route::get('/chat/{ticket_id}', [Aside\WorkOrder\TicketChatController::class, 'index'])->name('admin.tickets.chat.index')->summary('A端工单聊天记录');
Route::post('/chat/{ticket_id}', [Aside\WorkOrder\TicketChatController::class, 'store'])->name('admin.tickets.chat.store')->summary('A端工单聊天记录创建');
Route::get('/pushNotify/{ticket_id}', [Aside\WorkOrder\TicketChatController::class, 'pushNotify'])->name('admin.tickets.pushNotify')->summary('A端工单推送企微群');
});
//服务器配置
... ...