OrderIssueProcessLogController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\OrderIssue;
  4. use App\OrderIssueProcessLog;
  5. use App\Services\LogService;
  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)
  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. 'user_id' => Auth::user()['id'],
  29. 'type' => '处理',
  30. ]);
  31. if ($log) {
  32. $log->user = $log->hasOne(User::class, 'id', 'user_id')->first();
  33. }
  34. app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
  35. return ['success' =>true,'data' =>$log ];
  36. } catch (\Exception $e) {
  37. app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
  38. return ['success' => false, 'fail_info' => $e->getMessage()];
  39. }
  40. } else {
  41. return ['success' => false, 'fail_info' => '没有传入对应参数'];
  42. }
  43. }
  44. /**
  45. * 删除处理日志
  46. * @param Request $request
  47. * @return array|bool[]
  48. * @throws \Exception
  49. */
  50. public function destroyApi(Request $request): array
  51. {
  52. if(!$request->filled('id')){
  53. return ['success'=>false,'fail_info'=>'没有传入对应参数'];
  54. }
  55. /** @var OrderIssueProcessLog $orderIssueProcessLog */
  56. $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id',$request->input('id'))->first();
  57. // 删除的如果是完结条目,将处理状态改为空
  58. if($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id',$orderIssueProcessLog['order_issue_id'])->update(['final_status'=>null]);
  59. $orderIssueProcessLog->delete();
  60. app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
  61. return ['success'=>true];
  62. }
  63. /**
  64. * 批量完结订单
  65. * @param Request $request
  66. * @return array
  67. */
  68. public function batchStoreApi(Request $request){
  69. if (!Gate::allows('订单管理-问题件-编辑')) {
  70. return ['success' => false, 'fail_info' => '没有对应的权限'];
  71. }
  72. /** @var OrderIssueProcessLogService $service */
  73. $service = app(OrderIssueProcessLogService::class);
  74. try {
  75. $data = $service->batchStoreAndReturnLogs($request->all());
  76. $logs = OrderIssueProcessLog::query()
  77. ->with('user')
  78. ->whereIn('id',data_get($data,'*.id'))
  79. ->get();
  80. $result_data = [];
  81. foreach ($logs as $log) {
  82. $result_data[$log->order_issue_id] =$log;
  83. }
  84. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
  85. return ['success' => true,'logs' => $result_data];
  86. } catch (\Exception $e) {
  87. app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
  88. return ['success' => false,$e->getMessage()];
  89. }
  90. }
  91. }