Area.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace Agent\Src;
  3. use Dever;
  4. class Area
  5. {
  6. private $default = array
  7. (
  8. 'value' => -1,
  9. 'name' => '不限',
  10. );
  11. private $search_default = array
  12. (
  13. 'value' => -1,
  14. 'name' => '地区选择',
  15. );
  16. /**
  17. * 获取地区数据
  18. *
  19. * @return mixed
  20. */
  21. public function get()
  22. {
  23. $mid = Dever::load('passport/user')->check(false);
  24. if ($mid && $mid > 0) {
  25. $member = Dever::db('agent/member')->find($mid);
  26. $role = Dever::db('setting/role')->find($member['role']);
  27. if ($role['type'] == 2) {
  28. $temp = explode(',', $member['area']);
  29. $city = Dever::db('area/city')->find($temp[1]);
  30. if ($city) {
  31. $city_level = $city['level_id'];
  32. }
  33. if ($role['area'] == 2 && isset($temp[2])) {
  34. # 如果是区县,只能升级为更高等级的城市和区县
  35. $county = Dever::db('area/county')->find($temp[2]);
  36. if ($county) {
  37. $county_level = $county['level'];
  38. }
  39. } elseif ($role['area'] == 3 && isset($temp[3])) {
  40. # 如果是街道,只能升级为更高等级的城市和区县
  41. $town = Dever::db('area/town')->find($temp[3]);
  42. if ($town) {
  43. $town_level = $town['type'];
  44. }
  45. }
  46. }
  47. }
  48. # 联动总数,默认到县区
  49. $level_total = Dever::input('level_total', 3);
  50. # 当前联动级别
  51. $level_num = Dever::input('level_num');
  52. # 一般为id
  53. $level_id = Dever::input('level_id');
  54. # 是否是搜索列表页
  55. $level_search = Dever::input('level_search');
  56. if ($level_search) {
  57. $default = $this->search_default;
  58. if ($level_num == 1) {
  59. $default['name'] = '省份选择';
  60. } elseif ($level_num == 2) {
  61. $default['name'] = '城市选择';
  62. } elseif ($level_num == 3) {
  63. $default['name'] = '县区选择';
  64. } elseif ($level_num == 4) {
  65. $default['name'] = '街道选择';
  66. } else {
  67. $default['name'] = '社区选择';
  68. }
  69. } else {
  70. $default = $this->default;
  71. }
  72. # 四级联动
  73. if ($level_num == 1) {
  74. $data = Dever::db('area/province')->getAll();
  75. } elseif ($level_num == 2) {
  76. $where = array('province_id' => $level_id);
  77. if (isset($city_level)) {
  78. $where['level_id'] = $city_level;
  79. }
  80. $where['status'] = 1;
  81. $data = Dever::db('area/city')->getAll($where);
  82. } elseif ($level_num == 3) {
  83. $where = array('city_id' => $level_id);
  84. if (isset($county_level)) {
  85. $where['level'] = $county_level;
  86. }
  87. $where['status'] = 1;
  88. $data = Dever::db('area/county')->getAll($where);
  89. /*
  90. if (isset($town_level)) {
  91. foreach ($data as $k => $v) {
  92. $where = array('county_id' => $v['value']);
  93. $where['type'] = $town_level;
  94. $town = Dever::db('area/town')->getTotal($where);
  95. if ($town <= 0) {
  96. unset($data[$k]);
  97. }
  98. }
  99. }*/
  100. } elseif ($level_num == 4) {
  101. $where = array('county_id' => $level_id);
  102. if (isset($town_level)) {
  103. $where['type'] = $town_level;
  104. }
  105. $where['status'] = 1;
  106. $data = Dever::db('area/town')->getAll($where);
  107. } else {
  108. $data = Dever::db('area/village')->getAll(array('town_id' => $level_id));
  109. }
  110. if (!$data) {
  111. Dever::alert('error');
  112. }
  113. if ($level_search || $level_num > 1) {
  114. array_unshift($data, $default);
  115. }
  116. $result['level_total'] = $level_total;
  117. $result['list'] = $data;
  118. return $result;
  119. }
  120. }