作者 李忠强

更新

... ... @@ -20,7 +20,7 @@ use think\exception\PDOException;
*/
class Order extends Api
{
// protected $noNeedLogin = ['*'];
protected $noNeedLogin = ['friendPay'];
protected $noNeedRight = ['*'];
/**
... ... @@ -213,6 +213,55 @@ class Order extends Api
}
/**
* @ApiTitle (找人付页面)
* @ApiMethod (POST)
* @ApiParams (name="order_id", type="integer", required=true, description="订单id")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
'data':
detail:
pay_price:实付款
"goods": [
{
"goods_id": 22, 商品id
"goods_name": "Mate 20 华为 HUAWEI ", 商品名称
"spec_type": "20", 20多规格10单规格
"sku_id": 106, 规格id
"sku_price": "6099.00", 规格单价
"sku_name": "极光色 8GB+128GB", 规格名称
"number": 2, 数量
"image_text": "", 图片
},
{
"goods_id": 23,
"goods_name": "MacBook Pro 13寸",
"spec_type": "20",
"sku_id": 66,
"sku_price": "12688.00",
"sku_name": "天空灰",
"number": 2,
"image_text": "",
}
],
"user": 用户信息
})
*/
public function friendPay()
{
$order_id = $this->request->post('order_id');
if (!$order_id) $this->error('订单id参数不能为空');
$ordermodel = new \app\api\model\Order();
$order = $ordermodel
->with(['goods'])
->where('order.id',$order_id)
->find();
$user = \app\api\model\User::get($order['user_id']);
$user->visible(['nickname']);
$this->success('下单页详情',['detail'=>$order,'user'=>$user]);
}
/**
* @ApiTitle (计算运费)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
... ...
... ... @@ -4,7 +4,9 @@
namespace app\api\controller;
use app\api\model\GoodsComment;
use app\api\model\RiderOrder;
use app\api\model\UserMoneyLog;
use app\common\controller\Api;
use think\Config;
use think\Db;
... ... @@ -21,6 +23,7 @@ class Rider extends Api
* @ApiTitle (骑手订单页)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name=type, type=integer, required=true, description="1配送中2=已完成")
* @ApiParams (name=page, type=integer, required=true, description="页数")
* @ApiParams (name=lat, type=integer, required=true, description="骑手纬度")
* @ApiParams (name=lng, type=integer, required=true, description="骑手经度")
... ... @@ -52,29 +55,46 @@ class Rider extends Api
*/
public function index()
{
$type = $this->request->post('type');
$page = $this->request->post('page',1);
$lat = $this->request->post('lat');
$lng = $this->request->post('lng');
if (!in_array($type,[1,2])) $this->error('type参数不合法');
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)
if ($type == 1){
$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']);
});
->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']);
});
}else{
$list = $model
->with(['address','orderdetail'])
->where('fa_rider_order.user_id',$this->auth->id)
->where('fa_rider_order.status','2')
->order('fa_rider_order.id','desc')
->paginate(5,false,['page'=>$page])
->each(function ($item,$key){
$item->getRelation('orderdetail')->visible(['order_no']);
$item->getRelation('address')->visible(['name','address','detail']);
$item->visible(['orderdetail','address','distance','id']);
});
}
$this->success('订单列表',$list);
}
... ... @@ -147,7 +167,7 @@ class Rider extends Api
/**
* @ApiTitle (骑手订单详情)
* @ApiTitle (骑手未送达订单详情)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiHeaders (name=id, type=integer, required=true, description="骑手订单id")
... ... @@ -216,6 +236,69 @@ class Rider extends Api
/**
* @ApiTitle (骑手已送达订单详情)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiHeaders (name=id, type=integer, required=true, description="骑手订单id")
* @ApiReturn ({
'code':'1',
'msg':'订单详情'
'data':
"id": 7,
"order_no": "LQ-16420622494781", 订单编号
"distance": 111.3195, 距离
"address": {
"id": 1,
"name": "1", 姓名
"phone": "13549059988",
"detail": "阿松大1", 门牌号
"address": "阿松大", 地址
"order_id": 7,
"user_id": 1,
"lat": "116.397128",
"lng": "39.916527",
"createtime": 0,
"province_id": 1,
"city_id": 2,
"region_id": 3,
"mobile_hide": "135****9988" 电话号码
},
"goods": [
{
"goods_name": "Mate 20 华为 HUAWEI ",
"goods_attr": "极光色 8GB+128GB",
"image_text": "http://temporaryfood.qiniu.broing.cn123132"
},
{
"goods_name": "MacBook Pro 13寸",
"goods_attr": "天空灰",
"image_text": "http://temporaryfood.qiniu.broing.cn123132"
}
],
"createtime_text": ""
})
*/
public function orderOverDetail()
{
$id = $this->request->post('id');
$rider_order = RiderOrder::get($id);
$ordermodel = new \app\api\model\Order();
$order = $ordermodel
->with(['address','goods'])
->where('fa_litestore_order.id',$rider_order['order_id'])
->find();
$order->visible(['order_no','address','goods','id','distance']);
foreach ($order->getRelation('goods') as $key => $value){
$value->visible(['goods_name','goods_attr']);
}
$comment = new GoodsComment();
$content = $comment->where('order_id',$order->id)->select();
$order['comment'] = $content;
$this->success('订单详情',$order);
}
/**
* @ApiTitle (骑手已送达)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
... ... @@ -239,13 +322,17 @@ class Rider extends Api
$rider_order->status = '2';
$rider_order->sendtime = time();
$rider_order->isUpdate()->save();
$user = $this->auth->getUser();
$data = [
'user_id' => $this->auth->id,
'money' => $order->express_price,
'before' => $user->money,
'after' => $order->express_price+$user->money,
'memo' => '订单运费',
'createtime' => time()
];
Db::name('user_money_log')->insert($data);
$user->setInc('money',$order->express_price);
$moneymodel = new UserMoneyLog();
$moneymodel->isUpdate(false)->save($data);
$this->success('送达成功',$order);
}
... ... @@ -257,7 +344,7 @@ class Rider extends Api
* @ApiHeaders (name=money, type=integer, required=true, description="提现金额")
* @ApiReturn ({
'code':'1',
'msg':'送达成功'
'msg':'提现成功'
})
*/
public function withdraw()
... ... @@ -283,7 +370,7 @@ class Rider extends Api
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiReturn ({
'code':'1',
'msg':'送达成功'
'msg':'客服信息'
})
*/
public function service()
... ... @@ -295,4 +382,25 @@ class Rider extends Api
];
$this->success('客服信息',$data);
}
/**
* @ApiTitle (余额明细)
* @ApiMethod (POST)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name=page, type=integer, required=true, description="页数")
* @ApiReturn ({
'code':'1',
'msg':'余额明细'
})
*/
public function moneyList()
{
$page = $this->request->post('page',1);
$model = new UserMoneyLog();
$list = $model
->where('user_id',$this->auth->id)
->order('id','desc')
->paginate(10,false,['page'=>$page]);
$this->success('余额明细',$list);
}
}
\ No newline at end of file
... ...
<?php
namespace app\api\model;
use think\Model;
class UserMoneyLog extends Model
{
protected $autoWriteTimestamp = 'int';
protected $createTime = 'createtime';
protected $updateTime = false;
}
\ No newline at end of file
... ...