where('is_delete',0) ->where($s1) ->where("shopLogo is not null") ->count(); // $lists = $model->where('is_delete',0) // ->where($s) // ->page($data['page'], $data['size']) // ->order('lstore_id desc') // ->select(); $size = $data['page_size']; $page = ($data['page_no']-1)*$data['page_size']; // $sql = "SELECT *, ST_Distance_Sphere(POINT(".$data['longitude'].",".$data['latitude']."),POINT(longitude, latitude)) AS distance // FROM ls_local_store where is_delete = 0 $s // ORDER BY distance limit $page,$size"; $sql = "SELECT * FROM ls_local_store where is_delete = 0 and shopLogo is not null $s ORDER BY lstore_id asc limit ".$page.",".$size; // var_dump($sql); $lists = Db::query($sql); foreach($lists as $key=>$value){ $lists[$key]['distance'] = round($this->distance($data['latitude'], $data['longitude'], $value['latitude'], $value['longitude'])/1000,1)."公里"; $lists[$key]['store_nickname'] = $value["shopName"]; } $data = [ 'list' => $lists, 'page' => $data['page_no'], 'size' => $data['page_size'], 'count' => $count, 'more' => is_more($count, $data['page_no'], $data['page_size']) ]; // var_dump($data); return $data; } public function getLocalOrderList($data){ $count = Db::name("local_store_order") ->where("lstore_id",$data['lstore_id']) ->where("pay_shop_type",1) ->where('state',1) ->count(); // $lists = $model->where('is_delete',0) // ->where($s) // ->page($data['page'], $data['size']) // ->order('lstore_id desc') // ->select(); $size = $data['page_size']; $page = ($data['page_no']-1)*$data['page_size']; // $sql = "SELECT *, ST_Distance_Sphere(POINT(".$data['longitude'].",".$data['latitude']."),POINT(longitude, latitude)) AS distance // FROM ls_local_store where is_delete = 0 $s // ORDER BY distance limit $page,$size"; $sql = "SELECT * FROM ls_local_store_order where state = 1 and pay_shop_type = 1 and lstore_id = ".$data['lstore_id']." ORDER BY lstore_id desc limit ".$page.",".$size; // var_dump($sql); $lists = Db::query($sql); $data = [ 'list' => $lists, 'page' => $data['page_no'], 'size' => $data['page_size'], 'count' => $count, 'more' => is_more($count, $data['page_no'], $data['page_size']) ]; // var_dump($data); return $data; } public function getLocalUserOrderList($data){ $count = Db::name("local_store_order") ->where("user_id",$data['user_id']) ->where("pay_shop_type",1) ->where('state',1) ->count(); $size = $data['page_size']; $page = ($data['page_no']-1)*$data['page_size']; $sql = "SELECT * FROM ls_local_store_order where state = 1 and pay_shop_type = 1 and lstore_id = ".$data['lstore_id']." ORDER BY lstore_id desc limit ".$page.",".$size; $lists = Db::query($sql); $data = [ 'list' => $lists, 'page' => $data['page_no'], 'size' => $data['page_size'], 'count' => $count, 'more' => is_more($count, $data['page_no'], $data['page_size']) ]; return $data; } function distance($lat1, $lon1, $lat2, $lon2) { $earthRadius = 6371000; // 地球平均半径,单位为米 // 将经纬度转换为弧度 $lat1 = deg2rad($lat1); $lon1 = deg2rad($lon1); $lat2 = deg2rad($lat2); $lon2 = deg2rad($lon2); // 使用haversine公式计算距离 $diffLat = $lat2-$lat1; $diffLon = $lon2-$lon1; $a = sin($diffLat / 2) * sin($diffLat / 2) + cos($lat1) * cos($lat2) * sin($diffLon / 2) * sin($diffLon / 2); $c = 2 * atan2(sqrt($a), sqrt(1-$a)); $distance = $earthRadius * $c; return $distance; } }