Addr.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use think\facade\Db;use think\facade\Validate;
  5. class Addr extends BaseController
  6. {
  7. public function province(){
  8. $list=Db::name("province")->select();
  9. return app_show(0,"获取成功",$list);
  10. }
  11. public function area(){
  12. $post=$this->request->post();
  13. $city_code = isset($post['code'])&& $post['code']!="" ? $post['code']:"";
  14. if($city_code==""){
  15. return error_show(1002,"市级未选择");
  16. }
  17. $city =Db::name("city")->where(['city_code'=>$city_code])->find();
  18. if(empty($city)){
  19. return error_show(1003,"参数code非法数据");
  20. }
  21. $list=Db::name("area")->where(['city_code'=>$city_code])->select();
  22. return app_show(0,"获取成功",$list);
  23. }
  24. public function city(){
  25. $post=$this->request->post();
  26. $province_code = isset($post['code'])&& $post['code']!="" ? $post['code']:"";
  27. if($province_code==""){
  28. return error_show(1002,"省级未选择");
  29. }
  30. $provice = Db::name("province")->where(['province_code'=>$province_code])->find();
  31. if(empty($provice)){
  32. return error_show(1003,"参数code非法数据");
  33. }
  34. $list=Db::name("city")->where(['province_code'=>$province_code])->select();
  35. return app_show(0,"获取成功",$list);
  36. }
  37. public function all(){
  38. $post=$this->request->post();
  39. $city_code = isset($post['code'])&& $post['code']!="" ? $post['code']:"";
  40. if($city_code==""){
  41. return error_show(1002,"区级Code未选择");
  42. }
  43. $data=[];
  44. $area =Db::name("area")->where(['area_code'=>$city_code])->field("name,area_code as code,city_code")->find();
  45. if($area==false){
  46. return error_show(1003,"未找到区级数据");
  47. }
  48. $data["area"]=$area;
  49. $city=Db::name("city")->where(['city_code'=>$area['city_code']])->field("name,city_code as code,province_code")->find();
  50. if($city==false){
  51. $data["city"]=[];
  52. }
  53. $data['city']=$city??[];
  54. $province=Db::name("province")->where(['province_code'=>$city['province_code']])->field("name,province_code as code")->find();
  55. $data['province']=$province??[];
  56. return app_show(0,"获取成功",$data);
  57. }
  58. public function query(){
  59. $post=$this->request->only(["code"=>'',"name"=>"","level"=>"1"],"post","trim");
  60. $valid =Validate::rule(["code|查询编号"=>"max:255","name|名称"=>"max:255","level"=>"require|max:255|in:1,2,3"]);
  61. if($valid->check($post)==false)return error_show(1004,$valid->getError());
  62. $where=[];
  63. if($post['code']!='') $where[]=["parent_code","=",$post['code']];
  64. if($post['name']!='') $where[]=["search_name","like","%{$post['name']}%"];
  65. if($post['level']==1){
  66. $model = Db::name("province")->field("name,province_code code,0 parent_code,name search_name")->buildSql();
  67. }
  68. if($post['level']==2){
  69. $model = Db::name("city")->alias("a")
  70. ->leftJoin("province b","a.province_code=b.province_code")
  71. ->field("a.name,city_code code,a.province_code parent_code,CONCAT(b.name,a.name) search_name")->buildSql();
  72. }
  73. if($post['level']==3){
  74. $model = Db::name("area")->alias("a")
  75. ->leftJoin("city b","a.city_code=b.city_code")
  76. ->leftJoin("province c","c.province_code=b.province_code")
  77. ->field("a.name,a.area_code code,a.city_code parent_code,CONCAT(c.name,b.name,a.name) search_name")
  78. ->buildSql();
  79. }
  80. // $count = Db::table($model . ' f')->where($where)->count();
  81. $data = Db::table($model . ' f')->field("f.*,'' as info,{$post['level']} level")->where($where)->withAttr
  82. ("info",function ($val,$data){
  83. $trmp =[];
  84. if($data['level']==3){
  85. $trmp['area']=["code"=>$data['code'],"name"=>$data['name']];
  86. $city = Db::name("city")->where(['city_code'=>$data['parent_code']])->field("name,city_code,province_code")->findOrEmpty();
  87. $trmp['city']=["code"=>$city['city_code']??"","name"=>$city['name']??""];
  88. $province=Db::name("province")->where(['province_code'=>$city['province_code']])->field("name,province_code")->findOrEmpty();
  89. $trmp['province']=["code"=>$province['province_code']??"","name"=>$province['name']??""];
  90. }
  91. if($data['level']==2){
  92. $province=Db::name("province")->where(['province_code'=>$data['parent_code']])->field("name,province_code")->findOrEmpty();
  93. $trmp['province']=["code"=>$province['province_code']??"","name"=>$province['name']??""];
  94. $trmp['area']=[];
  95. $trmp['city']=["code"=>$data['code'],"name"=>$data['name']];
  96. }
  97. if($data['level']==1){
  98. $trmp['area']=[];
  99. $trmp['city']=[];
  100. $trmp['province']=["code"=>$data['code'],"name"=>$data['name']];
  101. }
  102. return $trmp;
  103. })->select();
  104. return app_show(0,"获取成功",$data);
  105. }
  106. }