|
...
|
...
|
@@ -8,7 +8,7 @@ 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\Workchat\MessagePush;
|
|
|
|
use App\Models\Manage\ManageHr;
|
|
|
|
use App\Models\WorkOrder\TicketLog;
|
|
|
|
use App\Models\WorkOrder\TicketProject;
|
|
|
|
use App\Models\WorkOrder\Tickets;
|
|
...
|
...
|
@@ -26,8 +26,8 @@ class AsideTicketController extends BaseController |
|
|
|
{
|
|
|
|
$validated = $request->validated();
|
|
|
|
$lists = Tickets::with([
|
|
|
|
'logs.engineer:id,name',
|
|
|
|
'project',
|
|
|
|
'logs.engineer',
|
|
|
|
'project.pm',
|
|
|
|
])
|
|
|
|
->when(!empty($validated['engineer_id']), function ($query) use ($validated) {
|
|
|
|
// 查 gl_tickets 表 submit_user_id 或 gl_ticket_logs 表 engineer_id
|
|
...
|
...
|
@@ -51,6 +51,10 @@ class AsideTicketController extends BaseController |
|
|
|
$status = $request->input('status');
|
|
|
|
return $query->where('status', $status);
|
|
|
|
})
|
|
|
|
->when($request->input('star') !== null, function ($query) use ($request) {
|
|
|
|
$star = $request->input('star');
|
|
|
|
return $query->where('star', $star);
|
|
|
|
})
|
|
|
|
->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');
|
|
...
|
...
|
@@ -92,7 +96,31 @@ class AsideTicketController extends BaseController |
|
|
|
public function projectList(TicketProjectListRequest $request)
|
|
|
|
{
|
|
|
|
$validated = $request->validated();
|
|
|
|
$dept_id = ManageHr::where('manage_id', $this->manage['id'])
|
|
|
|
->value('dept_id');
|
|
|
|
|
|
|
|
$lists = TicketProject::where('is_del', 0)
|
|
|
|
->when(($this->manage['role'] != 1 && $dept_id != 5), function ($query) use ($dept_id) {
|
|
|
|
/**
|
|
|
|
* 超管看所有项目 $this->manage['role']=1
|
|
|
|
* 全球搜: 技术部ID 1、售后部ID 2
|
|
|
|
* 超迹AI: AICC技术部 ID 4
|
|
|
|
* 域途:域途运营部 ID 17
|
|
|
|
*/
|
|
|
|
if (in_array($dept_id, [1, 2])) {
|
|
|
|
// V5 V6
|
|
|
|
return $query->whereIn('project_cate', [1, 2]);
|
|
|
|
}elseif ($dept_id == 4) {
|
|
|
|
// 超迹AI
|
|
|
|
return $query->where('project_cate', 3);
|
|
|
|
}elseif ($dept_id == 17){
|
|
|
|
// 域途
|
|
|
|
return $query->where('project_cate', 4);
|
|
|
|
}else{
|
|
|
|
// 其他部门,不允许看数据
|
|
|
|
return $query->where('id', 0); // 返回空结果
|
|
|
|
}
|
|
|
|
})
|
|
|
|
->when(!empty($validated['search']), function ($query) use ($validated) {
|
|
|
|
// 查找项目名称或公司名称
|
|
|
|
$search = $validated['search'];
|
|
...
|
...
|
@@ -141,14 +169,15 @@ class AsideTicketController extends BaseController |
|
|
|
$ticket->submit_side = 1; // 1 for A-side submission
|
|
|
|
$ticket->submit_user_id = $this->manage['id'];
|
|
|
|
$ticket->submit_username = $this->manage['name'];
|
|
|
|
$ticket->star = $request->input('star', 3);
|
|
|
|
$ticket->plan_end_at = $request->input('plan_end_at', null);
|
|
|
|
$ticket->save();
|
|
|
|
// A 端提工单,都是针对客户提的需求等开发任务;比如翻译,修改页面等。。。
|
|
|
|
foreach ($request->input('engineer_ids', []) as $engineer_id) {
|
|
|
|
$log = new TicketLog();
|
|
|
|
$log->engineer_id = $engineer_id;
|
|
|
|
$ticket->logs()->save($log);
|
|
|
|
}
|
|
|
|
$project->pushWechatGroupMsg("创贸({$ticket->submit_username})新增了工单(ID:{$ticket->id}),请及时处理!");
|
|
|
|
|
|
|
|
// 分配工单参与人
|
|
|
|
$ticket->saveEngineers($request->input('engineer_ids', []));
|
|
|
|
$nickname = ManageHr::where('manage_id', $this->manage['id'])->value('nickname') ?? mb_substr($ticket->submit_username, 0, 1) . '**';
|
|
|
|
if ($project->wechat_switch)
|
|
|
|
$project->pushWechatGroupMsg("创贸({$nickname})新增了工单(ID:{$ticket->id}),请及时处理!");
|
|
|
|
return $ticket;
|
|
|
|
});
|
|
|
|
$this->response('success', Code::SUCCESS, $result->toArray());
|
|
...
|
...
|
@@ -186,27 +215,32 @@ class AsideTicketController extends BaseController |
|
|
|
// 开始修改
|
|
|
|
$result = DB::transaction(function () use ($request, $ticket) {
|
|
|
|
if ($request->input('engineer_ids'))
|
|
|
|
{
|
|
|
|
// 有邀请工程师协同处理
|
|
|
|
foreach ($request->input('engineer_ids') as $engineer_id)
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
// 利用唯一索引去重
|
|
|
|
$new_log = new TicketLog();
|
|
|
|
$new_log->engineer_id = $engineer_id;
|
|
|
|
$ticket->logs()->save($new_log);
|
|
|
|
}catch (\Exception $exception){}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$ticket->saveEngineers($request->input('engineer_ids'));
|
|
|
|
|
|
|
|
// 其他字段有提交数据才修改,比如star plan_end_at
|
|
|
|
if ($request->input('title'))
|
|
|
|
$ticket->title = $request->input('title');
|
|
|
|
if ($request->input('content'))
|
|
|
|
$ticket->content = $request->input('content');
|
|
|
|
if ($request->input('star'))
|
|
|
|
$ticket->star = $request->input('star');
|
|
|
|
if ($request->input('plan_end_at'))
|
|
|
|
$ticket->plan_end_at = $request->input('plan_end_at');
|
|
|
|
if ($request->input('status'))
|
|
|
|
$ticket->status = $request->input('status');
|
|
|
|
|
|
|
|
$ticket->reply = $request->input('reply', null);
|
|
|
|
$ticket->status = $request->input('status', $ticket->status);
|
|
|
|
if ($ticket->status == Tickets::STATUS_COMPLETED)
|
|
|
|
{
|
|
|
|
// 完成工单,把子任务里面未完成的工单改为完成
|
|
|
|
$ticket->end_at = now();
|
|
|
|
$ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)
|
|
|
|
$ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)->where('is_engineer', 1)
|
|
|
|
->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]);
|
|
|
|
// 推动微信通知
|
|
|
|
$project = $ticket->project;
|
|
|
|
if ($project->wechat_switch)
|
|
|
|
$project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!");
|
|
|
|
$ticket->pushDing('finish');
|
|
|
|
|
|
|
|
}
|
|
|
|
$ticket->save();
|
|
|
|
return $ticket;
|
|
...
|
...
|
@@ -241,6 +275,7 @@ class AsideTicketController extends BaseController |
|
|
|
if (empty($project->wechat_group_id)) {
|
|
|
|
$this->response('该工单没有绑定的企微群', Code::USER_MODEL_NOTFOUND_ERROE);
|
|
|
|
}
|
|
|
|
if ($project->wechat_switch)
|
|
|
|
$project->pushWechatGroupMsg();
|
|
|
|
$this->response('success', Code::SUCCESS);
|
|
|
|
}
|
...
|
...
|
|