DemandController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Demand;
  4. use App\Components\AsyncResponse;
  5. use App\Filters\DemandFilters;
  6. use App\Http\Requests\Demand\DemandRequest;
  7. use App\Services\DemandService;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Contracts\Foundation\Application;
  10. use Illuminate\Contracts\View\Factory;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\View\View;
  13. class DemandController extends Controller
  14. {
  15. use AsyncResponse;
  16. /**
  17. * @param Request $request
  18. * @param DemandFilters $filters
  19. * @return Application|Factory|View
  20. */
  21. public function index(Request $request, DemandFilters $filters)
  22. {
  23. // 查询权限
  24. $demands = Demand::query()->with(['processes', 'initiator', 'handler', 'uploadFile'])->filter($filters)->paginate($request['paginate'] ?? 50);
  25. return view('maintenance.demand.index', compact('demands'));
  26. }
  27. /**
  28. * @param DemandRequest $request
  29. * @param DemandService $service
  30. */
  31. public function storeApi(DemandRequest $request, DemandService $service)
  32. {
  33. /** @var Demand $demand */
  34. $params = $request->all();
  35. $params['initiator'] = Auth::user()['id'];
  36. $demand = Demand::query()->create($params);
  37. if ($demand) {
  38. $file = $request->file('file');
  39. if (isset($file)) $service->saveUPLoadFile($demand, $file);
  40. $this->success($demand);
  41. } else {
  42. $this->error('需求创建出现异常');
  43. }
  44. }
  45. /**
  46. * @param DemandRequest $request
  47. */
  48. public function updateApi(DemandRequest $request)
  49. {
  50. // 编辑权限
  51. $this->gate('需求管理-问题-编辑');
  52. $demand = Demand::query()->find($request['id'])->first();
  53. $bool = $demand->update($request->all());
  54. if ($bool) {
  55. $demand->loadMissing('authority', 'initiator', 'handler', 'uploadFile', 'processes');
  56. $this->success($demand);
  57. }
  58. $this->error('需求更新出现异常');
  59. }
  60. /**
  61. * @param DemandRequest $request
  62. * @param DemandService $service
  63. */
  64. public function uploadFileApi(DemandRequest $request, DemandService $service)
  65. {
  66. // 文件上传
  67. $demand = Demand::query()->find($request['id'])->first();
  68. $service->saveUPLoadFile($demand, $request->file('file'));
  69. $demand->loadMissing('authority', 'initiator', 'handler', 'uploadFile', 'processes');
  70. $this->success($demand);
  71. }
  72. /**
  73. * @param DemandRequest $request
  74. */
  75. public function destroyApi(DemandRequest $request)
  76. {
  77. $this->gate('需求管理-问题-删除');
  78. $demand = Demand::query()->find($request['id']);
  79. try {
  80. $bool = $demand->delete();
  81. if ($bool) $this->success();
  82. else $this->error('删除失败');
  83. } catch (\Exception $e) {
  84. $this->error($e->getMessage());
  85. }
  86. }
  87. /**
  88. * 完结问题
  89. *
  90. * @param DemandRequest $request
  91. * @param DemandService $service
  92. */
  93. public function finishApi(DemandRequest $request,DemandService $service)
  94. {
  95. $demand = Demand::query()->find($request['id'])->first();
  96. $result = $service->finishDemand($demand);
  97. if($result['success']){
  98. $this->success($result['data']);
  99. }
  100. $this->error($result['message']);
  101. }
  102. /**
  103. * 问题认领
  104. *
  105. * @param DemandRequest $request
  106. * @param DemandService $service
  107. */
  108. public function claimApi(DemandRequest $request,DemandService $service)
  109. {
  110. $demand = Demand::query()->find($request['id'])->first();
  111. $handler = Auth::user()['id'];
  112. $result = $service->claimDemand($demand,$handler);
  113. if($result['success']){
  114. $this->success($result['data']);
  115. }
  116. $this->error($result['message']);
  117. }
  118. }