ListController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace app\backend\modules\area\controllers;
  3. use app\backend\modules\area\models\Area;
  4. use app\common\components\BaseController;
  5. use app\common\models\Street;
  6. use Illuminate\Database\Eloquent\Collection;
  7. /**
  8. * Created by PhpStorm.
  9. * Author: 芸众商城 www.yunzshop.com
  10. * Date: 2018/5/21
  11. * Time: 下午17:34
  12. */
  13. class ListController extends BaseController
  14. {
  15. public function openStreet()
  16. {
  17. $is_street = \Setting::get("shop.trade")['is_street']?1:0;
  18. return $this->successJson('street', ['is_street' => $is_street]);
  19. }
  20. public function index()
  21. {
  22. if($this->isStreet(request('parent_id'))){
  23. $areas = Street::where('parentid',request('parent_id'))->get();
  24. }else{
  25. $areas = Area::where('parentid',request('parent_id'))->get();
  26. }
  27. return $this->successJson('成功', $this->formatAreas($areas));
  28. }
  29. private function isStreet($areaId){
  30. if($areaId == 0){
  31. return false;
  32. }
  33. $area = Area::find(request('parent_id'));
  34. if(!$area){
  35. return false;
  36. }
  37. return $area->level == 3;
  38. }
  39. protected function formatAreas(Collection $areas)
  40. {
  41. if($areas->isEmpty()){
  42. return $areas;
  43. }
  44. // 不是子节点
  45. if (!$areas->first()->isLeaf()) {
  46. $areas->each(function (Area $area) {
  47. $area['children'] = [];
  48. });
  49. }
  50. return $areas;
  51. }
  52. public function init(){
  53. list($provinceId,$cityId,$districtId,$street_id) = explode(',',request('area_ids'));
  54. $province = Area::where('parentid',0)->get();
  55. $cities = Area::where('parentid',$provinceId)->get();
  56. $districts = Area::where('parentid',$cityId)->get();
  57. $streets = Street::where('parentid',$districtId)->get();
  58. $province = $this->formatAreas($province);
  59. $province->where('id',$provinceId)->first()->children = $cities;
  60. $cities->where('id',$cityId)->first()->children = $districts;
  61. $districts->where('id',$districtId)->first()->children = $streets;
  62. return $this->successJson('成功', $province);
  63. }
  64. }