作者 lyh

Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into lyh-server

... ... @@ -140,8 +140,7 @@ class FetchTicketProjects extends Command
$assm_id = collect([
$item->deploy_optimize->manager_mid ?? 0,
$item->deploy_optimize->tech_leader ?? 0,
Manage::where('name', '张鸿飞')->value('id') ?? 0,
0
8, //张鸿飞
])->first(fn($v) => $v !== null && $v !== 0, 0);
$seom_id = !empty($item->deploy_optimize->optimist_mid) ? $item->deploy_optimize->optimist_mid : $assm_id;
/**
... ...
... ... @@ -29,6 +29,7 @@ class TicketController extends BaseController
'logs.engineer:id,name',
])
->where('project_id', $project->id)
->where('submit_side', 2)
->orderBy('id', 'desc')
->paginate($size, ['*'], 'page', $page);
return response()->json(['data' => $tickets]);
... ... @@ -45,9 +46,9 @@ class TicketController extends BaseController
{
$request->validated();
$project = TicketProject::where('uuid', $project_id)->first();
if (!$project) return $this->error('未找到项目', 404);
if ($project->is_del) return $this->error('项目状态异常', 400);
if (empty($project->engineer_id)) return $this->error('项目未分配工单负责人', 400);
if (!$project) return response('未找到项目', 404);
if ($project->is_del) return response('项目状态异常', 400);
if (empty($project->first_engineer)) return response('项目未分配工单负责人', 400);
$result = DB::transaction(function () use ($request, $project) {
$ticket = new Tickets();
... ... @@ -86,11 +87,11 @@ class TicketController extends BaseController
])
->find($id);
if (!$ticket) return $this->error('工单未找到', 404);
if (!$ticket) return response('工单未找到', 404);
if ($ticket->project->uuid !== $project_id) return $this->error('无权限查看该工单', 403);
if ($ticket->project->uuid !== $project_id) return response('无权限查看该工单', 403);
if ($ticket->project->is_del) return $this->error('项目状态异常', 400);
if ($ticket->project->is_del) return response('项目状态异常', 400);
return response()->json(['data' => $ticket]);
}
... ... @@ -127,7 +128,7 @@ class TicketController extends BaseController
'first_engineer:id,name',
])
->where('uuid', $project_id)->first();
if (!$project) return $this->error('未找到项目', 404);
if (!$project) return $this->response('未找到项目', 404);
return response()->json(['data' => $project]);
}
}
... ...
... ... @@ -25,9 +25,9 @@ class AsideTicketController extends BaseController
* 1. 超管看所有工单
* 2. 其他查看和自己有关的工单
*/
$lists = TicketLog::with([
'ticket.project.projectV6:id,company,title',
'ticket.logs.engineer:id,name',
$lists = Tickets::with([
'logs.engineer:id,name',
'project',
])
->when($this, function ($query) {
$role = $this->manage['role'];
... ... @@ -36,29 +36,32 @@ class AsideTicketController extends BaseController
return $query;
}
// 其他角色查自己参与的工单
return $query->where('engineer_id', $this->manage['id']);
return $query->where(function ($q) {
$q->where('submit_user_id', $this->manage['id'])
->orWhereHas('logs', function ($q1) {
$q1->where('engineer_id', $this->manage['id']);
});
});
})
->when($request->input('project_id') !== null, function ($query) use ($request) {
// project_id 查 gl_ticket_projects.uuid
return $query->whereHas('ticket.project', function ($q) use ($request) {
$q->where('uuid', $request->input('project_id'));
$projectId = $request->input('project_id');
return $query->whereHas('project', function ($q) use ($projectId) {
$q->where('uuid', $projectId);
});
})
->when($request->input('status') !== null, function ($query) use ($request) {
// status 查 gl_tickets.status
return $query->whereHas('ticket', function ($q) use ($request) {
$q->where('status', $request->input('status'));
});
$status = $request->input('status');
return $query->where('status', $status);
})
->when($request->input('search'), function ($query) use ($request) {
// search 查 gl_tickets.title 或 gl_ticket_projects.title 或 gl_ticket_projects.company_name
$search = $request->input('search');
$query->where(function ($q) use ($search) {
$q->whereHas('ticket', function ($q1) use ($search) {
$q1->where('title', 'like', '%' . $search . '%');
})
->orWhereHas('ticket.project', function ($q2) use ($search) {
$q2->where('title', 'like', '%' . $search . '%')
return $query->where(function ($q) use ($search) {
$q->where('title', 'like', '%' . $search . '%')
->orWhereHas('project', function ($q1) use ($search) {
$q1->where('title', 'like', '%' . $search . '%')
->orWhere('company_name', 'like', '%' . $search . '%');
});
});
... ... @@ -70,17 +73,11 @@ class AsideTicketController extends BaseController
public function getProjects($search)
{
$projects = TicketProject::with([
'projectV6:id,company,title',
])
->where('is_del', 0)
$projects = TicketProject::where('is_del', 0)
->where(function ($query) use ($search) {
// 查找项目名称或公司名称
$query->where('title', 'like', '%' . $search . '%')
->orWhere('company_name', 'like', '%' . $search . '%')
->orWhereHas('projectV6', function ($q) use ($search) {
$q->where('company', 'like', '%' . $search . '%')
->orWhere('title', 'like', '%' . $search . '%');
});
->orWhere('company_name', 'like', '%' . $search . '%');
})
->get();
$this->response('success', Code::SUCCESS, $projects);
... ... @@ -189,7 +186,6 @@ class AsideTicketController extends BaseController
$ticket->reply = $request->input('reply', null);
$ticket->status = $request->input('status', $ticket->status);
$ticket->save();
if ($ticket->status == Tickets::STATUS_COMPLETED)
{
// 完成工单,把子任务里面未完成的工单改为完成
... ... @@ -197,6 +193,7 @@ class AsideTicketController extends BaseController
$ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)
->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]);
}
$ticket->save();
return $ticket;
});
$this->response('success', Code::SUCCESS, $result->toArray());
... ...
... ... @@ -69,10 +69,11 @@ class AsideTicketLogController extends BaseController
if ($log->status >= TicketLog::STATUS_COMPLETED)
{
// 我的工单标记为已完成
$log->status = $request->input('status');
$log->end_at = now();
}
}
if ($request->input('reply') !== null)
$log->reply = $request->input('reply', '');
$log->save();
// 是否有未完成的子任务
$pending = $ticket->logs()
... ...