BoxBindingController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\BoxBindingFilter;
  4. use App\Http\Requests\BoxBindingRequest;
  5. use App\Http\Requests\RemarkRequest;
  6. use App\Http\Resources\BoxBindingResource;
  7. use App\Imports\BikesImport;
  8. use App\Imports\BoxBindingImport;
  9. use App\Models\Bike;
  10. use App\Models\BoxBinding;
  11. use App\Utils\Admin;
  12. use Illuminate\Http\Request;
  13. use App\Http\Controllers\Controller;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Log;
  16. use Maatwebsite\Excel\Facades\Excel;
  17. /**
  18. * Class BoxBindingController
  19. * @package App\Http\Controllers\Admin
  20. */
  21. class BoxBindingController extends Controller
  22. {
  23. /**
  24. * index 中控列表
  25. *
  26. * @param BoxBindingFilter $filter
  27. * @param Request $request
  28. * @return \Illuminate\Http\JsonResponse
  29. * @author Fx
  30. *
  31. */
  32. public function index(BoxBindingFilter $filter, Request $request)
  33. {
  34. //
  35. $admin_id = Admin::user()->id;
  36. $box = BoxBinding::query()->filter($filter)->orderByDesc('id');
  37. if (!Admin::isAdministrator()) {
  38. return $this->error('暂无权限');
  39. }
  40. $box = $request->get('all') ? $box->get() : $box->paginate();
  41. return $this->ok(BoxBindingResource::collection($box));
  42. }
  43. /**
  44. * Show the form for creating a new resource.
  45. *
  46. * @return \Illuminate\Http\Response
  47. */
  48. public function create()
  49. {
  50. //
  51. }
  52. /**
  53. * store 添加中控
  54. *
  55. * @param Request $request
  56. * @param BoxBinding $box
  57. * @return \Illuminate\Http\JsonResponse
  58. * @author Fx
  59. *
  60. */
  61. public function store(BoxBindingRequest $request, BoxBinding $box)
  62. {
  63. $inputs = $request->validated();
  64. //
  65. $box->create($inputs);
  66. return $this->ok(BoxBindingResource::make($box));
  67. }
  68. /**
  69. * Display the specified resource.
  70. *
  71. * @param int $id
  72. * @return \Illuminate\Http\Response
  73. */
  74. public function show($id)
  75. {
  76. //
  77. }
  78. /**
  79. * Show the form for editing the specified resource.
  80. *
  81. * @param int $id
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function edit($id)
  85. {
  86. //
  87. }
  88. /**
  89. * update 更新中控
  90. *
  91. * @param Request $request
  92. * @param $id
  93. * @return void
  94. * @author Fx
  95. *
  96. */
  97. public function update(Request $request, $id)
  98. {
  99. //
  100. }
  101. public function updateRemark(RemarkRequest $request, $id)
  102. {
  103. //
  104. $box = BoxBinding::find($id);
  105. $inputs = $request->validated();
  106. // Log::info($id);
  107. $box->update($inputs);
  108. return $this->ok(BoxBindingResource::make($box));
  109. }
  110. /**
  111. * Remove the specified resource from storage.
  112. *
  113. * @param int $id
  114. * @return \Illuminate\Http\Response
  115. */
  116. public function destroy($id)
  117. {
  118. //
  119. }
  120. /**
  121. * import 导入excle
  122. *
  123. * @param Request $request
  124. * @return \Illuminate\Http\JsonResponse
  125. * @author Fx
  126. *
  127. */
  128. public function import(Request $request)
  129. {
  130. try {
  131. Excel::import(new BoxBindingImport, $request->file('boxs'));
  132. return $this->ok('导入成功');
  133. } catch (\Exception $e) {
  134. Log::error($e->getMessage());
  135. return $this->error('导入失败');
  136. }
  137. }
  138. /**
  139. * download 下载模板
  140. *
  141. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  142. * @author Fx
  143. *
  144. */
  145. public function download()
  146. {
  147. return response()->download(public_path('example_box.xlsx'));
  148. }
  149. /**
  150. * unbindBox 解绑
  151. *
  152. * @param $id
  153. * @return \Illuminate\Http\JsonResponse
  154. * @author Fx
  155. *
  156. */
  157. public function unbindBox($id)
  158. {
  159. $box = BoxBinding::find($id);
  160. if (empty($box)) return $this->error('找不到该中控信息');
  161. $box_no = $box->box_no;
  162. $bike = Bike::query()->where('box_no', $box_no)->first();
  163. try {
  164. DB::beginTransaction();
  165. // 更新绑定表
  166. $box->is_binding = BoxBinding::BINDING_NO;
  167. $box->save();
  168. // 更新车辆信息
  169. if (!empty($bike)) {
  170. $bike->box_no = '';
  171. $bike->blu_key = '';
  172. $bike->blu_ase_key = '';
  173. $bike->save();
  174. }
  175. DB::commit();
  176. return $this->ok('解绑成功');
  177. } catch (\Exception $e) {
  178. DB::rollBack();
  179. Log::error($e->getMessage());
  180. return $this->error('解绑失败,请联系管理员');
  181. }
  182. }
  183. }