xiaogang vor 4 Jahren
Ursprung
Commit
7644fea71e

+ 9 - 1
app/Http/Controllers/Api/HomeController.php

xqd xqd xqd xqd
@@ -6,7 +6,9 @@ namespace App\Http\Controllers\Api;
 
 use App\Services\GeohashService;
 use App\Services\HomeService;
+use App\Services\RedisService;
 use http\Env\Response;
+use Illuminate\Filesystem\Cache;
 use Illuminate\Http\Request;
 use PHPUnit\Util\Exception;
 
@@ -22,6 +24,7 @@ class HomeController extends Controller
      * 获取位置信息,经纬度
      */
     public function get_location(Request $request){
+        dd(RedisService::redis()->get('user_location_'.$request->uniqueID));
         try {
             if(!isset($request->latitude) || $request->latitude==""){
                 throw new Exception("参数错误");
@@ -29,9 +32,12 @@ class HomeController extends Controller
             if(!isset($request->longitude) || $request->longitude==""){
                 throw new Exception("参数错误");
             }
+            if(!isset($request->uniqueID) || $request->uniqueID==""){
+                throw new Exception("参数错误");
+            }
             $user = auth('api')->user();
             if(!$user){
-
+                RedisService::redis()->SETEX('user_location_' . $request->uniqueID, 600, json_encode(['latitude' => $request->latitude, 'longitude' => $request->longitude]));
             }
         }catch (\Exception $exception){
             return $this->response->errorForbidden($exception->getMessage());
@@ -50,6 +56,8 @@ class HomeController extends Controller
             $param['nearby'] = $request->post('nearby',1);//附近
             $param['online'] = $request->post('online',1);//在线
             $param['new'] = $request->post('new',1);//新人
+            $param['latitude'] = $request->post('latitude','30.663436');//纬度
+            $param['longitude'] = $request->post('longitude','104.072224');//经度
             $res = $this->homeService->get_list($param);
         }catch (\Exception $exception){
             return $this->response->errorForbidden($exception->getMessage());

+ 52 - 0
app/Http/Controllers/Api/TestController.php

xqd
@@ -0,0 +1,52 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Models\User;
+use App\Models\UserInfoModel;
+
+class TestController
+{
+    public function creat_user(){
+        $total = 1000;
+
+        for ($i=0;$i<$total;$i++){
+            $ins = array();
+            $ins['mobile'] = '199'.rand(10000000,99999999);
+            $ins['password'] = '123456';
+            $ins['pid'] = 0;
+            $ins['sex'] = rand(1,2);
+            $ins['is_vip'] = rand(0,1);
+            $ins['is_auth'] = 1;
+            $ins['ycode'] = create_invite_code();
+            $ins['latitude'] = '30.'.rand(100000,999999);//30.720653
+            $ins['longitude'] = '103.'.rand(100000,999999);//103.720653
+            $ins['online'] = rand(0,1);
+            $ins['notice_status'] = 1;
+            $user = User::query()->firstOrCreate($ins);
+            $ins_info = array();
+            $ins_info['user_id'] = $user->id;
+            $ins_info['avatar'] = 'https://zhengda.oss-accelerate.aliyuncs.com/chengluApp/image_picker977203985037292577.jpg';
+            $ins_info['nickname'] = '用户'.$user->id;
+            $ins_info['birthday'] = rand(1980,2010).'-'.rand(1,12).'-'.rand(1,28);
+            $ins_info['height'] = rand(140,190);
+            $ins_info['weight'] = rand(30,100);
+            $ins_info['work'] = ['学生','老师','程序员','工程师'][rand(0,3)];
+            $ins_info['info'] = '这是个人介绍';
+            $ins_info['area'] = '成都市';
+            $ins_info['area_code'] = '510100';
+            $ins_info['figure'] = '健美';
+            $ins_info['feeling'] = '单身';
+            $ins_info['education'] = '本科';
+            $ins_info['income'] = '10-30W';
+            $ins_info['hobby'] = '火锅,音乐,k歌,蹦迪';
+            $ins_info['drink'] = '饮酒';
+            $ins_info['photo'] = json_encode(['https://zhengda.oss-accelerate.aliyuncs.com/chengluApp/image_picker977203985037292577.jpg','https://zhengda.oss-cn-chengdu.aliyuncs.com/chengluApp/img/%E4%B8%8B%E8%BD%BD.jpg','https://zhengda.oss-cn-chengdu.aliyuncs.com/chengluApp/img/u%3D3564444755%2C3599870531%26fm%3D26%26gp%3D0.jpg']);
+            $ins_info['video'] = json_encode(['https://zhengda.oss-cn-chengdu.aliyuncs.com/chengluApp/a69ce78c4898a7bcf13138bbea71608f.mp4']);
+            UserInfoModel::query()->create($ins_info);
+        }
+        echo  'success';
+    }
+}

+ 7 - 1
app/Services/HomeService.php

xqd xqd
@@ -5,6 +5,7 @@ namespace App\Services;
 
 
 use App\Models\User;
+use Illuminate\Support\Facades\DB;
 
 class HomeService
 {
@@ -13,16 +14,21 @@ class HomeService
      * @param $param
      */
     public function get_list($param){
+
+       // DB::select();
+
         $query = User::query()
             ->leftJoin("users_info",'users.id','=','users_info.user_id')
             ->select(['users.id','users.is_vip','users.tencent_im_user_id','users.sex','users.is_auth','users.latitude','users.longitude','users.online','users_info.avatar','users_info.nickname','users_info.area','users_info.birthday','users_info.height','users_info.weight'])
+            ->addSelect(DB::raw("acos(cos(" .$param['latitude'] . "*pi()/180)*cos(cl_users.latitude*pi()/180)*cos(" . $param['longitude'] . "*pi()/180-cl_users.longitude*pi()/180)+sin(" . $param['latitude'] . "*pi()/180)*sin(cl_users.latitude * pi()/180)) * 6367000 AS distance"))
+            ->orderBy('distance','ASC')
             ->paginate(request('perPage',20));
         $query = $query->toArray();
         foreach ($query['data'] as $k=>$v){
                 $query['data'][$k]['age'] =!empty($v['birthday'])? birthday($v['birthday']):0;
 
                 //计算距离
-                $query['data'][$k]['distance'] =  0;
+               // $query['data'][$k]['distance'] =  0;
         }
         return $query;
     }

+ 1 - 0
routes/api.php

xqd
@@ -165,6 +165,7 @@ $api->version('v1', [
     */
     $api->any('/wx_notify', 'PayNotifyController@wx_notify')->name('wx_notify');
     $api->any('/ali_notify', 'PayNotifyController@ali_notify')->name('ali_notify');
+    $api->any('/creat_user', 'TestController@creat_user')->name('creat_user');
 
 
 });