255] ]; } public function search() { $query = Order::find()->alias('o') ->leftJoin(['di' => DeliveryInfo::tableName()], 'o.order_no = di.order_no') ->where(['o.order_type' => Order::ORDER_TYPE_STORE, 'di.is_local' => 1]) ->select('o.*,di.fee,di.rider_id,di.rider_name,di.rider_mobile,di.local_status,di.serial_num, o.send_time rider_time, di.is_store_delivery_type')->orderBy('o.created_at DESC');; if ($this->store_id > 0) { $query->andWhere(['o.store_id' => $this->store_id]); } switch ($this->state) { case 1: //未付款 $query->andWhere(['<>', 'o.trade_status', Order::ORDER_FLOW_CANCEL])->andWhere(['o.is_delete' => Order::IS_DELETE_FALSE, 'o.is_pay' => Order::IS_PAY_FALSE]); break; case 2: //待接单 $query->andWhere([ 'o.trade_status' => Order::ORDER_FLOW_NO_SEND, 'o.is_delete' => Order::IS_DELETE_FALSE ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]); break; case 3: //待取货 $query->andWhere([ 'o.trade_status' => Order::ORDER_FLOW_SEND, 'o.is_delete' => Order::IS_DELETE_FALSE, 'di.local_status' => DeliveryInfo::LOCAL_STATUS_WAITING, ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]); break; case 4: //配送中 $query->andWhere([ 'o.trade_status' => Order::ORDER_FLOW_SEND, 'o.is_delete' => Order::IS_DELETE_FALSE, 'di.local_status' => DeliveryInfo::LOCAL_STATUS_SENDING, ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]); break; case 5: //已完成 $query->andWhere([ 'o.trade_status' => Order::ORDER_FLOW_CONFIRM, 'o.is_delete' => Order::IS_DELETE_FALSE ])->andWhere(['or', ['o.is_pay' => Order::IS_PAY_TRUE], ['o.pay_type' => Order::PAY_TYPE_COD]]); break; case 6: //已取消 $query->andWhere(['or', ['o.trade_status' => Order::ORDER_FLOW_CANCEL], ['o.is_delete' => Order::IS_DELETE_TRUE]]); break; default: $query->andWhere([ 'o.is_delete' => Order::IS_DELETE_FALSE ]); break; } if ($this->dateStart) { $query->andWhere(['>=', 'o.created_at', strtotime($this->dateStart)]); } if ($this->dateEnd) { $query->andWhere(['<=', 'o.created_at', strtotime($this->dateEnd)]); } if ($this->rider_name) { $query->andWhere(['LIKE', 'di.rider_name', $this->rider_name]); } if ($this->mobile) { $query->andWhere(['like', 'o.mobile', $this->mobile]); } if ($this->order_no) { $query->andWhere(['like', 'o.order_no', $this->order_no]); } if (!empty($this->name)) { $query->andWhere(['like', 'o.name', $this->name]); } $list = pagination_make($query); foreach ($list['list'] as &$val) { $val['is_store_delivery_type'] = intval($val['is_store_delivery_type']); $val['is_pay'] = intval($val['is_pay']); $val['pay_time'] = $val['pay_time'] > 0 ? date('Y-m-d H:i:s',$val['pay_time']) : ''; $val['rider_time'] = $val['rider_time'] > 0 ? date('Y-m-d H:i:s',$val['rider_time']) : ''; $val['created_at'] = date('Y-m-d H:i:s',$val['created_at']); switch ($val['trade_status']) { case 0: $val['order_status'] = '待接单'; $val['order_status_color'] = "#C6C6C6"; break; case 1: $val['order_status'] = '已取消'; $val['order_status_color'] = "rgba(0, 0, 0, 0.25)"; break; case 2: if($val['local_status'] == DeliveryInfo::LOCAL_STATUS_SENDING) { $val['order_status'] = '配送中'; $val['order_status_color'] = "#1890FF"; } elseif($val['local_status'] == DeliveryInfo::LOCAL_STATUS_WAITING) { $val['order_status'] = '待取货'; $val['order_status_color'] = "#FAAD14"; } elseif($val['local_status'] == DeliveryInfo::LOCAL_STATUS_CONFIRM) { $val['order_status'] = '已送达'; $val['order_status_color'] = "#65C817"; } else { $val['order_status'] = '订单状态异常:1'; $val['order_status_color'] = "rgba(0, 0, 0, 0.25)"; } break; case 3: if($val['local_status'] == DeliveryInfo::LOCAL_STATUS_CONFIRM) { $val['order_status'] = '已完成'; $val['order_status_color'] = "#65C817"; } else { $val['order_status'] = '订单状态异常:2'; $val['order_status_color'] = "rgba(0, 0, 0, 0.25)"; } break; default: if($val['is_pay'] == 0 && $val['is_delete'] == 0) { $val['order_status'] = '未付款'; $val['order_status_color'] = "rgba(0, 0, 0, 0.25)"; } else { $val['order_status'] = '订单状态异常:3'; $val['order_status_color'] = "rgba(0, 0, 0, 0.25)"; } break; } $form = new OrderListForm(); $val['goods_list'] = $form->getOrderGoodsList($val['id']); $store = Store::findOne($val['store_id']); $val['store_name'] = !empty($store) ? $store->name : ''; $val['store_info'] = [ 'longitude' => $store->longitude, 'latitude' => $store->latitude ]; if($val['mch_id']){ $mch = \app\models\Mch::findOne($val['mch_id']); $val['store_name'] .= '-入驻商:' . $mch->name; $val['store_info'] = [ 'longitude' => $mch->longitude, 'latitude' => $mch->latitude ]; } $val['address_data'] = json_decode($val['address_data'], true); if (intval($val['is_delivery']) === 0 && $val['md_id'] > 0) { $md_info = Md::findOne($val['md_id']); $district = implode('', District::find()->where(['id' => [$md_info->province ?? 0, $md_info->city ?? 0, $md_info->district ?? 0]])->select('name')->column()); $val['address'] = $district . $md_info->address; } } $tencent_map_key = Option::get('tencent_map_key', 0, 'saas', '')['value']; if ($this->store_id > 0) { $tencent_map_key = Option::get(OptionSetting::TENCENT_MAP_KEY, $this->store_id, 'pay', Option::get(OptionSetting::TENCENT_MAP_KEY, $this->store_id, 'store', '')['value'] ?: $tencent_map_key)['value']; } $data = [ 'data' => $list['list'], 'pageNo' => $list['pageNo'], 'totalCount' => $list['totalCount'], 'tencent_map_key' => $tencent_map_key ]; return [ 'code' => 0, 'msg' => 'success', 'data' => $data ]; } }