with([/* 'order' => function ($query) { return $query->select('id, user_id, order_no, order_status'); }, */ 'user' => function ($query) { return $query->select('id, nickname, mobile, avatar_url'); }, 'trade' => function ($query) { return $query->select('id, is_pay'); }]) ->where(['mall_id' => $this->mall_id]); // 会员ID !empty($params['user_id']) && $model->andWhere(['=', 'user_id', $params['user_id']]); // 会员名称 if (!empty($params['user_name'])) { $user_ids = User::find()->where(['mall_id' => $this->mall_id])->andWhere(['like', 'nickname', $params['user_name']])->select('id')->column(); $model->andWhere(['user_id' => $user_ids]); } // 会员手机 if (!empty($params['user_mobile'])) { $user_ids = User::find()->where(['mall_id' => $this->mall_id])->andWhere(['=', 'mobile', $params['user_mobile']])->select('id')->column(); $model->andWhere(['user_id' => $user_ids]); } // 订单号 if (!empty($params['order_no'])) { // $order_ids = Order::find()->where(['mall_id' => $this->mall_id])->andWhere(['like', 'order_no', $params['order_no']])->select('id')->column(); $model->andWhere(['like', 'order_no', $params['order_no']]); } // 订单状态 if (isset($params['order_status']) && $params['order_status'] != OrderStatusEnum::ALL) { $order_ids = Order::find()->where(['mall_id' => $this->mall_id])->andWhere(['=', 'order_status', $params['order_status']])->select('id')->column(); $model->andWhere(['order_id' => $order_ids]); } // 订单类型 if (!empty($params['order_type'])) { $model->andWhere(['order_type' => $params['order_type']]); } // 是否支付 if (isset($params['is_pay'])) { $trade_ids = PaymentTrade::find()->where(['mall_id' => $this->mall_id])->andWhere(['=', 'is_pay', $params['is_pay']])->select('id')->column(); $model->andWhere(['trade_id' => $trade_ids]); } // 日期 if (!empty($params['data'])) { list($b, $e) = $params['data']; $model->andFilterWhere(['between', 'created_at', strtotime($b), strtotime($e)]); } $pagination = new Pagination(['totalCount' => $model->count(), 'pageSize' => $limit]); $model->limit($pagination->limit)->offset($pagination->offset); $list = $model->asArray() ->orderBy('id desc') ->all(); foreach ($list as $k => $v) { if (!empty($v['order'])) { // $list[$k]['order']['order_status_text'] = OrderStatusEnum::getValue($v['order']['order_status']); } $list[$k]['order_type_text'] = EnumsOrder::getName($v['order_type']); if (!empty($v['trade'])) { $list[$k]['is_pay_text'] = $v['trade']['is_pay'] == 1 ? '已支付' : '未支付'; } } $data['list'] = $list; // $data['order_status'] = OrderStatusEnum::getMap(); $data['order_types'] = EnumsOrder::getTypes(); $data['page_count'] = $pagination->pageCount; $data['current_page'] = $page + 1; return $data; } }