Area.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. $role = Dever::input('role');
  73. # 四级联动
  74. if ($level_num == 1) {
  75. $data = Dever::db('area/province')->getAll();
  76. } elseif ($level_num == 2) {
  77. $where = array('province_id' => $level_id);
  78. if (isset($city_level)) {
  79. $where['level_id'] = $city_level;
  80. }
  81. if ($role == 2) {
  82. $where['status'] = 1;
  83. }
  84. $data = Dever::db('area/city')->getAll($where);
  85. } elseif ($level_num == 3) {
  86. $where = array('city_id' => $level_id);
  87. if (isset($county_level)) {
  88. $where['level'] = $county_level;
  89. }
  90. if ($role == 3) {
  91. $where['status'] = 1;
  92. }
  93. $data = Dever::db('area/county')->getAll($where);
  94. /*
  95. if (isset($town_level)) {
  96. foreach ($data as $k => $v) {
  97. $where = array('county_id' => $v['value']);
  98. $where['type'] = $town_level;
  99. $town = Dever::db('area/town')->getTotal($where);
  100. if ($town <= 0) {
  101. unset($data[$k]);
  102. }
  103. }
  104. }*/
  105. } elseif ($level_num == 4) {
  106. $where = array('county_id' => $level_id);
  107. if (isset($town_level)) {
  108. $where['type'] = $town_level;
  109. }
  110. if ($role == 4) {
  111. $where['status'] = 1;
  112. }
  113. $data = Dever::db('area/town')->getAll($where);
  114. } else {
  115. $data = Dever::db('area/village')->getAll(array('town_id' => $level_id));
  116. }
  117. if (!$data) {
  118. $data[] = array('value' => -1, 'name' => '无法代理');
  119. //Dever::alert('error');
  120. }
  121. if ($level_search || $level_num > 1) {
  122. array_unshift($data, $default);
  123. }
  124. $result['level_total'] = $level_total;
  125. $result['list'] = $data;
  126. return $result;
  127. }
  128. }