CameraController.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <?php
  2. namespace Modules\Camera\Http\Controllers;
  3. use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
  4. use Illuminate\Contracts\Support\Renderable;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Routing\Controller;
  7. use Illuminate\Support\Facades\Log;
  8. use Modules\Admin\Auxiliary\View\FromAuxiliary;
  9. use Modules\Admin\Auxiliary\View\TableAuxiliary;
  10. use Modules\Admin\Auxiliary\View\TreeAuxiliary;
  11. use Modules\Admin\Http\Controllers\BaseController;
  12. use Modules\Camera\Entities\CameraFieldList;
  13. use Modules\Camera\Entities\CameraList;
  14. use Modules\Camera\Jobs\CameraListExcel;
  15. use Modules\Camera\Services\CameraServices;
  16. use Modules\Mine\Entities\MineList;
  17. use Modules\Mine\Services\MineServices;
  18. class CameraController extends BaseController
  19. {
  20. /**
  21. * Display a listing of the resource.
  22. * @return Renderable
  23. */
  24. public function index()
  25. {
  26. return view('camera::index');
  27. }
  28. //摄像头列表
  29. public function cameraList(Request $request)
  30. {
  31. $this->menusActive[0] = 'adminCamera';
  32. $this->menusActive[1] = 'adminCameraList';
  33. $camera_list = CameraList::join(
  34. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  35. )->select(
  36. 'camera_list.id',
  37. 'camera_list.camera_url',
  38. 'mine_list.title',
  39. 'mine_list.degree'
  40. )->paginate(50);
  41. foreach ($camera_list as $key => $val) {
  42. $camera_list[$key]->parent_title = MineList::where('id', explode('|', $val->degree)[0])->value('title');
  43. }
  44. $tableObj = new TableAuxiliary('camera/list', $camera_list);
  45. $tableObj->topActions = ['add', 'import', 'importTemplate'];
  46. $tableObj->column('parent_title', '矿区名称');
  47. $tableObj->column('title', '区域名称');
  48. $tableObj->column('camera_url', '链接');
  49. return $this->tableList($tableObj);
  50. }
  51. //查看摄像头列表详情
  52. public function cameraListView(Request $request)
  53. {
  54. if (!$request->has('id')) {
  55. return $this->redirect('admin/camera/list');
  56. }
  57. $camera_list = CameraList::join(
  58. 'mine_list', 'camera_list.mine_id', '=', 'mine_list.id'
  59. )->where('camera_list.id', $request->input('id'))->select(
  60. 'camera_list.id',
  61. 'camera_list.ip',
  62. 'camera_list.port',
  63. 'camera_list.user_name',
  64. 'camera_list.password',
  65. 'camera_list.com_number',
  66. 'camera_list.camera_url',
  67. 'mine_list.title',
  68. 'mine_list.degree'
  69. )->first();
  70. $camera_list->parent_title = MineList::where('id', explode('|', $camera_list->degree)[0])->value('title');
  71. $tableObj = new TableAuxiliary('', $camera_list);
  72. $tableObj->column('parent_title', '矿区名称');
  73. $tableObj->column('title', '区域名称');
  74. $tableObj->column('ip', 'ip地址');
  75. $tableObj->column('port', '端口');
  76. $tableObj->column('user_name', '用户名');
  77. $tableObj->column('password', '密码');
  78. $tableObj->column('com_number', '通道号');
  79. $tableObj->column('camera_url', '链接');
  80. $tableObj->title = '摄像头链接详情';
  81. return $this->tableView($tableObj);
  82. }
  83. //添加摄像头列表
  84. public function cameraListAdd(Request $request)
  85. {
  86. $mineService = new MineServices();
  87. $mineService->initMineList();
  88. $titleList = $mineService->getTierList();
  89. // $field_list = CameraFieldList::select(
  90. // [
  91. // 'id',
  92. // 'field_name'
  93. // ]
  94. // )->get();
  95. //
  96. // $field_arr = [];
  97. // foreach ($field_list as $key => $val) {
  98. // $field_arr[$val['id']] = $val['field_name'];
  99. // }
  100. $formObj = new FromAuxiliary('camera/list/add');
  101. $formObj->tree_select('mine_id', '矿区单位', $titleList);
  102. $formObj->input('ip', 'ip地址');
  103. $formObj->input('port', '端口');
  104. $formObj->input('user_name', '用户名');
  105. $formObj->input('password', '密码');
  106. $formObj->input('com_number', '通道号');
  107. // $formObj->input('status', '状态');
  108. // $formObj->input('camera_url', '请求链接');
  109. // $formObj->checkbox('camera_field', '字段', $field_arr);
  110. $formObj->title = '添加请求链接';
  111. return $this->from($formObj);
  112. }
  113. //添加摄像头列表操作
  114. public function cameraListAddPost(Request $request)
  115. {
  116. if (!$request->input('mine_id')) {
  117. return $this->error(1, '请选择矿区单位');
  118. }
  119. if (
  120. !$request->input('ip') || !$request->input('port') || !$request->input('user_name')
  121. || !$request->input('password') ||!$request->input('com_number')
  122. ) {
  123. return $this->error(1, '请输入必填字段');
  124. }
  125. $result = CameraServices::addCameraList($request->all());
  126. if (!$result['status']) {
  127. return $this->error(1, $result['msg']);
  128. }
  129. return $this->redirect('admin/camera/list');
  130. }
  131. //编辑摄像头列表
  132. public function cameraListEdit(Request $request)
  133. {
  134. }
  135. //编辑摄像头操作
  136. public function cameraListEditPost(Request $request)
  137. {
  138. }
  139. //删除摄像头列表记录
  140. public function cameraListDelPost(Request $request)
  141. {
  142. if (!$request->has('id')) {
  143. return $this->error(1, '缺少必要参数');
  144. }
  145. $result = CameraServices::delCameraList($request->all());
  146. if (!$result['status']) {
  147. return $this->error(1, $result['msg']);
  148. }
  149. return $this->success();
  150. }
  151. //导入摄像头列表
  152. public function cameraListImport(Request $request)
  153. {
  154. if (!$request->hasFile('excel')) {
  155. return $this->error(9001, '缺少上传文件');
  156. }
  157. ini_set('memory_limit', '500M');
  158. set_time_limit(300);
  159. $reader = ReaderEntityFactory::createReaderFromFile($request->file('excel')->getClientOriginalName());
  160. $reader->open($request->file('excel')->getRealPath());
  161. $sheet = $reader->getSheetIterator(); // 获取sheet对象
  162. $sheet->rewind(); // 指定当前sheet序数
  163. $sheet = $sheet->current(); // 获取指定sheet
  164. $arr = [];
  165. foreach ($sheet->getRowIterator() as $index => $row) { // 读取每行记录
  166. $arr[] = $row->toArray();
  167. }
  168. $reader->close();
  169. $result = CameraListExcel::dispatch($arr);
  170. if (!$result) {
  171. return $this->error(1, '上传失败,请重试');
  172. }
  173. return $this->success();
  174. }
  175. //下载摄像头列表导入模板
  176. public function cameraListTemplate()
  177. {
  178. return $this->redirect('/template/摄像头列表导入模板_v1.0.xlsx');
  179. }
  180. //字段列表
  181. public function fieldList(Request $request)
  182. {
  183. $this->menusActive[0] = 'adminCamera';
  184. $this->menusActive[1] = 'adminCameraFieldlist';
  185. $field_list = CameraFieldList::get();
  186. $tableObj = new TableAuxiliary('camera/field_list', $field_list);
  187. $tableObj->actionBtns = ['edit', 'del'];
  188. $tableObj->column('field_name', '字段名称');
  189. return $this->tableList($tableObj);
  190. }
  191. //添加字段
  192. public function fieldListAdd(Request $request)
  193. {
  194. $formObj = new FromAuxiliary('camera/field_list/add');
  195. $formObj->input('field_name', '字段名称');
  196. $formObj->title = '添加字段';
  197. return $this->from($formObj);
  198. }
  199. //添加字段操作
  200. public function fieldListAddPost(Request $request)
  201. {
  202. if (!$request->input('field_name')) {
  203. return $this->error(1, '请输入字段名称');
  204. }
  205. $result = CameraServices::addCameraFieldList($request->all());
  206. if (!$result['status']) {
  207. return $this->error(1, $result['msg']);
  208. }
  209. return $this->redirect('admin/camera/field_list');
  210. }
  211. //编辑字段
  212. public function fieldListEdit(Request $request)
  213. {
  214. $field_list_id = $request->input('id');
  215. if (empty($field_list_id)) {
  216. return $this->redirect('admin/camera/field_list');
  217. }
  218. $field_list = CameraFieldList::find($field_list_id);
  219. $fromObj = new FromAuxiliary('camera/field_list/edit', $field_list);
  220. $fromObj->input("field_name", "字段名称", $field_list->field_name);
  221. $fromObj->title = '修改字段';
  222. return $this->from($fromObj);
  223. }
  224. //编辑字段操作
  225. public function fieldListEditPost(Request $request)
  226. {
  227. if (!$request->input('field_name')) {
  228. return $this->error(1, '请输入字段名称');
  229. }
  230. $result = CameraServices::editCameraFieldList($request->all());
  231. if (!$result['status']) {
  232. return $this->error(1, $result['msg']);
  233. }
  234. return $this->redirect('admin/camera/field_list');
  235. }
  236. //删除字段
  237. public function fieldListDelPost(Request $request)
  238. {
  239. if (!$request->has('id')) {
  240. return $this->error(1, '缺少必要参数');
  241. }
  242. $result = CameraServices::delCameraFieldList($request->all());
  243. if (!$result['status']) {
  244. return $this->error(1, $result['msg']);
  245. }
  246. return $this->success();
  247. }
  248. }