userId]; if (isset($this->params['order_status']) && $this->params['order_status'] != '') { switch ($this->params['order_status']) { case 1: $where[] = ['order_status','=',OrderEnum::ORDER_STATUS_WAIT_PAY]; break; case 2: $where[] = ['order_status','in',[OrderEnum::ORDER_STATUS_WAIT_RECEIVING,OrderEnum::ORDER_STATUS_ARRIVE,OrderEnum::ORDER_STATUS_DEPART]]; break; case 3: $where[] = ['order_status','=',OrderEnum::ORDER_STATUS_START_SERVER]; break; case 4: $where[] = ['order_status','=',OrderEnum::ORDER_STATUS_SERVER_FINISH]; break; case 5: $where[] = ['order_status','=',OrderEnum::ORDER_STATUS_CLOSE]; break; } } return $where; } /** * @notes 订单列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author ljj * @date 2022/2/28 9:31 上午 */ public function lists(): array { $lists = Order::field('id,sn,order_status,pay_status,total_order_amount,appoint_time,user_remark,address_snap,order_amount,server_finish_time,create_time,coach_id') ->order('id','desc') ->with(['order_goods' => function($query){ $query->field('id,order_id,goods_id,goods_snap,goods_num,duration,goods_image,goods_name,goods_price')->hidden(['goods_snap']); }]) ->append(['appoint_time','appoint_date','order_status_desc','pay_btn','gap_btn','append_btn','user_cancel_btn','del_btn','comment_btn','look_comment_btn','order_cancel_time']) ->where($this->where()) ->limit($this->limitOffset, $this->limitLength) ->select() ->toArray(); $coachIds = array_column($lists,'coach_id'); $coachLists = Coach::where(['id'=>$coachIds]) ->field('name,work_photo,mobile,sn,id')->select()->toArray(); $coachLists = array_column($coachLists,null,'id'); foreach ($lists as $key => $order){ $lists[$key]['coach_info'] = []; if(in_array($order['order_status'],[OrderEnum::ORDER_STATUS_DEPART,OrderEnum::ORDER_STATUS_ARRIVE,OrderEnum::ORDER_STATUS_START_SERVER,OrderEnum::ORDER_STATUS_SERVER_FINISH])){ $lists[$key]['coach_info'] = [ 'name' => $coachLists[$order['coach_id']]['name'] ?? '', 'work_photo' => $coachLists[$order['coach_id']]['work_photo'] ?? '', 'sn' => $coachLists[$order['coach_id']]['sn'] ?? '', 'mobile' => $coachLists[$order['coach_id']]['mobile'] ?? '' ]; } if(!isset($order['address_snap']['house_number'])){ $lists[$key]['address_snap']['house_number'] = ''; } } return $lists; } /** * @notes 订单数量 * @return int * @author ljj * @date 2022/2/28 9:32 上午 */ public function count(): int { return Order::where($this->where())->count(); } }