'EXPRESS'], [['order_id', 'store_id',], 'required', 'on' => 'DADA'], [['order_id', 'store_id',], 'required', 'on' => 'UU'], [['order_id', 'store_id',], 'required', 'on' => 'PEISONG'], [['order_id'], 'required'], [['express', 'express_no',], 'string',], [['express', 'express_no',], 'default', 'value' => ''], [['is_express'], 'safe'], ]; } public function attributeLabels() { return [ 'express' => '快递公司', 'express_no' => '快递单号', 'words' => '商家留言', ]; } public function save() { if (!$this->validate()) { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } $order = Order::findOne([ 'is_delete' => 0, // 'store_id' => $this->store_id, //先注释掉,代理发货不验证此参数 'id' => $this->order_id, ]); if (!$order) { return [ 'code' => 1, 'msg' => '订单不存在或已删除', ]; } if ($order->is_pay == 0 && $order->pay_type != 2) { return [ 'code' => 1, 'msg' => '订单未支付' ]; } if ($order->apply_delete == Order::ORDER_APPLY_DELETE) { return [ 'code' => 1, 'msg' => '该订单正在申请取消操作,请先处理' ]; } if ($order->order_type == Order::ORDER_TYPE_GIVING_GIFTS && !$order->giving_gifts_received_user_id) { return [ 'code' => 1, 'msg' => '操作失败,没有收礼人' ]; } //视频号小店订单调用接口发货 $form = new VideoShopOrderForm(); $videoShopOrder = VideoShopOrderExt::findOne(['order_id' => $this->order_id, 'is_delete' => 0]); if ($videoShopOrder) { $base_ = new WechatMini(); $miniProgram = $base_::getWechatConfig($order->store_id, $videoShopOrder->mini_id, 1); $form->miniProgram = $miniProgram; $result = $form->orderSend($this->order_id, $this->express_no, $msg); if ($result) { if (intval($msg['code']) !== 0) { return $msg; } } } //判断是否转单 转单后不可取消 (新版逻辑 转单后的订单与商家无关 ,商家与用户关联 ,转单与配送单有关) // $result = $this->checkIsCancel($order); // if ($result['code'] !== 0) { // return $result; // } //判断是否转单 转单后不可取消(新版逻辑 转单后的订单与商家无关 ,商家与用户关联 ,转单与配送单有关) // if ($result['status'] === false) { // return [ // 'code' => 1, // 'msg' => "此订单已经转单商家不可发货" // ]; // } // 订单类型判断提示 $all_goods = OrderDetail::find()->where(['order_id' => $order->id])->asArray()->all(); $is_have_express = false; foreach ($all_goods as $_goods) { if ($_goods['delivery_type'] == OrderDetail::GOODS_DELIVERY_EXPRESS) { $is_have_express = true; break; } } if ($order->is_offline == Order::IS_OFFLINE_TRUE && !$is_have_express && $this->is_express) { return [ 'code' => 1, 'msg' => '此订单商品皆为自提,请选择无需物流发货' ]; } if ($order->is_offline == Order::IS_OFFLINE_TRUE && $is_have_express && !$this->is_express) { return [ 'code' => 1, 'msg' => '此订单包含普通快递配送,请选择快递方式发货' ]; } // $expressList = Express::getExpressList(); // $ok = false; // foreach ($expressList as $value) { // if ($value['name'] == $this->express) { // $ok = true; // break; // } // } // if (!$ok && $this->scenario == "EXPRESS") { // return [ // 'code' => 1, // 'msg' => '快递公司不正确' // ]; // } $order->express = $this->express; $order->express_no = $this->express_no; $order->words = $this->words; $order->trade_status = ORDER::ORDER_FLOW_SEND; $order->send_time = time(); if ($order->save()) { \app\models\OrderAdminHandleLog::addHandleLog($order->id, \app\models\OrderAdminHandleLog::HANDLE_TYPE_SEND); $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->id])->goods_id); if($order->giving_gifts_received_user_id){ NoticeSend::OrderSend($order->giving_gifts_received_user_id, $order->mobile, $order->order_no, $goods->name, $this->express, $this->express_no, $order->order_type); }else{ NoticeSend::OrderSend($order->user_id, $order->mobile, $order->order_no, $goods->name, $this->express, $this->express_no); } return [ 'code' => 0, 'msg' => '发货成功', ]; } else { return [ 'code' => 1, 'msg' => '操作失败', ]; } } public function cost_order_save() { if (!$this->validate()) { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } $order = AdoptCostOrder::findOne([ 'is_delete' => 0, 'store_id' => $this->store_id, 'id' => $this->order_id, ]); if (!$order) { return [ 'code' => 1, 'msg' => '订单不存在或已删除', ]; } if ($order->is_pay == 0 && $order->pay_type != 2) { return [ 'code' => 1, 'msg' => '订单未支付' ]; } if ($order->apply_delete == Order::ORDER_APPLY_DELETE) { return [ 'code' => 1, 'msg' => '该订单正在申请取消操作,请先处理' ]; } // 订单类型判断提示 $all_goods = OrderDetail::find()->where(['order_id' => $order->id])->asArray()->all(); $is_have_express = false; foreach ($all_goods as $_goods) { if ($_goods['delivery_type'] == OrderDetail::GOODS_DELIVERY_EXPRESS) { $is_have_express = true; break; } } if ($order->is_offline == Order::IS_OFFLINE_TRUE && !$is_have_express && post_params('is_express')) { return [ 'code' => 1, 'msg' => '此订单商品皆为自提,请选择无需物流发货' ]; } if ($order->is_offline == Order::IS_OFFLINE_TRUE && $is_have_express && !post_params('is_express')) { return [ 'code' => 1, 'msg' => '此订单包含普通快递配送,请选择快递方式发货' ]; } $expressList = Express::getExpressList(); $ok = false; foreach ($expressList as $value) { if ($value['name'] == $this->express) { $ok = true; break; } } if (!$ok && $this->scenario == "EXPRESS") { return [ 'code' => 1, 'msg' => '快递公司不正确' ]; } $order->express = $this->express; $order->express_no = $this->express_no; $order->words = $this->words; $order->trade_status = ORDER::ORDER_FLOW_SEND; $order->send_time = time(); if ($order->save()) { $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->order_id])->goods_id); NoticeSend::OrderSend($order->user_id, $order->mobile, $order->order_no, $goods->name, $this->express, $this->express_no, 1); return [ 'code' => 0, 'msg' => '发货成功', ]; } else { return [ 'code' => 1, 'msg' => '操作失败', ]; } } }