attributes = post_params(); $form->store_id = get_saas_purchase_store_id(); $form->user_id = get_user_id(); return $this->asJson($form->search()); } /** * 新-订单提交 * @return \yii\web\Response */ public function actionSubmit() { $form = new OrderSubmitForm(); $form->attributes = post_params(); $form->store_id = get_saas_purchase_store_id(); $form->user_id = get_user_id(); $form->user = get_user(); return $this->asJson($form->save()); } /** * 订单支付数据 * @return \yii\web\Response */ public function actionPayData() { $form = new OrderPayDataForm(); $form->attributes = post_params(); $form->store_id = get_saas_purchase_store_id(); $form->user = get_saas_user(); return $this->asJson($form->search()); } /** * 订单汇总 * @return \yii\web\Response */ public function actionSummary() { $form = new MerchantForm(); $form->attributes = post_params(); $form->setSaasStoreCloudId(); if (!$form->token_stroe_cloud_id) { $this->asJson([ 'code' => 1, 'msg' => '未查到云仓用户' ]); } return $this->asJson($form->mchOrderSummary()); } /** * 订单列表 * @return \yii\web\Response */ public function actionList() { $form = new OrderListForm(); $form->attributes = post_params(); $form->store_id = get_saas_purchase_store_id(); $form->user_id = get_user_id(); return $this->asJson($form->search()); } /** * 订单确认收货 */ public function actionConfirm() { $form = new OrderListForm(); $form->attributes = post_params(); return $this->asJson($form->confirm()); } /** * @return \yii\web\Response */ public function actionUserDelete() { $order_id = post_params('order_id'); $order = PurchaseOrder::findOne(['id' => $order_id, 'user_delete' => 1]); if ($order) { return $this->asJson([ 'code' => 1, 'msg' => '订单已删除' ]); } PurchaseOrder::updateAll(['user_delete' => 1], ['id' => $order_id]); return $this->asJson([ 'code' => 0, 'msg' => '删除成功' ]); } /** * 订单取消 * @return \yii\web\Response */ public function actionRevoke() { $form = new OrderForm(); $form->attributes = post_params(); $form->saas_id = get_saas_user_id(); return $this->asJson($form->revoke(post_params('order_id', 0))); } // public function actionRevokea() // { // $form = new OrderForm(); // $form->attributes = post_params(); // $form->delete_pass = 1; // $form->saas_id = get_saas_user_id(); // return $this->asJson($form->revoke(post_params('order_id', 0))); // } /** * 评论预览页面 */ public function actionCommentPreview() { $form = new OrderCommentPreview(); $form->attributes = get_params(); $form->store_id = get_saas_purchase_store_id(); $form->user_id = get_user_id(); return $this->asJson($form->search()); } /** * 评论提交 */ public function actionComment() { $form = new OrderCommentForm(); $form->attributes = post_params(); $form->store_id = get_saas_purchase_store_id(); $form->user_id = get_user_id(); return $this->asJson($form->save()); } /** * 订单物流信息 */ public function actionExpressDetail() { $order_id = post_params('order_id', 0); $order = PurchaseOrder::findOne([ 'saas_id' => get_saas_user_id(), 'id' => $order_id, ]); if (!$order) { return [ 'code' => 1, 'msg' => '订单不存在', ]; } // 查询物流信息 $model = new ExpressDetail(); $model->express = $order->express; $model->express_no = $order->express_no; // TODO: 测试 // $model->express = '圆通'; // $model->express_no = 'YT5364186723454'; $model->store_id = get_saas_purchase_store_id(); $res = $model->search(); if ($res['code'] != 0) { $res['code'] = 0; if (!$res['data']) { $res['data'] = []; } $res['data']['status'] = 0; $res['data']['status_text'] = '未知'; } $res['data']['express'] = $order->express; $res['data']['express_no'] = $order->express_no; $od = PurchaseOrderDetail::findOne([ 'order_id' => $order->id, 'is_delete' => 0, ]); if ($od) { $res['data']['goods_pic'] = $od->pic; } else { $res['data']['goods_pic'] = ''; } return $this->asJson($res); } public function actionMchOrderRefundList() { $post = post_params(); $form = new MerchantForm(); $form->setSaasStoreCloudId(); if (!$form->token_stroe_cloud_id) { $this->asJson([ 'code' => 1, 'msg' => '未查到云仓用户' ]); } $form->attributes = $post; $this->asJson($form->mchOrderRefundList()); } //订单申请售后 public function actionMchOrderRefundApply(){ $post = post_params(); $form = new MerchantForm(); $form->apply_data = [ 'type' => post_params('type'), 'reasonsTypeCode' => post_params('reasonsTypeCode'), 'returnTypeCode' => post_params('returnTypeCode'), 'packageTypeCode' => post_params('packageTypeCode'), 'desc' => post_params('desc'), 'pic_list' => post_params('pic_list'), 'video' => post_params('video'), 'refund_price' => post_params('refund_price'), ]; $form->attributes = $post; $form->order_type = 1; $form->setSaasStoreCloudId(); if (!$form->token_stroe_cloud_id) { $this->asJson([ 'code' => 1, 'msg' => '未查到云仓用户' ]); } $this->asJson($form->mchOrderRefundApply()); } //订单申请售后(邮寄产品) public function actionMchOrderRefundSend(){ $post = post_params(); $form = new MerchantForm(); $form->attributes = $post; $form->order_type = 1; $form->setSaasStoreCloudId(); if (!$form->token_stroe_cloud_id) { $this->asJson([ 'code' => 1, 'msg' => '未查到云仓用户' ]); } $this->asJson($form->mchOrderRefundSend()); } public function actionGetOrderGoods(){ $post = post_params(); $post = post_params(); $form = new MerchantForm(); $form->attributes = $post; $form->setSaasStoreCloudId(); if (!$form->token_stroe_cloud_id) { $this->asJson([ 'code' => 1, 'msg' => '未查到云仓用户' ]); } $this->asJson($form->mchGetOrderGoods()); } //确定代理已经安装 public function actionAgentIsInstall() { $t = \Yii::$app->db->beginTransaction(); try { $order_detail_id = get_params('order_detail_id'); $order_detail = PurchaseOrderDetail::findOne($order_detail_id); if (empty($order_detail)) { throw new \Exception("订单未找到"); } $agent_install_log = AgentGoodsInstallLog::findOne(['order_detail_id' => $order_detail_id, 'order_type' => AgentGoodsInstallLog::ORDER_TYPE_PURCHASE]); if (!$agent_install_log) { throw new \Exception("代理订单未找到"); } if (!in_array($agent_install_log->status, [0, 1])) { throw new \Exception("已经操作完成,不可重复操作"); } $agent_install_log->status = 2; if (!$agent_install_log->save()) { throw new \Exception(json_encode($agent_install_log->errors)); } //判断是否全部确认收货 $install_all_log = AgentGoodsInstallLog::find()->where(['AND', ['order_id' => $agent_install_log->order_id, 'order_type' => AgentGoodsInstallLog::ORDER_TYPE_PURCHASE]])->asArray()->all(); if ($install_all_log) { $count = PurchaseOrderDetail::find()->where(['order_id' => $agent_install_log->order_id])->count(); if (count($install_all_log) >= $count) { $form = new \app\modules\alliance\models\purchase\order\OrderForm(); $form->order_id = $agent_install_log->order_id; $result = $form->confirm(); if ($result['code']) { return $this->asJson($result); } } } //判断是否已过售后时间 $time = time(); $after_sale_time = Option::get(OptionSetting::STORE_AFTER_SALE_TIME, $this->store_id)['value']; $sale_time = $time - ($after_sale_time * 86400); $order = PurchaseOrder::find()->alias('o') ->where([ 'and', ['o.is_delete' => 0, 'o.trade_status' => Order::ORDER_FLOW_CONFIRM], ['o.id' => $order_detail->order_id], ])->andWhere(['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]) ->select(['o.*'])->groupBy('o.id') ->asArray()->one(); if (!empty($order) && (int)$order['is_sale'] === 1) { $goods = Goods::findOne($order_detail->goods_id); if (!(!empty($goods) && $goods->cloud_goods_id && !intval($goods->is_wholesale))) { throw new \Exception('非云仓商品,不可操作'); } $agent_goods_bind_goods = AgentGoodsBindGoods::findOne(['cloud_goods_id' => $goods->cloud_goods_id]); if (empty($agent_goods_bind_goods)) { throw new \Exception('未绑定产品代理,不可操作'); } $option = Option::get('goods_agent_price_config', 0, 'saas', [])['value']; $option = json_decode($option, true); $goods_agent_install_percent = $option['goods_agent_install_percent'] ?? 0; $supplier = Supplier::findOne(['cloud_supplier_id' => $agent_goods_bind_goods->cloud_supplier_id]); if (empty($supplier)) { throw new \Exception('供货商查询失败,不可操作'); } $supplier_rate = $supplier->rate; //计算上门安装佣金 $admin = Admin::findOne($agent_install_log->goods_agent_admin_id); if (!empty($admin)) { $agent_rebate = $order_detail->total_price * ($supplier_rate / 100) * ($goods_agent_install_percent / 100); //给用户增加佣金 $SaasUser = SaasUser::findOne($admin->saas_user_id); $SaasUser->share_profit = ($SaasUser->share_profit * 1) + ($agent_rebate * 1); if (!$SaasUser->save()) { throw new \Exception(json_encode($SaasUser->errors)); } $StoreShareMoney = new StoreShareMoney(); $StoreShareMoney->user_id = $SaasUser->id; $StoreShareMoney->store_id = $order['store_id']; $StoreShareMoney->profit = $goods_agent_install_percent; $StoreShareMoney->total_price = $order_detail->total_price; $StoreShareMoney->desc = '产品代理上门安装佣金发放,安装商品' . $order_detail->goods_name; $StoreShareMoney->order_id = $order['id']; $StoreShareMoney->created_at = time(); $StoreShareMoney->status = StoreShareMoney::STATUS_STORE_ORDER; $StoreShareMoney->type = StoreShareMoney::TYPE_GOODS_AGENT; $StoreShareMoney->commission = $agent_rebate; $StoreShareMoney->is_send = 1; if (!$StoreShareMoney->save()) { throw new \Exception(json_encode($StoreShareMoney->errors)); } } } $t->commit(); return $this->asJson([ 'code' => 0, 'msg' => '操作成功' ]); } catch (\Exception $e) { $t->rollBack(); return $this->asJson([ 'code' => 1, 'msg' => $e->getMessage() ]); } } }