Home.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. include_once(FCPATH . 'application/controllers/Base_Controller.php');
  3. class Home extends Base_Controller {
  4. public function __construct() {
  5. parent::__construct();
  6. $this->load->model('Lamp_model');
  7. $this->load->model('Project_model');
  8. $this->load->model('Global_location_model');
  9. }
  10. // 设备统计信息
  11. public function data(){
  12. $countryId = intval($this->input->post('countryId',true));
  13. $proId = intval($this->input->post('proId',true));
  14. $projectIdArr = array();
  15. $areaList = array();
  16. $cityList = array();
  17. $proList = array();
  18. $comList = array();
  19. if (!empty($countryId)) {
  20. $comList[] = array('id'=>$countryId,'level'=>1);
  21. $list = $this->Global_location_model->get_list(['pid'=>$countryId],'id,level');
  22. foreach ($list as $key => $value) {
  23. if ($value['level'] == 2) {
  24. $proList[] = $value;
  25. }elseif ($value['level'] == 3) {
  26. $cityList[] = $value;
  27. }elseif ($value['level'] == 4) {
  28. $areaList[] = $value;
  29. }
  30. }
  31. }
  32. if (!empty($proId)) {
  33. $proList[] = array('id'=>$proId,'level'=>2);
  34. $list = $this->Global_location_model->get_list(['pid'=>$proId],'id,level');
  35. foreach ($list as $key => $value) {
  36. if ($value['level'] == 3) {
  37. $cityList[] = $value;
  38. }elseif ($value['level'] == 4) {
  39. $areaList[] = $value;
  40. }
  41. }
  42. }
  43. if (!empty($cityList)) {
  44. $cityArr = array_unique(array_column($cityList, 'id'));
  45. $list = $this->Global_location_model->get_list(['pid'=>$cityArr],'id,level');
  46. foreach ($list as $key => $value) {
  47. if ($value['level'] == 4) $areaList[] = $value;
  48. }
  49. }
  50. $cityArr = array_unique(array_merge(array_column($comList, 'id'),array_column($proList, 'id'),array_column($cityList, 'id'),array_column($areaList, 'id')));
  51. if (!empty($cityArr)) {
  52. $res = $this->Project_model->get_list(['cityid'=>$cityArr],'id');
  53. $projectIdArr = array_unique(array_column($res, 'id'));
  54. }
  55. $data = array(
  56. 'day_new_count' => 0,
  57. 'day_faulty_count' => 0,
  58. 'total_light_count' => 0,
  59. 'light_up_count' => 0,
  60. 'online_count' => 0,
  61. 'faulty_count' => 0
  62. );
  63. $data['logCount'] = $this->get_user_info('logCount');
  64. $date = date('Y-m-d 00:00:00',time());
  65. $role = $this->get_user_info('role');
  66. if ($role == SYSTEM_ADMIN) {
  67. $data['total_light_count'] = $this->Lamp_model->get_count();
  68. $where = ['createtime >='=>$date];
  69. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  70. $data['day_new_count'] = $this->Lamp_model->get_count($where);
  71. $where = ['netstatus'=>1,'logtime >='=>$date,'devstatus !='=>0];
  72. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  73. $data['day_faulty_count'] = $this->Lamp_model->get_count($where);
  74. $where = ['netstatus'=>1,'status'=>1];
  75. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  76. $data['light_up_count'] = $this->Lamp_model->get_count($where);
  77. $where = ['netstatus'=>1];
  78. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  79. $data['online_count'] = $this->Lamp_model->get_count($where);
  80. $where = ['netstatus'=>1,'devstatus !='=>0];
  81. if (!empty($projectIdArr)) $where['projectid'] = $projectIdArr;
  82. $data['faulty_count'] = $this->Lamp_model->get_count($where);
  83. }else{
  84. $company = $this->get_user_info('company');
  85. $where = ['P.company'=>$company];
  86. if (!empty($projectIdArr)) $where['P.id'] = $projectIdArr;
  87. $join = [
  88. ['table'=>'project as P','cond'=>'P.id = L.projectid','type'=>'inner']
  89. ];
  90. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  91. $data['total_light_count'] = $total['total'];
  92. $where['L.createtime >='] = $date;
  93. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  94. $data['day_new_count'] = $total['total'];
  95. unset($where['L.createtime >=']);
  96. $where['L.netstatus'] = 1;
  97. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  98. $data['online_count'] = $total['total'];
  99. $where['L.status'] = 1;
  100. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  101. $data['light_up_count'] = $total['total'];
  102. unset($where['L.status']);
  103. $where['L.devstatus !='] = 0;
  104. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  105. $data['faulty_count'] = $total['total'];
  106. $where['L.devstatus !='] = 0;
  107. $where['L.logtime >='] = $date;
  108. $total = $this->Lamp_model->get_list_by_multi_join($where, 'count(*) as total',NULL, NULL, $join, NULL, NUll, 'L', true);
  109. $data['day_faulty_count'] = $total['total'];
  110. }
  111. exit(json_result('0000',$this->response['0000'],$data));
  112. }
  113. // 发用电量统计信息
  114. public function sta_info(){
  115. $data = array(
  116. 'electricity' => 0,
  117. 'CO2_reduction' => 0,
  118. 'SO2_reduction' => 0,
  119. 'TCE_reduction' => 0
  120. );
  121. exit(json_result('0000',$this->response['0000'],$data));
  122. }
  123. // 设备统计列表
  124. public function dev_list(){
  125. exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  126. }
  127. // 故障信息列表
  128. public function alarm_list(){
  129. exit(json_result('0000',$this->response['0000'],array()));
  130. }
  131. // 字段管理
  132. public function fields(){
  133. $userid = $this->get_user_info('id');
  134. $data = $this->User_model->get_user_field($userid);
  135. if (empty($data) || empty($data['lampfield'])) {
  136. // $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  137. $fieldstr = "number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status,section";
  138. }else{
  139. if ($data['lampfield'] == 'number,lampstatus,updatetime,lighteness,address,lamppower,chargestage,battvoltage,overtimes,solarpower,isfaulted,status') {
  140. $data['lampfield'] .= ',section';
  141. }
  142. $fieldstr = $data['lampfield'];
  143. }
  144. // 系统默认
  145. $def = array(
  146. array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  147. array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  148. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  149. array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,L.rssi','fields1'=>'status','enname'=>'Network status'),
  150. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  151. array('name'=>'更新时间','field'=>'RI.updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  152. array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  153. array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  154. array('name'=>'负载功率(W)','field'=>'RI.loadpower','fields1'=>'loadpower','enname'=>'LED power(W)'),
  155. array('name'=>'蓄电池电压(V)','field'=>'RI.batpower as battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  156. array('name'=>'蓄电池总过放次数','field'=>'HI.overtimes','fields1'=>'overtimes','enname'=>'Over discharge times'),
  157. array('name'=>'太阳能板功率(W)','field'=>'RI.panelpower as solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  158. array('name'=>'是否故障','field'=>'AI.batstatus,AI.panelstatus,AI.lampstatus,AI.tempstatus,AI.status as alarmStatus','fields1'=>'isfaulted','enname'=>'Fault'),
  159. );
  160. // $def = array(
  161. // array('name'=>'路灯编号','field'=>'L.number','fields1'=>'number','enname'=>'Lamp number'),
  162. // array('name'=>'路段','field'=>'L.section','fields1'=>'section','enname'=>'Road'),
  163. // array('name'=>'路灯状态','field'=>'L.status as lampstatus,L.lighteness','fields1'=>'lampstatus','enname'=>'Lamp status'),
  164. // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status','fields1'=>'status','enname'=>'Network status'),
  165. // // array('name'=>'信号状态','field'=>'L.protocoltype,L.netstatus as status,N.rssi,N.snr','fields1'=>'status','enname'=>'Network status'),
  166. // array('name'=>'更新时间','field'=>'L.logtime as updatetime','fields1'=>'updatetime','enname'=>'Update time'),
  167. // array('name'=>'路灯亮度(%)','field'=>'L.lighteness','fields1'=>'lighteness','enname'=>'Brightness(%)'),
  168. // array('name'=>'无线模块地址','field'=>'L.address','fields1'=>'address','enname'=>'Wireless module address'),
  169. // array('name'=>'路灯功率(W)','field'=>'L.lamppower','fields1'=>'lamppower','enname'=>'Lamp power(W)'),
  170. // array('name'=>'蓄电池充电阶段','field'=>'L.chargestage','fields1'=>'chargestage','enname'=>'Charging stage'),
  171. // array('name'=>'蓄电池电压(V)','field'=>'L.battvoltage','fields1'=>'battvoltage','enname'=>'Battery voltage(V)'),
  172. // array('name'=>'蓄电池总过放次数','field'=>'L.overtimes','fields1'=>'overtimes','enname'=>'Over discharge times'),
  173. // array('name'=>'太阳能板功率(W)','field'=>'L.solarpower','fields1'=>'solarpower','enname'=>'Solar panel power(W)'),
  174. // array('name'=>'是否故障','field'=>'L.isfaulted','fields1'=>'isfaulted','enname'=>'Fault'),
  175. // );
  176. // 路灯信息
  177. $lampinfo = array(
  178. array('name'=>'当前策略','field'=>'L.policyid','fields1'=>'policyid','enname'=>'Current strategy'),
  179. array('name'=>'路灯id','field'=>'L.id','fields1'=>'id','enname'=>'Lamp ID'),
  180. // array('name'=>'网络名称','field'=>'N.networkname','fields1'=>'networkname','enname'=>'Network name'),
  181. array('name'=>'项目名称','field'=>'P.projectname','fields1'=>'projectname','enname'=>'Project name'),
  182. array('name'=>'经度','field'=>'L.longitude','fields1'=>'longitude','enname'=>'Longitude'),
  183. array('name'=>'纬度','field'=>'L.latitude','fields1'=>'latitude','enname'=>'Latitude'),
  184. // array('name'=>'sim卡号','field'=>'N.simid','fields1'=>'simid','enname'=>'SIM card number'),
  185. // array('name'=>'套餐剩余','field'=>'N.packageSurplus','fields1'=>'packageSurplus','enname'=>'Package surplus'),
  186. array('name'=>'路灯类型','field'=>'L.lamptype','fields1'=>'lamptype','enname'=>'Lamp type'),
  187. array('name'=>'太阳能板类型','field'=>'L.boardtype','fields1'=>'boardtype','enname'=>'Solar panel type'),
  188. // array('name'=>'太阳能板功率(W)','field'=>'L.boardpower','fields1'=>'boardpower','enname'=>'Solar panel power(W)'),
  189. // array('name'=>'蓄电池类型','field'=>'L.batterytype','fields1'=>'batterytype','enname'=>'Battery type'),
  190. array('name'=>'蓄电池AH数(ah)','field'=>'HI.totalchargeah as batteryah','fields1'=>'batteryah','enname'=>'Battery capacity(ah)'),
  191. // array('name'=>'负载功率(W)','field'=>'L.loadpower','fields1'=>'loadpower','enname'=>'Load power(W)'),
  192. // array('name'=>'蓄电池剩余电量','field'=>'L.electricleft','fields1'=>'electricleft','enname'=>'Remaining battery capacity(Ah)'),
  193. );
  194. // 路灯信息日志
  195. $lamp_info_log = array(
  196. array('name'=>'路灯电压(V)','field'=>'RI.loadvoltage as lampvoltage','fields1'=>'lampvoltage','enname'=>'Lamp voltage(V)'),
  197. array('name'=>'路灯电流(A)','field'=>'RI.loadcurrent as lampcurrent','fields1'=>'lampcurrent','enname'=>'Lamp current(A)'),
  198. // array('name'=>'灯头温度(℃)','field'=>'L.lamptemper as temper','fields1'=>'temper','enname'=>'Lamp temperature(℃)'),
  199. );
  200. $solar_info_log = array(
  201. array('name'=>'太阳能板电压(V)','field'=>'RI.panelvoltage as solarvoltage','fields1'=>'solarvoltage','enname'=>'Solar panel voltage(V)'),
  202. array('name'=>'太阳能板电流(A)','field'=>'RI.panelcurrent as solarcurrent','fields1'=>'solarcurrent','enname'=>'Solar panel current(A)')
  203. );
  204. // 蓄电池信息日志
  205. // $battery_info_log = array(
  206. // array('name'=>'蓄电池状态','field'=>'L.battstatus','fields1'=>'battstatus','enname'=>'Battery status'),
  207. // array('name'=>'蓄电池充电电流(A)','field'=>'L.chargecurrent','fields1'=>'chargecurrent','enname'=>'Charging current(A)'),
  208. // array('name'=>'蓄电池放电电流(A)','field'=>'L.discharcurrent','fields1'=>'discharcurrent','enname'=>'Discharging current(A)'),
  209. // array('name'=>'蓄电池充电功率(w)','field'=>'L.chargepower','fields1'=>'chargepower','enname'=>'Charging power(w)'),
  210. // array('name'=>'蓄电池放电功率(w)','field'=>'L.dischargepower','fields1'=>'dischargepower','enname'=>'Discharging power(w)'),
  211. // array('name'=>'蓄电池表面温度(℃)','field'=>'L.batttemper','fields1'=>'batttemper','enname'=>'Battery surface temperature(℃)'),
  212. // array('name'=>'蓄电池总电量','field'=>'L.electrictotal','fields1'=>'electrictotal','enname'=>'Total battery capacity(Ah)'),
  213. // array('name'=>'蓄电池电量SOC(%)','field'=>'L.electricSOC','fields1'=>'electricSOC','enname'=>'Battery SOC(%)'),
  214. // array('name'=>'当天最低电压(V)','field'=>'L.voltagedaymin','fields1'=>'voltagedaymin','enname'=>'Minimum voltage(V)'),
  215. // array('name'=>'当天最高电压(V)','field'=>'L.voltagedaymax','fields1'=>'voltagedaymax','enname'=>'Highest voltage(V)'),
  216. // array('name'=>'当天充电安时数(ah)','field'=>'L.daychargeah','fields1'=>'daychargeah','enname'=>'Charging AH(ah)'),
  217. // array('name'=>'当天放电安时数(ah)','field'=>'L.daydischarah','fields1'=>'daydischarah','enname'=>'Discharging AH(ah)'),
  218. // array('name'=>'当天充电最大功率(W)','field'=>'L.daychargemaxpow','fields1'=>'daychargemaxpow','enname'=>'Charging max-power(W)'),
  219. // array('name'=>'当天放电最大功率(W)','field'=>'L.daydischarmaxpow','fields1'=>'daydischarmaxpow','enname'=>'Discharging max-power(W)'),
  220. // array('name'=>'当天灯亮时间(hh:mm)','field'=>'L.daychargemincurrent','fields1'=>'daychargemincurrent','enname'=>'Turn-on duration'),
  221. // array('name'=>'当天充电最大电流(A)','field'=>'L.daycharmaxcurrent','fields1'=>'daycharmaxcurrent','enname'=>'Highest charging current(A)'),
  222. // array('name'=>'当天充电时间(hh:mm)','field'=>'L.daydischargemincurrent','fields1'=>'daydischargemincurrent','enname'=>'Charging duration'),
  223. // array('name'=>'当天放电最大电流(A)','field'=>'L.daydischarmaxcurrent','fields1'=>'daydischarmaxcurrent','enname'=>'Highest discharging current(A)'),
  224. // array('name'=>'当天蓄电池最低温度(℃)','field'=>'L.daybattmintemper','fields1'=>'daybattmintemper','enname'=>'Battery min-temperature(℃)'),
  225. // array('name'=>'当天蓄电池最高温度(℃)','field'=>'L.daybattmaxtemper','fields1'=>'daybattmaxtemper','enname'=>'Battery max-temperature(℃)'),
  226. // );
  227. $electric_info_log = array(
  228. array('name'=>'当天发电量(kWh)','field'=>'RI.chargeday as daygeneration','fields1'=>'daygeneration','enname'=>'Power generation(kWh)'),
  229. array('name'=>'当天用电量(kWh)','field'=>'RI.dischargeday as dayconsumption','fields1'=>'dayconsumption','enname'=>'Power consumption(kWh)'),
  230. array('name'=>'累计发电量(kWh)','field'=>'HI.totalchargeah as totalgeneration','fields1'=>'totalgeneration','enname'=>'Cumulative power generation(kWh)'),
  231. array('name'=>'累计用电量(kWh)','field'=>'HI.totaldischarah as totalconsumption','fields1'=>'totalconsumption','enname'=>'Cumulative power consumption(kWh)'),
  232. );
  233. // $system_info_log = array(
  234. // array('name'=>'系统电压(V)','field'=>'L.sysvoltage','fields1'=>'sysvoltage','enname'=>'System voltage(V)'),
  235. // array('name'=>'系统电流(A)','field'=>'L.syscurrent','fields1'=>'syscurrent','enname'=>'System current(A)'),
  236. // array('name'=>'控制器温度(℃)','field'=>'L.temper as controlTemper','fields1'=>'controlTemper','enname'=>'Controller temperature(℃)'),
  237. // );
  238. // 历史信息日志
  239. // $history_info_log = array(
  240. // array('name'=>'运行天数','field'=>'L.rundays','fields1'=>'rundays','enname'=>'Running duration'),
  241. // array('name'=>'蓄电池总充满次数','field'=>'L.fulltimes','fields1'=>'fulltimes','enname'=>'Full charge times'),
  242. // array('name'=>'蓄电池总充电安时数(ah)','field'=>'L.totalchargeah','fields1'=>'totalchargeah','enname'=>'Total charge AH(ah)'),
  243. // array('name'=>'蓄电池总放电安时数(ah)','field'=>'L.totaldischarah','fields1'=>'totaldischarah','enname'=>'Total discharge AH(ah)'),
  244. // );
  245. // $fields = array_merge($def,$lampinfo,$lamp_info_log,$solar_info_log,$battery_info_log,$electric_info_log,$system_info_log,$history_info_log);
  246. $fields = array_merge($def,$lampinfo,$lamp_info_log,$solar_info_log,$electric_info_log);
  247. // $fields = $def;
  248. $def = explode(',', $fieldstr);
  249. foreach ($fields as &$v) {
  250. if (in_array($v['fields1'], $def)) {
  251. $v['select'] = '1';
  252. }else{
  253. $v['select'] = '0';
  254. }
  255. }
  256. exit(json_result('0000',$this->response['0000'],array('list'=>$fields)));
  257. }
  258. // 路灯下拉列表
  259. public function lamp_list(){
  260. $networkid = intval($this->input->post('networkid',true));
  261. $projectid = intval($this->input->post('projectid',true));
  262. if (empty($networkid) && empty($projectid)) {
  263. exit(json_result('0405',$this->response['0405'],array()));
  264. }
  265. if (!empty($networkid)) {
  266. $data = $this->Lamp_model->get_list(array('networkid'=>$networkid), 'number,id');
  267. }else{
  268. $data = $this->Lamp_model->get_list(array('projectid'=>$projectid), 'number,id');
  269. }
  270. exit(json_result('0000',$this->response['0000'],$data));
  271. }
  272. // 获取单个路灯的经纬度
  273. public function get_lng_lat(){
  274. $lampid = $this->input->post('lampid',true);
  275. $projectid = $this->input->post('projectid',true);
  276. $section = $this->input->post('section',true);
  277. $lampData = array();
  278. if (!empty($lampid)) {
  279. $where = array('id'=>$lampid,'longitude !='=>0,'latitude !='=>0);
  280. if (!empty($section)) {
  281. $where['section'] = $section;
  282. }
  283. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  284. }
  285. if (!empty($projectid)) {
  286. $where = array('projectid'=>$projectid,'longitude !='=>0,'latitude !='=>0);
  287. if (!empty($section)) {
  288. $where['section'] = $section;
  289. }
  290. $lampData = $this->Lamp_model->get_one($where,'longitude,latitude');
  291. }
  292. if (empty($lampData)) {
  293. $lampData = array('longitude'=>0,'latitude'=>0);
  294. }
  295. exit(json_result('0000',$this->response['0000'],$lampData));
  296. }
  297. public function get_country(){
  298. $role = $this->get_user_info('role');
  299. $where = array();
  300. if ($role != SYSTEM_ADMIN) {
  301. $company = $this->get_user_info('company');
  302. $where['company'] = $company;
  303. }
  304. $pro_list = $this->Project_model->get_list($where,'cityid');
  305. $cityArr = array_unique(array_column($pro_list, 'cityid'));
  306. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  307. $areaList = array();
  308. $cityList = array();
  309. $proList = array();
  310. $comList = array();
  311. foreach ($list as $key => $value) {
  312. if ($value['level'] == 1) {
  313. $comList[] = $value;
  314. }elseif ($value['level'] == 2) {
  315. $proList[] = $value;
  316. }elseif ($value['level'] == 3) {
  317. $cityList[] = $value;
  318. }else {
  319. $areaList[] = $value;
  320. }
  321. }
  322. if (!empty($areaList)) {
  323. $cityArr = array_unique(array_column($areaList, 'pid'));
  324. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  325. foreach ($list as $key => $value) {
  326. if ($value['level'] == 1) {
  327. $comList[] = $value;
  328. }elseif ($value['level'] == 2) {
  329. $proList[] = $value;
  330. }else {
  331. $cityList[] = $value;
  332. }
  333. }
  334. }
  335. if (!empty($cityList)) {
  336. $cityArr = array_unique(array_column($cityList, 'pid'));
  337. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  338. foreach ($list as $key => $value) {
  339. if ($value['level'] == 1) {
  340. $comList[] = $value;
  341. }else {
  342. $proList[] = $value;
  343. }
  344. }
  345. }
  346. if (!empty($proList)) {
  347. $cityArr = array_unique(array_column($proList, 'pid'));
  348. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  349. foreach ($list as $key => $value) {
  350. if ($value['level'] == 1) $comList[] = $value;
  351. }
  352. }
  353. if (empty($comList)) exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  354. $cityArr = array_unique(array_column($comList, 'id'));
  355. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name',null,null,'convert(english_name using gbk) ASC,id DESC');
  356. exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
  357. }
  358. public function get_province(){
  359. $countryId = intval($this->input->post('countryId',true));
  360. $role = $this->get_user_info('role');
  361. $where = array();
  362. if ($role != SYSTEM_ADMIN) {
  363. $company = $this->get_user_info('company');
  364. $where['company'] = $company;
  365. }
  366. $pro_list = $this->Project_model->get_list($where,'cityid');
  367. $cityArr = array_unique(array_column($pro_list, 'cityid'));
  368. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  369. $areaList = array();
  370. $cityList = array();
  371. $proList = array();
  372. foreach ($list as $key => $value) {
  373. if ($value['level'] == 2) {
  374. $proList[] = $value;
  375. }elseif ($value['level'] == 3) {
  376. $cityList[] = $value;
  377. }elseif ($value['level'] == 4) {
  378. $areaList[] = $value;
  379. }
  380. }
  381. if (!empty($areaList)) {
  382. $cityArr = array_unique(array_column($areaList, 'pid'));
  383. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  384. foreach ($list as $key => $value) {
  385. if ($value['level'] == 2) {
  386. $proList[] = $value;
  387. }elseif ($value['level'] == 3) {
  388. $cityList[] = $value;
  389. }
  390. }
  391. }
  392. if (!empty($cityList)) {
  393. $cityArr = array_unique(array_column($cityList, 'pid'));
  394. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name,level,pid');
  395. foreach ($list as $key => $value) {
  396. if ($value['level'] == 2) $proList[] = $value;
  397. }
  398. }
  399. if (empty($proList)) exit(json_result('0000',$this->response['0000'],array('list'=>array())));
  400. $cityArr = array_unique(array_column($proList, 'id'));
  401. $list = $this->Global_location_model->get_list(['id'=>$cityArr],'id,english_name as name',null,null,'convert(english_name using gbk) ASC,id DESC');
  402. exit(json_result('0000',$this->response['0000'],array('list'=>$list)));
  403. }
  404. }