<?php namespace app\api\controller; use app\api\model\RiderOrder; use app\common\controller\Api; /** * 骑手 */ class Rider extends Api { protected $noNeedRight = ['*']; // protected $noNeedLogin = ['*']; /** * @ApiTitle (骑手订单页) * @ApiMethod (POST) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name=page, type=integer, required=true, description="页数") * @ApiParams (name=lat, type=integer, required=true, description="骑手纬度") * @ApiParams (name=lng, type=integer, required=true, description="骑手经度") * @ApiReturn ({ 'code':'1', 'msg':'返回成功' 'data': "total": 2, "per_page": 5, "current_page": 1, "last_page": 1, "data": [ { "id": 1, "distance": 111.263, 距离 "address": { "name": "1", 收件人 "phone": "13549059988", 电话号码 "detail": "阿松大", 地址 "address": "阿松大", 门牌号 }, "orderdetail": { "order_no": "LQ-16420622494781", 订单编号 "createtime_text": "" } } ] }) */ public function index() { $page = $this->request->post('page',1); $lat = $this->request->post('lat'); $lng = $this->request->post('lng'); if (!is_numeric($page)) $this->error('页数不合法'); if (!is_numeric($lat)) $this->error('纬度不合法'); if (!is_numeric($lng)) $this->error('经度不合法'); $model = new RiderOrder(); $EARTH=6378.137; //地球半径 $PI=3.14; //PI值 圆周率 $list = $model ->with(['address','orderdetail']) ->where('fa_rider_order.user_id',$this->auth->id) ->where('fa_rider_order.status','1') ->field('Round((2 * '.$EARTH.'* ASIN(SQRT(POW(SIN('.$PI.'*('.$lat.'-lat)/360),2) +COS('.$PI.'*'.$lat.'/180)* COS(lat * '.$PI.'/180) *POW(SIN('.$PI.'*('.$lng.'-lng)/360),2)))),3) as distance') ->order('distance') ->paginate(5,false,['page'=>$page]) ->each(function ($item,$key){ $item->getRelation('orderdetail')->visible(['order_no']); $item->getRelation('address')->visible(['name','phone','address','detail']); $item->visible(['orderdetail','address','distance','id']); }); $this->success('订单列表',$list); } }