1], [['limit'], 'default', 'value' => 20], [['order_no'], 'default', 'value' => 0], [['order_id', 'key'],'trim'], [['nowlongitude', 'nowlatitude'], 'safe'], ]; } public function search() { if (!$this->validate()) { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } $query = AdoptCostOrder::find()->where([ 'is_delete' => 0, 'store_id' => $this->store_id, 'user_id' => $this->user_id, 'user_delete' => 0 ]); if (isset($this->status) && $this->status > -1) { $query->andWhere([ '<>', 'trade_status', Order::ORDER_FLOW_CANCEL ]); } if (get_md_id()) { $query->andWhere(['md_id' => get_md_id()]); } if ($this->status == 0) {//待付款 $query->andWhere([ 'is_pay' => Order::IS_PAY_FALSE, ])->andWhere(['!=', 'pay_type' , 2])->andWhere(['!=', 'trade_status', 1]); } if ($this->status == 1) {//待发货 $query->andWhere([ 'or', ['trade_status' => Order::ORDER_FLOW_NO_SEND], ['pay_type' => 2, 'trade_status' => Order::ORDER_FLOW_DEFAULT] ])->andWhere(['or', ['is_pay' => 1], ['pay_type' => 2]]); } if ($this->status == 2) {//待收货 $query->andWhere([ 'trade_status' => Order::ORDER_FLOW_SEND, ]); } if ($this->status == 3) {//已完成 $query->andWhere([ 'trade_status' => Order::ORDER_FLOW_CONFIRM, ]); } $query->andWhere(['is_recycle' => 0]); $count = $query->count(); $pagination = new Pagination(['totalCount' => $count, 'page' => $this->page - 1, 'pageSize' => $this->limit]); /* @var Order[] $list */ $list = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->all(); $new_list = []; foreach ($list as $order) { // // 预约订单超过15分钟未支付自动取消 // if (time() - $order->created_at > 15 * 60 && $order->trade_status != Order::ORDER_FLOW_CANCEL && $order->is_pay == 0 && $order->pay_type != 2) { // $order->trade_status = Order::ORDER_FLOW_CANCEL; // $order->updated_at = time(); // $order->save(); // } $order_detail_list = OrderDetail::findAll(['order_id' => $order->order_id, 'is_delete' => 0]); $goods_list = []; foreach ($order_detail_list as $order_detail) { $goods = Json::encode($order_detail->goods_info); if (!$goods) { continue; } $goods_pic = isset($order_detail->pic) ? $order_detail->pic : $goods['cover_pic']; $goods_list[] = (object)[ 'goods_id' => isset($goods['id']) ? $goods['id'] : $order_detail->goods_id, 'goods_pic' => $goods_pic, 'goods_name' => $order_detail->goods_name, 'num' => $order_detail->num, 'price' => $order_detail->total_price, 'attr_list' => json_decode($order_detail->attr), ]; } $qrcode = null; if ($order->mch_id) { $mch = Mch::findOne($order->mch_id); $mch = [ 'id' => $mch->id, 'name' => $mch->name, 'logo' => $mch->logo, ]; } else { $mch = [ 'id' => 0, 'name' => '平台自营', 'logo' => '', ]; } $orderRefund = OrderRefund::find()->where(['store_id' => $order->store_id, 'order_id' => $order->id])->exists(); $deliveryInfo = null; if ($order->is_delivery == 1) { $deliveryInfo = DeliveryInfo::find()->where(['order_no' => $order->order_no])->one(); } $is_order_refund = $order_refund_enable = 0; if ($orderRefund) { $is_order_refund = 1; } else { $is_order_refund = 0; } if ($order->is_pay == 1 && ($order->trade_status == Order::ORDER_FLOW_SEND || $order->trade_status == Order::ORDER_FLOW_CONFIRM)) { $order_refund_enable = 1; } else { $order_refund_enable = 0; } if ($order->trade_status == Order::ORDER_FLOW_CONFIRM) { $after_sale_time = Option::get(OptionSetting::STORE_AFTER_SALE_TIME, $this->store_id); if ((time() - $order->confirm_time) > $after_sale_time['value'] * 86400) {//超过可售后时间 $order_refund_enable = 0; } } $adopt_order = Order::find()->alias('o') ->leftJoin(['aoi' => AdoptOrderInfo::tableName()], 'o.id = aoi.order_id') ->where([ 'o.id' => $order->order_id, 'o.store_id' => $this->store_id, 'o.order_type' => 5 ])->select(['o.order_no','aoi.harvest_weight'])->asArray()->one(); $new_list[] = (object)[ 'is_order_refund' => $is_order_refund, 'order_refund_enable' => $order_refund_enable, 'order_id' => $order->id, 'order_no' => $order->order_no, 'add_time' => $order->created_at, 'goods_list' => $goods_list, 'total_price' => $order->total_price, 'pay_price' => $deliveryInfo ? sprintf("%1.2f", $order->pay_price + $deliveryInfo->fee) : $order->pay_price, 'is_pay' => $order->is_pay, 'is_comment' => $order->is_comment, 'is_offline' => $order->is_offline, 'qrcode' => $qrcode, 'offline_qrcode' => $order->offline_qrcode, 'express' => $order->express, 'mch' => $mch, 'pay_type' => $order->pay_type, 'refund' => $orderRefund, 'apply_delete' => $order->apply_delete, 'trade_status' => $order->trade_status, 'delivery_fee' => $deliveryInfo ? $deliveryInfo->fee : 0, 'is_delivery' => $order->is_delivery, 'order_type' => $order->order_type, 'weight' => $order->weight, 'adopt_order_no' => $adopt_order['order_no'], 'harvest_weight' => $adopt_order['harvest_weight'], ]; } $pay_type_list = OrderForm::getPayType([],['huodao']); return [ 'code' => 0, 'msg' => 'success', 'data' => [ 'row_count' => $count, 'page_count' => $pagination->pageCount, 'list' => $new_list, 'pay_type_list' => $pay_type_list, 'revoke_tpl'=>'', 'template_id' => NoticeAction::getSendTamplateId(['order_cancel']), 'cancel_reason' => Delivery::$validReason ], ]; } public static function getCountData($store_id, $user_id) { $form = new OrderListForm(); $form->limit = 1; $form->store_id = $store_id; $form->user_id = $user_id; $data = []; $form->status = -1; $res = $form->searchOrderCount(); $data['all'] = $res; $form->status = 0; $res = $form->searchOrderCount(); $data['status_0'] = $res; $form->status = 1; $res = $form->searchOrderCount(); $data['status_1'] = $res; $form->status = 2; $res = $form->searchOrderCount(); $data['status_2'] = $res; $form->status = 3; $res = $form->searchOrderCount(); $data['status_3'] = $res; return $data; } /** * 获取订单数方法 * @return array|int|string */ public function searchOrderCount() { $query = Order::find()->where([ 'is_delete' => 0, 'user_delete' => 0, 'store_id' => $this->store_id, 'user_id' => $this->user_id, ]); if (get_md_id()) { $query->andWhere(['md_id' => get_md_id()]); } if (isset($this->status) && $this->status > -1) { $query->andWhere([ '<>', 'trade_status', Order::ORDER_FLOW_CANCEL ]); } if ($this->status == 0) {//待付款 $query->andWhere([ 'is_pay' => Order::IS_PAY_FALSE, ])->andWhere(['!=', 'pay_type' , 2]); } if ($this->status == 1) {//待发货 $query->andWhere([ 'trade_status' => Order::ORDER_FLOW_NO_SEND, ])->andWhere(['or', ['is_pay' => 1], ['pay_type' => 2]]); } if ($this->status == 2) {//待收货 $query->andWhere([ 'trade_status' => Order::ORDER_FLOW_SEND, ]); } if ($this->status == 3) {//已完成 $query->andWhere([ 'trade_status' => Order::ORDER_FLOW_CONFIRM, ]); } $query->andWhere(['is_recycle' => 0]); return $query->count(); } }