Area.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. if ($level_id < 0) {
  55. Dever::alert('error');
  56. }
  57. # 是否是搜索列表页
  58. $level_search = Dever::input('level_search');
  59. if ($level_search) {
  60. $default = $this->search_default;
  61. if ($level_num == 1) {
  62. $default['name'] = '省份选择';
  63. } elseif ($level_num == 2) {
  64. $default['name'] = '城市选择';
  65. } elseif ($level_num == 3) {
  66. $default['name'] = '县区选择';
  67. } elseif ($level_num == 4) {
  68. $default['name'] = '街道选择';
  69. } else {
  70. $default['name'] = '社区选择';
  71. }
  72. } else {
  73. $default = $this->default;
  74. }
  75. $role = Dever::input('role');
  76. # 四级联动
  77. if ($level_num == 1) {
  78. $data = Dever::db('area/province')->getAll();
  79. } elseif ($level_num == 2) {
  80. $where = array('province_id' => $level_id);
  81. if (isset($city_level)) {
  82. $where['level_id'] = $city_level;
  83. }
  84. if ($role == 2) {
  85. $where['status'] = 1;
  86. }
  87. $data = Dever::db('area/city')->getAll($where);
  88. } elseif ($level_num == 3) {
  89. $where = array('city_id' => $level_id);
  90. if (isset($county_level)) {
  91. $where['level'] = $county_level;
  92. }
  93. if ($role == 3) {
  94. $where['status'] = 1;
  95. }
  96. $data = Dever::db('area/county')->getAll($where);
  97. /*
  98. if (isset($town_level)) {
  99. foreach ($data as $k => $v) {
  100. $where = array('county_id' => $v['value']);
  101. $where['type'] = $town_level;
  102. $town = Dever::db('area/town')->getTotal($where);
  103. if ($town <= 0) {
  104. unset($data[$k]);
  105. }
  106. }
  107. }*/
  108. } elseif ($level_num == 4) {
  109. $where = array('county_id' => $level_id);
  110. if (isset($town_level)) {
  111. $where['type'] = $town_level;
  112. }
  113. if ($role == 4) {
  114. $where['status'] = 1;
  115. }
  116. $data = Dever::db('area/town')->getAll($where);
  117. } else {
  118. $data = Dever::db('area/village')->getAll(array('town_id' => $level_id));
  119. }
  120. if (!$data) {
  121. $data[] = array('value' => -1, 'name' => '无法代理');
  122. //Dever::alert('error');
  123. }
  124. if ($level_search || $level_num > 1) {
  125. array_unshift($data, $default);
  126. }
  127. $result['level_total'] = $level_total;
  128. $result['list'] = $data;
  129. return $result;
  130. }
  131. }