DemandController.php 4.6 KB

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