作者 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 @@ -140,8 +140,7 @@ class FetchTicketProjects extends Command
140 $assm_id = collect([ 140 $assm_id = collect([
141 $item->deploy_optimize->manager_mid ?? 0, 141 $item->deploy_optimize->manager_mid ?? 0,
142 $item->deploy_optimize->tech_leader ?? 0, 142 $item->deploy_optimize->tech_leader ?? 0,
143 - Manage::where('name', '张鸿飞')->value('id') ?? 0,  
144 - 0 143 + 8, //张鸿飞
145 ])->first(fn($v) => $v !== null && $v !== 0, 0); 144 ])->first(fn($v) => $v !== null && $v !== 0, 0);
146 $seom_id = !empty($item->deploy_optimize->optimist_mid) ? $item->deploy_optimize->optimist_mid : $assm_id; 145 $seom_id = !empty($item->deploy_optimize->optimist_mid) ? $item->deploy_optimize->optimist_mid : $assm_id;
147 /** 146 /**
@@ -29,6 +29,7 @@ class TicketController extends BaseController @@ -29,6 +29,7 @@ class TicketController extends BaseController
29 'logs.engineer:id,name', 29 'logs.engineer:id,name',
30 ]) 30 ])
31 ->where('project_id', $project->id) 31 ->where('project_id', $project->id)
  32 + ->where('submit_side', 2)
32 ->orderBy('id', 'desc') 33 ->orderBy('id', 'desc')
33 ->paginate($size, ['*'], 'page', $page); 34 ->paginate($size, ['*'], 'page', $page);
34 return response()->json(['data' => $tickets]); 35 return response()->json(['data' => $tickets]);
@@ -45,9 +46,9 @@ class TicketController extends BaseController @@ -45,9 +46,9 @@ class TicketController extends BaseController
45 { 46 {
46 $request->validated(); 47 $request->validated();
47 $project = TicketProject::where('uuid', $project_id)->first(); 48 $project = TicketProject::where('uuid', $project_id)->first();
48 - if (!$project) return $this->error('未找到项目', 404);  
49 - if ($project->is_del) return $this->error('项目状态异常', 400);  
50 - if (empty($project->engineer_id)) return $this->error('项目未分配工单负责人', 400); 49 + if (!$project) return response('未找到项目', 404);
  50 + if ($project->is_del) return response('项目状态异常', 400);
  51 + if (empty($project->first_engineer)) return response('项目未分配工单负责人', 400);
51 52
52 $result = DB::transaction(function () use ($request, $project) { 53 $result = DB::transaction(function () use ($request, $project) {
53 $ticket = new Tickets(); 54 $ticket = new Tickets();
@@ -86,11 +87,11 @@ class TicketController extends BaseController @@ -86,11 +87,11 @@ class TicketController extends BaseController
86 ]) 87 ])
87 ->find($id); 88 ->find($id);
88 89
89 - if (!$ticket) return $this->error('工单未找到', 404); 90 + if (!$ticket) return response('工单未找到', 404);
90 91
91 - if ($ticket->project->uuid !== $project_id) return $this->error('无权限查看该工单', 403); 92 + if ($ticket->project->uuid !== $project_id) return response('无权限查看该工单', 403);
92 93
93 - if ($ticket->project->is_del) return $this->error('项目状态异常', 400); 94 + if ($ticket->project->is_del) return response('项目状态异常', 400);
94 95
95 return response()->json(['data' => $ticket]); 96 return response()->json(['data' => $ticket]);
96 } 97 }
@@ -127,7 +128,7 @@ class TicketController extends BaseController @@ -127,7 +128,7 @@ class TicketController extends BaseController
127 'first_engineer:id,name', 128 'first_engineer:id,name',
128 ]) 129 ])
129 ->where('uuid', $project_id)->first(); 130 ->where('uuid', $project_id)->first();
130 - if (!$project) return $this->error('未找到项目', 404); 131 + if (!$project) return $this->response('未找到项目', 404);
131 return response()->json(['data' => $project]); 132 return response()->json(['data' => $project]);
132 } 133 }
133 } 134 }
@@ -25,9 +25,9 @@ class AsideTicketController extends BaseController @@ -25,9 +25,9 @@ class AsideTicketController extends BaseController
25 * 1. 超管看所有工单 25 * 1. 超管看所有工单
26 * 2. 其他查看和自己有关的工单 26 * 2. 其他查看和自己有关的工单
27 */ 27 */
28 - $lists = TicketLog::with([  
29 - 'ticket.project.projectV6:id,company,title',  
30 - 'ticket.logs.engineer:id,name', 28 + $lists = Tickets::with([
  29 + 'logs.engineer:id,name',
  30 + 'project',
31 ]) 31 ])
32 ->when($this, function ($query) { 32 ->when($this, function ($query) {
33 $role = $this->manage['role']; 33 $role = $this->manage['role'];
@@ -36,31 +36,34 @@ class AsideTicketController extends BaseController @@ -36,31 +36,34 @@ class AsideTicketController extends BaseController
36 return $query; 36 return $query;
37 } 37 }
38 // 其他角色查自己参与的工单 38 // 其他角色查自己参与的工单
39 - return $query->where('engineer_id', $this->manage['id']); 39 + return $query->where(function ($q) {
  40 + $q->where('submit_user_id', $this->manage['id'])
  41 + ->orWhereHas('logs', function ($q1) {
  42 + $q1->where('engineer_id', $this->manage['id']);
  43 + });
  44 + });
40 }) 45 })
41 ->when($request->input('project_id') !== null, function ($query) use ($request) { 46 ->when($request->input('project_id') !== null, function ($query) use ($request) {
42 // project_id 查 gl_ticket_projects.uuid 47 // project_id 查 gl_ticket_projects.uuid
43 - return $query->whereHas('ticket.project', function ($q) use ($request) {  
44 - $q->where('uuid', $request->input('project_id')); 48 + $projectId = $request->input('project_id');
  49 + return $query->whereHas('project', function ($q) use ($projectId) {
  50 + $q->where('uuid', $projectId);
45 }); 51 });
46 }) 52 })
47 ->when($request->input('status') !== null, function ($query) use ($request) { 53 ->when($request->input('status') !== null, function ($query) use ($request) {
48 // status 查 gl_tickets.status 54 // status 查 gl_tickets.status
49 - return $query->whereHas('ticket', function ($q) use ($request) {  
50 - $q->where('status', $request->input('status'));  
51 - }); 55 + $status = $request->input('status');
  56 + return $query->where('status', $status);
52 }) 57 })
53 ->when($request->input('search'), function ($query) use ($request) { 58 ->when($request->input('search'), function ($query) use ($request) {
54 // search 查 gl_tickets.title 或 gl_ticket_projects.title 或 gl_ticket_projects.company_name 59 // search 查 gl_tickets.title 或 gl_ticket_projects.title 或 gl_ticket_projects.company_name
55 $search = $request->input('search'); 60 $search = $request->input('search');
56 - $query->where(function ($q) use ($search) {  
57 - $q->whereHas('ticket', function ($q1) use ($search) {  
58 - $q1->where('title', 'like', '%' . $search . '%');  
59 - })  
60 - ->orWhereHas('ticket.project', function ($q2) use ($search) {  
61 - $q2->where('title', 'like', '%' . $search . '%')  
62 - ->orWhere('company_name', 'like', '%' . $search . '%');  
63 - }); 61 + return $query->where(function ($q) use ($search) {
  62 + $q->where('title', 'like', '%' . $search . '%')
  63 + ->orWhereHas('project', function ($q1) use ($search) {
  64 + $q1->where('title', 'like', '%' . $search . '%')
  65 + ->orWhere('company_name', 'like', '%' . $search . '%');
  66 + });
64 }); 67 });
65 }) 68 })
66 ->orderBy('id', 'desc') 69 ->orderBy('id', 'desc')
@@ -70,17 +73,11 @@ class AsideTicketController extends BaseController @@ -70,17 +73,11 @@ class AsideTicketController extends BaseController
70 73
71 public function getProjects($search) 74 public function getProjects($search)
72 { 75 {
73 - $projects = TicketProject::with([  
74 - 'projectV6:id,company,title',  
75 - ])  
76 - ->where('is_del', 0) 76 + $projects = TicketProject::where('is_del', 0)
77 ->where(function ($query) use ($search) { 77 ->where(function ($query) use ($search) {
  78 + // 查找项目名称或公司名称
78 $query->where('title', 'like', '%' . $search . '%') 79 $query->where('title', 'like', '%' . $search . '%')
79 - ->orWhere('company_name', 'like', '%' . $search . '%')  
80 - ->orWhereHas('projectV6', function ($q) use ($search) {  
81 - $q->where('company', 'like', '%' . $search . '%')  
82 - ->orWhere('title', 'like', '%' . $search . '%');  
83 - }); 80 + ->orWhere('company_name', 'like', '%' . $search . '%');
84 }) 81 })
85 ->get(); 82 ->get();
86 $this->response('success', Code::SUCCESS, $projects); 83 $this->response('success', Code::SUCCESS, $projects);
@@ -189,7 +186,6 @@ class AsideTicketController extends BaseController @@ -189,7 +186,6 @@ class AsideTicketController extends BaseController
189 186
190 $ticket->reply = $request->input('reply', null); 187 $ticket->reply = $request->input('reply', null);
191 $ticket->status = $request->input('status', $ticket->status); 188 $ticket->status = $request->input('status', $ticket->status);
192 - $ticket->save();  
193 if ($ticket->status == Tickets::STATUS_COMPLETED) 189 if ($ticket->status == Tickets::STATUS_COMPLETED)
194 { 190 {
195 // 完成工单,把子任务里面未完成的工单改为完成 191 // 完成工单,把子任务里面未完成的工单改为完成
@@ -197,6 +193,7 @@ class AsideTicketController extends BaseController @@ -197,6 +193,7 @@ class AsideTicketController extends BaseController
197 $ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED) 193 $ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)
198 ->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]); 194 ->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]);
199 } 195 }
  196 + $ticket->save();
200 return $ticket; 197 return $ticket;
201 }); 198 });
202 $this->response('success', Code::SUCCESS, $result->toArray()); 199 $this->response('success', Code::SUCCESS, $result->toArray());
@@ -69,10 +69,11 @@ class AsideTicketLogController extends BaseController @@ -69,10 +69,11 @@ class AsideTicketLogController extends BaseController
69 if ($log->status >= TicketLog::STATUS_COMPLETED) 69 if ($log->status >= TicketLog::STATUS_COMPLETED)
70 { 70 {
71 // 我的工单标记为已完成 71 // 我的工单标记为已完成
72 - $log->status = $request->input('status');  
73 $log->end_at = now(); 72 $log->end_at = now();
74 } 73 }
75 } 74 }
  75 + if ($request->input('reply') !== null)
  76 + $log->reply = $request->input('reply', '');
76 $log->save(); 77 $log->save();
77 // 是否有未完成的子任务 78 // 是否有未完成的子任务
78 $pending = $ticket->logs() 79 $pending = $ticket->logs()