classify = new MineList(); $this->cacheTitle = 'MineManageList'; } //获取矿井列表 public static function getMineList() { $result['status'] = true; $result['msg'] = ApiEnum::RETURN_SUCCESS; $mine_list = MineList::orderBy('sort', 'desc')->orderBy('id', 'asc')->where( [ 'parent_id' => 0 ] )->select( [ 'id as mine_id', 'title as name', ] )->get()->toArray(); $result['data'] = $mine_list; return $result; } //获取矿区列表 public static function getAreaList($mine_id = '') { $result['status'] = true; $result['msg'] = ApiEnum::RETURN_SUCCESS; $mine_list = MineList::orderBy('sort', 'desc')->orderBy('id', 'asc')->select( [ 'id as mine_id', 'title as name', 'parent_id', ] )->get()->toArray(); if ($mine_list) { $mine_list = self::sortMineList($mine_list); } if ($mine_id) { foreach ($mine_list as $key => $val) { if ($val['mine_id'] != $mine_id) { unset($mine_list[$key]); } } } $result['data'] = $mine_list; return $result; } //递归排序矿区列表 public static function sortMineList($mine_list, $pid = '0') { $arr = []; if (empty($mine_list)) { return ''; } $num = 0; foreach ($mine_list as $key => $value) { if ($value['parent_id'] == $pid) { $arr[$num] = $value; $arr[$num]['children'] = self::sortMineList($mine_list, $value['mine_id']); unset($arr[$num]['parent_id']); if (count($arr[$num]['children']) == 0) { unset($arr[$num]['children']); } $num++; } } return $arr; } //矿区扩展信息表入库 public static function insertMineListExt($mine_id, $params) { $result = MineListExt::insert( [ 'mine_id' => $mine_id, 'ip' => $params['ip'], 'port' => $params['port'], 'key' => $params['key'], 'secret' => $params['secret'], 'is_hak' => $params['is_hak'], 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ] ); return $result; } //编辑矿区扩展信息表 public static function editMineListExt($mine_id, $params) { $query = MineListExt::where('mine_id', $mine_id)->first(); if ($query) { $result = MineListExt::where('mine_id', $mine_id)->update( [ 'ip' => $params['ip'], 'port' => $params['port'], 'key' => $params['key'], 'secret' => $params['secret'], 'is_hak' => $params['is_hak'], 'updated_at' => date('Y-m-d H:i:s'), ] ); } else { $result = MineListExt::insert( [ 'mine_id' => $mine_id, 'ip' => $params['ip'], 'port' => $params['port'], 'key' => $params['key'], 'secret' => $params['secret'], 'is_hak' => $params['is_hak'], 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ] ); } return $result; } //查询后台矿区列表 public static function getAdminMineList() { $mine_list = MineList::orderBy('sort', 'desc')->get()->toArray(); if ($mine_list) { $result = self::sortMineListExt($mine_list); foreach ($result as $key => $val) { if (isset($val['child'])) { $sort = array_column($val['child'], 'sort'); array_multisort($sort, SORT_ASC, $val['child']); } } return $result; } return []; } //递归查询矿区扩展信息 public static function sortMineListExt($mine_list, $pid = '0') { $arr = []; if (empty($mine_list)) { return []; } $num = 0; foreach ($mine_list as $key => $val) { if ($val['parent_id'] == $pid) { $arr[$num] = $val; $query = MineListExt::where('mine_id', $val['id'])->first(); if ($query) { $arr[$num]['ip'] = $query->ip; $arr[$num]['port'] = $query->port; $arr[$num]['key'] = $query->key; $arr[$num]['secret'] = $query->secret; $arr[$num]['is_hak'] = $query->is_hak == MineEnum::IS_HAK_YES ? '是' : '否'; } else { $arr[$num]['ip'] = ''; $arr[$num]['port'] = ''; $arr[$num]['key'] = ''; $arr[$num]['secret'] = ''; $arr[$num]['is_hak'] = '否'; } $arr[$num]['child'] = self::sortMineListExt($mine_list, $val['id']); if (count($arr[$num]['child']) == 0) { unset($arr[$num]['child']); } $num++; } } return $arr; } //查询后台单个矿区 public static function getAdminMineOne($mine_id) { $mine_list = MineList::find($mine_id); $mine_list->ip = ''; $mine_list->port = ''; $mine_list->key = ''; $mine_list->secret = ''; $mine_list->is_hak = MineEnum::IS_HAK_NO; $mine_list_ext = MineListExt::where('mine_id', $mine_id)->first(); if ($mine_list_ext) { $mine_list->ip = $mine_list_ext->ip; $mine_list->port = $mine_list_ext->port; $mine_list->key = $mine_list_ext->key; $mine_list->secret = $mine_list_ext->secret; $mine_list->is_hak = $mine_list_ext->is_hak; } return $mine_list; } //查询海康矿井区域 public static function getHaiKangArea($mine_id) { $result['status'] = true; $result['msg'] = ApiEnum::RETURN_SUCCESS; $result['data'] = []; $query = MineListExt::where('mine_id', $mine_id)->first(); $mine_name = MineList::where('id', $mine_id)->value('title'); $list['mine_id'] = $mine_id; $list['name'] = $mine_name; Input::replace( [ 'url' => trim($query->ip, '/') . ':' . $query->port, 'key' => $query->key, 'secret' => $query->secret, ] ); $haikang = new HaiKangController(); $result_hk = $haikang->getRegionsList(); if ($result_hk['data']['list']) { $list['children'] = $result_hk['data']['list']; } $result['data'] = $list; return $result; } }