Address.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\shop\controller;
  11. use app\model\system\Address as AddressModel;
  12. use app\model\web\Config as ConfigModel;
  13. use app\Controller;
  14. /**
  15. * 地址控制器
  16. * Class Order
  17. * @package app\shop\controller
  18. */
  19. class Address extends BaseShop
  20. {
  21. /**
  22. * 通过ajax得到运费模板的地区数据
  23. */
  24. public function getAreaList()
  25. {
  26. $address_model = new AddressModel();
  27. $level = input('level', 1);
  28. $pid = input("pid", 0);
  29. $child = input("child", 0);
  30. $condition = array(
  31. "level" => $level,
  32. "pid" => $pid
  33. );
  34. $list = $address_model->getAreaList($condition, "id, pid, name, shortname, level", "id asc");
  35. if (!empty($list['data']) && $child) {
  36. foreach ($list['data'] as $k => $item) {
  37. $list['data'][$k]['child_num'] = $address_model->getAreaCount([ ['pid', '=', $item['id'] ] ])['data'];
  38. }
  39. }
  40. return $list;
  41. }
  42. /**
  43. * 获取地理位置id
  44. */
  45. public function getGeographicId()
  46. {
  47. $address_model = new AddressModel();
  48. $address = request()->post("address", ",,");
  49. $address_array = explode(",", $address);
  50. $province = $address_array[0];
  51. $city = $address_array[1];
  52. $district = $address_array[2];
  53. $subdistrict = $address_array[3];
  54. $province_list = $address_model->getAreaList(["name" => $province, "level" => 1], "id", '');
  55. $province_id = !empty($province_list["data"]) ? $province_list["data"][0]["id"] : 0;
  56. $city_list = ($province_id > 0) && !empty($city) ? $address_model->getAreaList(["name" => $city, "level" => 2, "pid" => $province_id], "id", '') : [];
  57. $city_id = !empty($city_list["data"]) ? $city_list["data"][0]["id"] : 0;
  58. $district_list = !empty($district) && $city_id > 0 && $province_id > 0 ? $address_model->getAreaList(["name" => $district, "level" => 3, "pid" => $city_id], "id", '') : [];
  59. $district_id = !empty($district_list["data"]) ? $district_list["data"][0]["id"] : 0;
  60. $subdistrict_list = !empty($subdistrict) && $city_id > 0 && $province_id > 0 && $district_id > 0 ? $address_model->getAreaList(["name" => $subdistrict, "level" => 4, "pid" => $district_id], "id", '') : [];
  61. $subdistrict_id = !empty($subdistrict_list["data"]) ? $subdistrict_list["data"][0]["id"] : 0;
  62. return ["province_id" => $province_id, "city_id" => $city_id, "district_id" => $district_id, "subdistrict_id" => $subdistrict_id];
  63. }
  64. public function getLocation(){
  65. $config_model = new ConfigModel();
  66. $mp_config = $config_model->getMapConfig(request()->siteid());
  67. $tencent_map_key = $mp_config['data']['value']['tencent_map_key'];
  68. $url = 'https://apis.map.qq.com/ws/location/v1/ip?key='.$tencent_map_key;
  69. $curl = curl_init();
  70. curl_setopt($curl, CURLOPT_URL, $url);
  71. curl_setopt($curl, CURLOPT_HEADER, 0);
  72. curl_setopt($curl, CURLOPT_TIMEOUT, 1);
  73. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  74. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  75. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  76. $data = curl_exec($curl);
  77. return $data;
  78. }
  79. /**
  80. * 地区管理
  81. * @return mixed
  82. */
  83. public function manage()
  84. {
  85. $address_model = new AddressModel();
  86. $list = $address_model->getAreaList([['level', '=', 1]], "id, pid, name, shortname, level", "id asc")['data'];
  87. if (!empty($list)) {
  88. foreach ($list as $k => $item) {
  89. $list[$k]['child_num'] = $address_model->getAreaCount([ ['pid', '=', $item['id'] ] ])['data'];
  90. }
  91. }
  92. $this->assign('area', $list);
  93. $this->forthMenu();
  94. return $this->fetch("address/manage");
  95. }
  96. /**
  97. * 保存地区
  98. */
  99. public function saveArea(){
  100. if (request()->isAjax()) {
  101. $address_model = new AddressModel();
  102. $data = [
  103. 'id' => input('id'),
  104. 'name' => input('name', ''),
  105. 'shortname' => input('shortname', ''),
  106. 'pid' => input('pid', 0),
  107. 'level' => input('level', 1),
  108. ];
  109. return $address_model->saveArea($data);
  110. }
  111. }
  112. /**
  113. * 删除地区
  114. * @return array
  115. */
  116. public function deleteArea(){
  117. if (request()->isAjax()) {
  118. $address_model = new AddressModel();
  119. $id = input('id');
  120. $level = input('level');
  121. return $address_model->deleteArae($id, $level);
  122. }
  123. }
  124. }