Area.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace app\model;
  3. use think\Model;
  4. use think\Cache;
  5. class Area extends Model
  6. {
  7. protected $connection = 'mysql';
  8. protected $pk = 'id';
  9. protected $name = 'area';
  10. public static function getTree($pid = 0)
  11. {
  12. $arr = [];
  13. $data = self::field('id,area_name')->where(['area_parent_id' => $pid])
  14. ->select()->toArray();
  15. foreach ($data as $key => $vo) {
  16. $arr[$key]['id'] = $vo['id'];
  17. $arr[$key]['text'] = $vo['area_name'];
  18. $arr[$key]['children'] = self::getTree($vo["id"]);
  19. }
  20. return $arr;
  21. }
  22. public static function getpcTree($pid = 0)
  23. {
  24. $arr = [];
  25. $children = [];
  26. $data = self::field('id,area_name')->where(['area_parent_id' => $pid])
  27. ->select()->toArray();
  28. foreach ($data as $key => $vo) {
  29. $arr[$key]['value'] = $vo['area_name'];
  30. $arr[$key]['label'] = $vo['area_name'];
  31. $children = self::getpcTree($vo["id"]);
  32. if (!empty($children)) {
  33. $arr[$key]['children'] = $children;
  34. }
  35. }
  36. return $arr;
  37. }
  38. public static function getpcTreeCache()
  39. {
  40. $pcTree = cache('pcTree');
  41. if (empty($pcTree)) {
  42. $pcTree = self::getpcTree();
  43. cache('pcTree', $pcTree, 3600);
  44. }
  45. return $pcTree;
  46. }
  47. //通过地区的id取地区的名称
  48. public static function get_area_name($id)
  49. {
  50. $id = (int) $id;
  51. //加上空判断
  52. if (empty($id)) {
  53. return '';
  54. }
  55. $data = self::find($id);
  56. if (empty($data)) {
  57. return null;
  58. }
  59. return $data->area_name;
  60. }
  61. //通过地区的id取地区的名称
  62. public static function get_area_id($area_name)
  63. {
  64. if (!empty($area_name)) {
  65. $data = self::where('area_name', $area_name)->find();
  66. if (empty($data)) {
  67. return null;
  68. }
  69. return $data->id;
  70. }
  71. }
  72. //通过地区的id取地区上级id
  73. public static function get_pid($id)
  74. {
  75. $data = self::find($id);
  76. if (empty($data)) {
  77. return null;
  78. }
  79. return $data->area_parent_id;
  80. }
  81. //取省区
  82. public static function get_province()
  83. {
  84. $list = self::where(['area_parent_id' => 0, 'area_deep' => 1])
  85. ->select()->toArray();
  86. return $list;
  87. }
  88. public static function get_province_byname()
  89. {
  90. $listdata = self::get_province();
  91. foreach ($listdata as $vo) {
  92. $data[$vo['id']] = $vo['area_name'];
  93. }
  94. return $data;
  95. }
  96. public static function get_child($pid)
  97. {
  98. $list = self::where(['area_parent_id' => $pid])
  99. ->select()->toArray();
  100. return $list;
  101. }
  102. public static function get_child_byname($pid)
  103. {
  104. if (!empty($pid)) {
  105. $listdata = self::get_child($pid);
  106. if (!empty($listdata)) {
  107. foreach ($listdata as $vo) {
  108. $data[$vo['id']] = $vo['area_name'];
  109. }
  110. }
  111. } else {
  112. $data[0] = "";
  113. }
  114. return $data;
  115. }
  116. }