Area.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkAdmin
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://demo.thinkadmin.top
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( https://mit-license.org )
  10. // +----------------------------------------------------------------------
  11. // | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin
  12. // | github 代码仓库:https://github.com/zoujingli/ThinkAdmin
  13. // +----------------------------------------------------------------------
  14. namespace app\api\controller;
  15. use app\common\model\ChinaArea;
  16. use think\Db;
  17. use hg\apidoc\annotation as Apidoc;
  18. /**
  19. * @Apidoc\Title("地址库")
  20. * @Apidoc\Group("api")
  21. */
  22. class Area extends Base
  23. {
  24. /**
  25. * @Apidoc\Title("获取地址库数据")
  26. * @Apidoc\Desc("获取地址库数据")
  27. * @Apidoc\Method("GET")
  28. * @Apidoc\Author("HG")
  29. * @Apidoc\Tag("地址库")
  30. * @Apidoc\Query("level", type="int",require=false, desc="查询等级(0全部,1精确到省,2精确到市,3精确到县区,4精确到街道)")
  31. * @Apidoc\Returned("name", type="string", desc="简称")
  32. * @Apidoc\Returned("level", type="int", desc="等级(1省,2市,3区,4道)")
  33. * @Apidoc\Returned("code", type="int", desc="编码")
  34. * @Apidoc\Returned("lng", type="string", desc="经度")
  35. * @Apidoc\Returned("lat", type="string", desc="纬度")
  36. * @Apidoc\Returned("children", type="array", desc="下级(数据字段同上)")
  37. */
  38. public function getAreaTree()
  39. {
  40. $level = input('level',3);
  41. if($level){
  42. $all_area = ChinaArea::where('level','<=',$level)->select();
  43. }else{
  44. $all_area = ChinaArea::where('level','>',0)->order('level asc,sort desc,id asc')->select();
  45. }
  46. $this->success('ok',['list'=>make_tree($all_area)]);
  47. }
  48. /**
  49. * @Apidoc\Title("获取地址库ID获取下一级")
  50. * @Apidoc\Desc("获取地址库ID获取下一级")
  51. * @Apidoc\Method("GET")
  52. * @Apidoc\Author("HG")
  53. * @Apidoc\Tag("获取下一级")
  54. * @Apidoc\Query("id", type="int",require=false, desc="数据表地址记录id")
  55. * @Apidoc\Returned("name", type="string", desc="名称")
  56. * @Apidoc\Returned("short_name", type="string", desc="简称")
  57. * @Apidoc\Returned("level", type="int", desc="等级(1省,2市,3区,4道)")
  58. * @Apidoc\Returned("code", type="int", desc="编码")
  59. * @Apidoc\Returned("lng", type="string", desc="经度")
  60. * @Apidoc\Returned("lat", type="string", desc="纬度")
  61. * @Apidoc\Returned("children", type="array", desc="下级(数据字段同上)")
  62. */
  63. public function getAreaChildrenByID()
  64. {
  65. $id = input('id');
  66. $list = ChinaArea::where('pid',$id)->select()->toArray();
  67. $this->success('ok',['list'=>$list]);
  68. }
  69. /**
  70. * @Apidoc\Title("获取市级地址")
  71. * @Apidoc\Desc("获取市级地址")
  72. * @Apidoc\Method("GET")
  73. * @Apidoc\Author("HG")
  74. * @Apidoc\Tag("获取下一级")
  75. * @Apidoc\Query("name",type="string",require=false,desc="市名(或拼音)模糊查询")
  76. * @Apidoc\Returned("name", type="string", desc="名称")
  77. * @Apidoc\Returned("short_name", type="string", desc="简称")
  78. */
  79. public function getCityByName()
  80. {
  81. $where = [];
  82. $where[] = ['level','=',2];
  83. if(input('name')) $where[] = ['name|pinyin','like','%'.input('name').'%'];
  84. $all_city = ChinaArea::field('id,name,short_name,first')->where($where)->order('sort desc,id asc')->select();
  85. $this->success('ok',['list'=>$all_city]);
  86. }
  87. public function getAllCity()
  88. {
  89. $list = ChinaArea::getAllCity();
  90. $this->success('ok',['list'=>$list]);
  91. }
  92. }