作者 xwp
1 个管道 的构建 通过 耗费 1 秒

最新逻辑

@@ -3,7 +3,9 @@ @@ -3,7 +3,9 @@
3 namespace app\api\controller; 3 namespace app\api\controller;
4 4
5 use app\common\controller\Api; 5 use app\common\controller\Api;
  6 +use fast\Tree;
6 use think\Config; 7 use think\Config;
  8 +use think\Db;
7 use WeMini\Template; 9 use WeMini\Template;
8 10
9 /** 11 /**
@@ -30,10 +32,38 @@ class Course extends Api @@ -30,10 +32,38 @@ class Course extends Api
30 $category = new \app\common\model\Category(); 32 $category = new \app\common\model\Category();
31 $category = $category->where([])->select(); 33 $category = $category->where([])->select();
32 34
  35 + $tree = Tree::instance();
  36 + $tree->init($category, 'pid');
  37 + $category = $tree->getTreeArray(0);
  38 +
33 $this->success('请求成功',$category); 39 $this->success('请求成功',$category);
34 } 40 }
35 41
36 /** 42 /**
  43 + * 获得区域
  44 + *
  45 + * @ApiTitle (获得区域)
  46 + * @ApiSummary (获得区域)
  47 + * @ApiMethod (POST)
  48 + * @ApiReturnParams (name="code", type="integer", required=true, sample="0")
  49 + * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
  50 + * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回")
  51 + * @ApiReturn ({'code':'1','msg':'返回成功'})
  52 + */
  53 + public function get_area()
  54 + {
  55 + $parentId = $this->request->request('parentId');
  56 +
  57 + $area = DB::table('fa_area')->where([])->field(['id','parentId','areaName'])->select();
  58 +
  59 + $tree = Tree::instance();
  60 + $tree->init($area, 'parentId');
  61 + $area = $tree->getTreeArray($parentId);
  62 +
  63 + $this->success('请求成功',$area);
  64 + }
  65 +
  66 + /**
37 * 获得课程等级 67 * 获得课程等级
38 * 68 *
39 * @ApiTitle (获得课程等级) 69 * @ApiTitle (获得课程等级)
@@ -20,7 +20,8 @@ class Store extends Api @@ -20,7 +20,8 @@ class Store extends Api
20 * @ApiMethod (POST) 20 * @ApiMethod (POST)
21 * @ApiParams (name="lng", type="string", required=true, description="lng") 21 * @ApiParams (name="lng", type="string", required=true, description="lng")
22 * @ApiParams (name="lat", type="string", required=true, description="lat") 22 * @ApiParams (name="lat", type="string", required=true, description="lat")
23 - * @ApiParams (name="distance", type="string", required=true, description="距离") 23 + * @ApiParams (name="value", type="string", required=true, description="地区值")
  24 + * @ApiParams (name="type", type="string", required=true, description="地区类型")
24 * @ApiReturnParams (name="code", type="integer", required=true, sample="0") 25 * @ApiReturnParams (name="code", type="integer", required=true, sample="0")
25 * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") 26 * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
26 * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回") 27 * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回")
@@ -30,17 +31,12 @@ class Store extends Api @@ -30,17 +31,12 @@ class Store extends Api
30 { 31 {
31 $lng = $this->request->request('lng'); 32 $lng = $this->request->request('lng');
32 $lat = $this->request->request('lat'); 33 $lat = $this->request->request('lat');
33 - $distance = $this->request->request('distance'); 34 + $value = $this->request->request('value');
  35 + $type = $this->request->request('type');
34 36
35 - if(empty($distance)){  
36 - $distance = 10;  
37 - }  
38 $where = []; 37 $where = [];
39 - if(!empty($lng)&&!empty($lat)){  
40 - $four_point = $this->returnSquarePoint($lng,$lat,$distance);  
41 - $this->success('请求成功',$four_point);  
42 - $where['lng'] = ['between',[$four_point['left-top']['lng'],$four_point['right-top']['lng']]];  
43 - $where['lat'] = ['between',[$four_point['left-bottom']['lat'],$four_point['left-top']['lat']]]; 38 + if(!empty($value)&&!empty($type)){
  39 + $where[$type] = $value;
44 } 40 }
45 41
46 $store = new \app\admin\model\Store(); 42 $store = new \app\admin\model\Store();
@@ -53,12 +49,53 @@ class Store extends Api @@ -53,12 +49,53 @@ class Store extends Api
53 } 49 }
54 $k['banner'] = $banner; 50 $k['banner'] = $banner;
55 $k['cover'] = cdnurl($k['cover'],true); 51 $k['cover'] = cdnurl($k['cover'],true);
  52 + $k['distance'] = $this->GetDistance($lat,$lng,$k['lat'],$k['lng']);
  53 + }
  54 +
  55 + if(!empty($store)){
  56 + //排序
  57 + foreach ($store as $key => $row) {
  58 + $distance[$key] = $row['distance'];
  59 + }
  60 + array_multisort($distance, SORT_ASC, $store);
56 } 61 }
57 62
58 $this->success('请求成功',$store); 63 $this->success('请求成功',$store);
59 } 64 }
60 65
61 /** 66 /**
  67 + * 计算两组经纬度坐标 之间的距离
  68 + * $lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km);
  69 + *
  70 + * @param $lat1
  71 + * @param $lng1
  72 + * @param $lat2
  73 + * @param $lng2
  74 + * @param int $len_type
  75 + * @param int $decimal
  76 + * @return false|float
  77 + */
  78 + private function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 2, $decimal = 2)
  79 + {
  80 + $EARTH_RADIUS = 6378.137;//地球半径
  81 + $PI = 3.1415926;
  82 +
  83 + $radLat1 = $lat1 * $PI / 180.0;
  84 + $radLat2 = $lat2 * $PI / 180.0;
  85 + $a = $radLat1 - $radLat2;
  86 + $b = ($lng1 * $PI / 180.0) - ($lng2 * $PI / 180.0);
  87 + $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
  88 + $s = $s * $EARTH_RADIUS;
  89 + $s = round($s * 1000);
  90 + if ($len_type > 1)
  91 + {
  92 + $s /= 1000;
  93 + }
  94 + return round($s, $decimal);
  95 + }
  96 +
  97 +
  98 + /**
62 * 获得门店 99 * 获得门店
63 * 100 *
64 * @ApiTitle (获得门店) 101 * @ApiTitle (获得门店)
此 diff 太大无法显示。