123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- namespace app\api\controller;
- use app\common\controller\SenderApi;
- use app\common\model\UserOrder;
- use app\common\model\UserOrderLog;
- use think\Db;
- /**
- * 配送端订单接口
- */
- class SenderOrderController extends SenderApi
- {
- protected $noNeedLogin = [];
- /**
- * 订单列表
- * @ApiParams (name=page,description=page)
- * @ApiParams (name=limit,description=limit)
- * @ApiParams (name=type,description="1待接单2进行中3已完成4已结算5已取消")
- * @ApiReturnParams (name=id,description=订单ID)
- * @ApiReturnParams (name=from_city,description=取得城市)
- * @ApiReturnParams (name=to_city,description=去的城市)
- * @ApiReturnParams (name=pet_category,description=宠物分类)
- * @ApiReturnParams (name=spec,description=规格)
- * @ApiReturnParams (name=agree_date,description=取宠日期)
- * @ApiReturnParams (name=agree_time,description=取宠时间)
- * @ApiReturnParams (name=no,description=订单号)
- */
- public function list(){
- $data=input();
- $this->validate($data,[
- 'type'=>['require','integer'],
- ]);
- $user=$this->auth->getUser();
- if($data['type']==1) {
- $list = UserOrder::wait($user)
- ->field($field=[
- 'a.from_city', 'a.to_city', 'a.id', 'a.pet_category', 'a.spec', 'a.agree_date', 'a.agree_time', 'a.no','a.status',
- ])
- ->paginate(input('limit', 10));
- $list->each(function (UserOrder $order){
- $order->orders=$order->toArray();
- });
- }elseif ($data['type']==2){
- $list = $user->senderOrder()
- ->run()
- ->with('orders')
- ->paginate(input('limit',10));
- }elseif ($data['type']==3){
- $list = $user->senderOrder()
- ->complete()
- ->with('orders')
- ->paginate(input('limit',10));
- }elseif ($data['type']==4){
- $list = $user->senderOrder()
- ->set()
- ->with('orders')
- ->paginate(input('limit',10));
- }elseif ($data['type']==5){
- $list = $user->senderOrder()
- ->cancel()
- ->with('orders')
- ->paginate(input('limit',10));
- }
- $this->success('',$list);
- }
- /**
- * 接单
- * @ApiParams (name=id,description=订单ID)
- */
- public function get(){
- $user=$this->auth->getUser();
- $data=input();
- $this->validate($data,[
- 'id'=>['require'],
- ]);
- Db::startTrans();
- $order=UserOrder::lock(true)->findOrFail($data['id']);
- $order->accept($user);
- Db::commit();
- $this->success();
- }
- /**
- * 订单详情
- * @ApiParams (name=id,description=订单ID)
- * @ApiReturnParams(name=id,type=string,description=订单id)
- * @ApiReturnParams(name=from_addr[name],type=string,description=取件人)
- * @ApiReturnParams(name=from_addr[mobile],type=string,description=取件人手机号)
- * @ApiReturnParams(name=from_addr[address],type=string,description=取件人地址)
- * @ApiReturnParams(name=to_addr[name],type=string,description=送件人)
- * @ApiReturnParams(name=to_addr[mobile],type=string,description=送件人手机号)
- * @ApiReturnParams(name=to_addr[address],type=string,description=送件人地址)
- * @ApiReturnParams(name=pet_category,type=string,description=宠物类别)
- * @ApiReturnParams(name=spec,type=string,description=规格)
- * @ApiReturnParams(name=real_amount,type=string,description=金额)
- * @ApiReturnParams(name=num,type=string,description=宠物数量)
- * @ApiReturnParams(name=pick_up,type=string,description=0不接不送1接宠2送宠4接送宠)
- * @ApiReturnParams(name=has_cage,type=string,description=有无宠具)
- * @ApiReturnParams(name=weight,type=string,description=重量)
- * @ApiReturnParams(name=piece,type=string,description=件数)
- * @ApiReturnParams(name=remark,type=string,description=备注)
- * @ApiReturnParams(name=images,type=string,description=照片)
- * @ApiReturnParams(name=discount_amount,type=string,description=优惠总金额)
- * @ApiReturnParams(name=coupon_amount,type=string,description=优惠券金额)
- * @ApiReturnParams(name=no,type=string,description=订单编号)
- * @ApiReturnParams(name=created_at,type=string,description=下单时间)
- * @ApiReturnParams(name=pay_type,type=string,description=支付方式1余额2微信)
- * @ApiReturnParams(name=protect_amount,type=string,description=安心保金额)
- * @ApiReturnParams(name=protect_max,type=string,description=安心保保多少)
- * @ApiReturnParams(name=protect_valid,type=string,description=安心保是否生效)
- * @ApiReturnParams (name=status,description="0待支付1待接单10取宠中20运输中30送宠中40送宠完成待用户确认50已完成待结算60已结算65拒绝结算70退款中80已取消")
- * @ApiReturnParams (name=cancel_at,description="用户取消时间")
- * @ApiReturnParams (name=refund_at,description="退款时间")
- * @ApiReturnParams (name=agree_date,description="取宠时间日期")
- * @ApiReturnParams (name=agree_time,description="取宠具体时间")
- * @ApiReturnParams (name=freight,description="fast快车air空运special专车")
- * @ApiReturnParams (name=refund_status,description="-1未申请0审核中1审核通过2驳回")
- * @ApiReturnParams (name=refund_amount,description="退款金额")
- * @ApiReturnParams (name=refund_images,description="退款图片")
- * @ApiReturnParams (name=refund_reason,description="退款原因")
- * @ApiReturnParams (name=refund_at,description="退款时间")
- * @ApiReturnParams (name=fee_1,decription=取件费)
- * @ApiReturnParams (name=fee_2,decription=运输费)
- * @ApiReturnParams (name=fee_3,decription=派送费)
- * @ApiReturnParams (name=fee_4,decription=笼具费)
- * @ApiReturnParams (name=fee_5,decription=寄养费)
- * @ApiReturnParams (name=fee_6,decription=填写其它费)
- * @ApiReturnParams (name=current_sender_order[][type],decription="配送员类型1取2送")
- * @ApiReturnParams (name=current_sender_order[][user],decription="用户信息对象")
- */
- public function detail(){
- $data=input();
- $this->validate($data,[
- 'id'=>['require']
- ]);
- $order=UserOrder::findOrFail($data['id']);
- $order->append(['current_sender_order','current_sender_order.user']);
- $this->success('',$order);
- }
- /**
- * 删除订单
- * @ApiParams (name=id,description=订单ID)
- *
- */
- public function delete(){
- $data=input();
- $this->validate($data,[
- 'id'=>['require']
- ]);
- $user=$this->auth->getUser();
- $order=$user->senderOrder()->where('user_order_id',$data['id'])->findOrFail();
- $order->remove();
- $this->success();
- }
- /**
- * 上传视频或备注,更新订单状态
- * @ApiParams (name=id,description=订单ID)
- * @ApiParams (name=txt,required=false,description=备注)
- * @ApiParams (name=media[0],required=false,description=视频数组)
- * @ApiParams (name=status,required=true,description="状态,10取宠视频,20运输视频,30送宠视频,0状态更新")
- */
- public function remark(){
- $data=input();
- $this->validate($data,[
- 'id'=>['require'],
- 'media'=>['array','max:3'],
- 'status'=>['require','in:'.implode(',',array_keys(UserOrderLog::$status))],
- ]);
- if(isset($data['media']) && !is_array($data['media'])){
- $this->error('视频必须是个数组');
- }
- $user=$this->auth->getUser();
- Db::startTrans();
- $order=UserOrder::lock(true)->findOrFail($data['id']);
- $order->updateStatus($data['status'],$user);
- $order->log()->save([
- 'status'=>$order['status'],
- 'txt' =>$data['txt']??'',
- 'media' =>$data['media']??[],
- ]);
- Db::commit();
- $this->success();
- }
- /**
- * 配送详情
- * @ApiParams (name=id,decription=订单ID)
- * @ApiReturnParams (name=addr,description="取宠地址")
- * @ApiReturnParams (name=created_at,description="时间")
- * @ApiReturnParams (name=status,description="0待支付1待接单10取宠中20运输中30送宠中40送宠完成待用户确认50已完成待结算60已结算65拒绝结算70退款中80已取消")
- * @ApiReturnParams (name=txt,description="描述")
- * @ApiReturnParams (name=media,description="视频")
- */
- public function send_detail(){
- $data=input();
- $this->validate($data,[
- 'id'=>['require']
- ]);
- $user=$this->auth->getUser();
- $senderOrder=$user->senderOrder()->sender($data['id'])->findOrFail();
- $this->success('',$senderOrder->orders->send_detail??[]);
- }
- /**
- * 申请结算
- * @ApiParams (name=id,description="配送员订单ID")
- * @ApiParams (name=fee_1,description=取件费)
- * @ApiParams (name=fee_2,description=运输费)
- * @ApiParams (name=fee_3,description=派送费)
- * @ApiParams (name=fee_4,description=笼具费)
- * @ApiParams (name=fee_5,description=寄养费)
- * @ApiParams (name=fee_6,description=填写其它费)
- */
- public function settle(){
- $data=input();
- $this->validate($data,[
- 'id'=>['require'],
- 'fee_1'=>['require','egt:0'],
- 'fee_2'=>['require','egt:0'],
- 'fee_3'=>['require','egt:0'],
- 'fee_4'=>['require','egt:0'],
- 'fee_5'=>['require','egt:0'],
- 'fee_6'=>['require','egt:0'],
- ]);
- $user=$this->auth->getUser();
- Db::startTrans();
- $senderOrder=$user->senderOrder()->findOrFail($data['id']);
- $senderOrder->settle($data);
- Db::commit();
- $this->success();
- }
- }
|