| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- namespace App\Http\Controllers;
- use App\Exceptions\Exception;
- use App\OrderIssue;
- use App\OrderIssueProcessLog;
- use App\Services\OrderIssueProcessLogService;
- use App\User;
- use App\WorkOrder;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Gate;
- class OrderIssueProcessLogController extends Controller
- {
- /** @var OrderIssueProcessLogService $service */
- private $service;
- public function __construct()
- {
- $this->service = app(OrderIssueProcessLogService::class);
- }
- /**
- * 处理日志创建
- * @param Request $request
- * @return array
- */
- public function apiStore(Request $request): array
- {
- if (!Gate::allows('订单管理-问题件-编辑')) {
- return ['success' => false, 'fail_info' => '没有对应的权限'];
- }
- if ($request->filled(['id', 'content'])) {
- try {
- $log = OrderIssueProcessLog::query()->create([
- 'order_issue_id' => $request->input('id'),
- 'content' => $request->input('content'),
- 'tag' => $request->input('tag'),
- 'user_id' => Auth::id(),
- 'type' => '处理',
- ]);
- $log->loadMissing('user');
- return ['success' => true, 'data' => $log];
- } catch (Exception $e) {
- return ['success' => false, 'fail_info' => $e->getMessage()];
- }
- } else {
- return ['success' => false, 'fail_info' => '没有传入对应参数'];
- }
- }
- /**
- * 删除处理日志
- * @param Request $request
- * @return array|bool[]
- * @throws \Exception
- */
- public function destroyApi(Request $request): array
- {
- if (!$request->filled('id')) {
- return ['success' => false, 'fail_info' => '没有传入对应参数'];
- }
- /** @var OrderIssueProcessLog $orderIssueProcessLog */
- $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id', $request->input('id'))->first();
- if (!$orderIssueProcessLog) return ['success' => false, 'fail_info' => '日志不存在,请刷新重试'];
- // 删除的如果是完结条目,将处理状态改为空
- if ($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id', $orderIssueProcessLog['order_issue_id'])->update(['final_status' => null]);
- $orderIssueProcessLog->delete();
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
- return ['success' => true];
- }
- /**
- * 批量完结订单
- * @param Request $request
- * @return array
- */
- public function batchStoreApi(Request $request)
- {
- if (!Gate::allows('订单管理-问题件-编辑')) {
- return ['success' => false, 'fail_info' => '没有对应的权限'];
- }
- /** @var OrderIssueProcessLogService $service */
- $service = app(OrderIssueProcessLogService::class);
- try {
- $data = $service->batchStoreAndReturnLogs($request->all());
- $logs = OrderIssueProcessLog::query()
- ->with('user')
- ->whereIn('id', data_get($data, '*.id'))
- ->get();
- $result_data = [];
- foreach ($logs as $log) {
- $result_data[$log->order_issue_id] = $log;
- }
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
- return ['success' => true, 'logs' => $result_data];
- } catch (\Exception $e) {
- app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) . '||' . $e->getMessage() . "||" . $e->getTraceAsString());
- return ['success' => false, $e->getMessage()];
- }
- }
- // 标记处理记录
- public function tagApi(Request $request): array
- {
- if (Gate::denies('订单管理-问题件-编辑'))
- return ['success' => false, 'fail_info' => '没有对应的权限'];
- OrderIssueProcessLog::query()->where('id', $request['id'])->update(['tag' => 1]);
- return ['success' => true];
- }
- /**
- * 工单为问题批量添加处理日志
- * @param Request $request
- * @return array
- */
- public function workOrderCreateLogApi(Request $request): array
- {
- if (!Gate::allows('订单管理-问题件-编辑')) {
- return ['success' => false, 'message' => '没有对应的权限'];
- }
- $workOrderQuery = WorkOrder::query()->select('order_id')->whereIn('id', $request->input('ids'));
- $orderIssues = OrderIssue::query()->whereIn('order_id', $workOrderQuery)->get();
- if (count($orderIssues) !== count($request->input('ids'))) {
- return ['success' => false, 'message' => '部分工单没有对应的问题件,请检查后重试'];
- }
- $params = ['content' => $request->input('content'), 'orderIssueIds' => $orderIssues->map(function ($item) {
- return $item->id;
- })];
- $data = $this->service->batchStoreAndReturnLogs($params);
- $data = OrderIssueProcessLog::query()->with('user')->whereIn('id', data_get($data, "*.id"))->get();
- return ['success' => true, 'data' => $data];
- }
- }
|