正在显示
3 个修改的文件
包含
77 行增加
和
10 行删除
@@ -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 太大无法显示。
-
请 注册 或 登录 后发表评论