OrderIssueProcessLogController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Exceptions\Exception;
  4. use App\OrderIssue;
  5. use App\OrderIssueProcessLog;
  6. use App\Services\OrderIssueProcessLogService;
  7. use App\User;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Gate;
  11. class OrderIssueProcessLogController extends Controller
  12. {
  13. /**
  14. * 处理日志创建
  15. * @param Request $request
  16. * @return array
  17. */
  18. public function apiStore(Request $request): array
  19. {
  20. if (!Gate::allows('订单管理-问题件-编辑')) {
  21. return ['success' => false, 'fail_info' => '没有对应的权限'];
  22. }
  23. if ($request->filled(['id', 'content'])) {
  24. try {
  25. $log = OrderIssueProcessLog::query()->create([
  26. 'order_issue_id' => $request->input('id'),
  27. 'content' => $request->input('content'),
  28. 'tag' => $request->input('tag'),
  29. 'user_id' => Auth::user()['id'],
  30. 'type' => '处理',
  31. ]);
  32. $log->loadMissing('user');
  33. return ['success' =>true,'data' =>$log ];
  34. } catch (Exception $e) {
  35. return ['success' => false, 'fail_info' => $e->getMessage()];
  36. }
  37. } else {
  38. return ['success' => false, 'fail_info' => '没有传入对应参数'];
  39. }
  40. }
  41. /**
  42. * 删除处理日志
  43. * @param Request $request
  44. * @return array|bool[]
  45. * @throws \Exception
  46. */
  47. public function destroyApi(Request $request): array
  48. {
  49. if(!$request->filled('id')){
  50. return ['success'=>false,'fail_info'=>'没有传入对应参数'];
  51. }
  52. /** @var OrderIssueProcessLog $orderIssueProcessLog */
  53. $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id',$request->input('id'))->first();
  54. // 删除的如果是完结条目,将处理状态改为空
  55. if($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id',$orderIssueProcessLog['order_issue_id'])->update(['final_status'=>null]);
  56. $orderIssueProcessLog->delete();
  57. app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
  58. return ['success'=>true];
  59. }
  60. /**
  61. * 批量完结订单
  62. * @param Request $request
  63. * @return array
  64. */
  65. public function batchStoreApi(Request $request){
  66. if (!Gate::allows('订单管理-问题件-编辑')) {
  67. return ['success' => false, 'fail_info' => '没有对应的权限'];
  68. }
  69. /** @var OrderIssueProcessLogService $service */
  70. $service = app(OrderIssueProcessLogService::class);
  71. try {
  72. $data = $service->batchStoreAndReturnLogs($request->all());
  73. $logs = OrderIssueProcessLog::query()
  74. ->with('user')
  75. ->whereIn('id',data_get($data,'*.id'))
  76. ->get();
  77. $result_data = [];
  78. foreach ($logs as $log) {
  79. $result_data[$log->order_issue_id] =$log;
  80. }
  81. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
  82. return ['success' => true,'logs' => $result_data];
  83. } catch (\Exception $e) {
  84. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
  85. return ['success' => false,$e->getMessage()];
  86. }
  87. }
  88. // 标记处理记录
  89. public function tagApi(Request $request): array
  90. {
  91. if (Gate::denies('订单管理-问题件-编辑'))
  92. return ['success' => false, 'fail_info' => '没有对应的权限'];
  93. OrderIssueProcessLog::query()->where('id',$request['id'])->update(['tag'=>1]);
  94. return ['success' => true];
  95. }
  96. }