| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\alliance\controllers\purchase;
- use app\constants\OptionSetting;
- use app\models\Admin;
- use app\models\AgentGoodsBindGoods;
- use app\models\AgentGoodsInstallLog;
- use app\models\Goods;
- use app\models\Option;
- use app\models\Order;
- use app\models\OrderRefund;
- use app\models\SaasUser;
- use app\models\StoreShareMoney;
- use app\models\Supplier;
- use app\modules\alliance\controllers\BaseController;
- use app\models\PurchaseOrder;
- use app\models\PurchaseOrderDetail;
- use app\modules\alliance\models\purchase\order\OrderForm;
- use app\modules\alliance\models\purchase\order\OrderListForm;
- use app\modules\alliance\models\purchase\order\OrderPayDataForm;
- use app\modules\alliance\models\purchase\order\OrderSubmitForm;
- use app\modules\alliance\models\purchase\order\OrderSubmitPreviewForm;
- use app\utils\Delivery\Delivery;
- use app\utils\ShareQrcode;
- use app\modules\admin\models\MerchantForm;
- use app\models\common\ExpressDetail;
- class OrderController extends BaseController
- {
- /**
- * 新-订单提交前的预览页面
- * @return \yii\web\Response
- */
- public function actionSubmitPreview()
- {
- $form = new OrderSubmitPreviewForm();
- $form->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()
- ]);
- }
- }
- }
|