Area.php 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. */
  21. class Area extends Base
  22. {
  23. /**
  24. * @Apidoc\Title("获取地址库数据")
  25. * @Apidoc\Desc("获取地址库数据")
  26. * @Apidoc\Method("GET")
  27. * @Apidoc\Author("HG")
  28. * @Apidoc\Tag("地址库")
  29. * @Apidoc\Query("level", type="int",require=false, desc="查询等级(0全部,1精确到省,2精确到市,3精确到县区,4精确到街道)")
  30. * @Apidoc\Returned("name", type="string", desc="简称")
  31. * @Apidoc\Returned("level", type="int", desc="等级(1省,2市,3区,4道)")
  32. * @Apidoc\Returned("code", type="int", desc="编码")
  33. * @Apidoc\Returned("lng", type="string", desc="经度")
  34. * @Apidoc\Returned("lat", type="string", desc="纬度")
  35. * @Apidoc\Returned("children", type="array", desc="下级(数据字段同上)")
  36. */
  37. public function getAreaTree()
  38. {
  39. $level = input('level',3);
  40. if($level){
  41. $all_area = ChinaArea::where('level','<=',$level)->select();
  42. }else{
  43. $all_area = ChinaArea::where('level','>',0)->order('level asc,sort desc,id asc')->select();
  44. }
  45. $this->success('ok',['list'=>make_tree($all_area)]);
  46. }
  47. /**
  48. * @Apidoc\Title("获取地址库ID获取下一级")
  49. * @Apidoc\Desc("获取地址库ID获取下一级")
  50. * @Apidoc\Method("GET")
  51. * @Apidoc\Author("HG")
  52. * @Apidoc\Tag("获取下一级")
  53. * @Apidoc\Query("id", type="int",require=false, desc="数据表地址记录id")
  54. * @Apidoc\Returned("name", type="string", desc="名称")
  55. * @Apidoc\Returned("short_name", type="string", desc="简称")
  56. * @Apidoc\Returned("level", type="int", desc="等级(1省,2市,3区,4道)")
  57. * @Apidoc\Returned("code", type="int", desc="编码")
  58. * @Apidoc\Returned("lng", type="string", desc="经度")
  59. * @Apidoc\Returned("lat", type="string", desc="纬度")
  60. * @Apidoc\Returned("children", type="array", desc="下级(数据字段同上)")
  61. */
  62. public function getAreaChildrenByID()
  63. {
  64. $id = input('id');
  65. $list = ChinaArea::where('pid',$id)->select()->toArray();
  66. $this->success('ok',['list'=>$list]);
  67. }
  68. /**
  69. * @Apidoc\Title("获取市级地址")
  70. * @Apidoc\Desc("获取市级地址")
  71. * @Apidoc\Method("GET")
  72. * @Apidoc\Author("HG")
  73. * @Apidoc\Tag("获取下一级")
  74. * @Apidoc\Query("name",type="string",require=false,desc="市名(或拼音)模糊查询")
  75. * @Apidoc\Returned("name", type="string", desc="名称")
  76. * @Apidoc\Returned("short_name", type="string", desc="简称")
  77. */
  78. public function getCityByName()
  79. {
  80. $where = [];
  81. $where[] = ['level','=',2];
  82. if(input('name')) $where[] = ['name|pinyin','like','%'.input('name').'%'];
  83. $all_city = ChinaArea::field('id,name,short_name,first')->where($where)->order('sort desc,id asc')->select();
  84. $this->success('ok',['list'=>$all_city]);
  85. }
  86. public function getAllCity()
  87. {
  88. $list = ChinaArea::getAllCity();
  89. $this->success('ok',['list'=>$list]);
  90. }
  91. }