| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * Created by PhpStorm.
- * User: wniu
- * Date: 2022/3/24
- * Time: 5:26 下午
- */
- namespace addons\LuckyGroup\api\modules\v1\controllers;
- use addons\LuckyGroup\common\enums\LuckyGroupEnum;
- use addons\LuckyGroup\common\logic\notify\Notify;
- use addons\LuckyGroup\common\models\LuckyGroupActivity;
- use addons\LuckyGroup\common\models\LuckyGroupOrder;
- use api\controllers\OnAuthController;
- use addons\LuckyGroup\common\logic\order\OrderInitDataLogic;
- use addons\LuckyGroup\common\logic\order\OrderLimitLogic;
- use addons\LuckyGroup\common\logic\order\OrderFormLogic;
- use addons\LuckyGroup\common\logic\order\OrderMarketingLogic;
- use common\enums\AppEnum;
- use common\enums\PreviewTypeEnum;
- use common\enums\ShippingTypeEnum;
- use common\enums\StatusEnum;
- use common\models\goods\Goods;
- use common\models\user\UserAddress;
- use Yii;
- class OrderController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = [];
- /**
- * @desc:订单预览
- * @Author: hua
- * @Date: 2021/12/14
- * @Time: 18:36
- * @Copyright: copyright (c) 2021 广东七件事集团
- */
- public function actionPreview()
- {
- $orderFormLogic = new OrderFormLogic();
- $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
- $form->attributes = Yii::$app->request->post();
- $form['action'] = AppEnum::ACTION_PREVIEW;
- !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
- // 初始化订单数据
- $orderInitDataLogic = new OrderInitDataLogic();
- $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
- if ($form === false) return $this->error($orderInitDataLogic->getError());
- // // 购买验证
- //预览不做限制
- // $orderLimitLogic = new OrderLimitLogic();
- // $form = $orderLimitLogic->run($form);
- // if ($form === false) return $this->error($orderLimitLogic->getError());
- // 获取收货地址
- $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id);
- $form->address_id = $address_info['id'] ?? 0;
- // 运费
- $orderMarketingLogic = new OrderMarketingLogic();
- $form = $orderMarketingLogic->run($form);
- if ($form === false) return $this->error($orderMarketingLogic->getError());
- $group_order_goods = $form['group_order_goods'];
- $marketing = $form['marketing'];
- $pay_type_list = \Yii::$app->services->pay->getEnablePayment($this->mall_id, $this->platform);
- $shipping_type_list = ShippingTypeEnum::getMap();
- $info = compact('group_order_goods', 'marketing', 'address_info', 'pay_type_list', 'shipping_type_list');
- $info['total_pay_money'] = '¥' . $form['total_pay_money'];
- $info['is_address'] = $form['is_address'] ?? 0;
- return $this->success('操作成功', $info);
- }
- /**
- * 创建订单
- * @Author bing
- * @DateTime 2021-09-22 09:31:22
- * @return void
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- public function actionCreate()
- {
- $orderFormLogic = new OrderFormLogic();
- $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
- $form->attributes = Yii::$app->request->post();
- $form['action'] = AppEnum::ACTION_CREATE;
- !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
- // 初始化订单数据
- $orderInitDataLogic = new OrderInitDataLogic();
- $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
- if ($form === false) return $this->error($orderInitDataLogic->getError());
- // 购买验证
- $orderLimitLogic = new OrderLimitLogic();
- $form = $orderLimitLogic->run($form);
- if ($form === false) return $this->error($orderLimitLogic->getError());
- // 获取收货地址
- $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id);
- $form->address_id = $address_info['id']??0;
- // 运费
- $orderMarketingLogic = new OrderMarketingLogic();
- $form = $orderMarketingLogic->run($form);
- if ($form === false) return $this->error($orderMarketingLogic->getError());
- $res = LuckyGroupOrder::createOrder($form);
- if ($res === false) return $this->error(LuckyGroupOrder::getStaticError());
- return $this->success('操作成功', $res);
- }
- /**
- * 支付完成
- * @return array
- */
- public function actionPaid()
- {
- $get = \Yii::$app->request->get();
- $res = \Yii::$app->services->validate->validate($get, [
- [['order_id'], 'required'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $order = LuckyGroupOrder::findOne(['id' => $get['order_id']]);
- $activity_id = $order->activity_id;
- $mall_id = $order->mall_id;
- $activity = LuckyGroupActivity::findOne($activity_id);
- $goods_info = Goods::getOne([['id' => $order->goods_id]]);
- $counts = LuckyGroupOrder::find()->where(['mall_id' => $mall_id, 'activity_id' => $activity_id, 'goods_id' => $order->goods_id, 'group_status' => LuckyGroupEnum::GROUP_JOINING, 'status' => StatusEnum::ENABLED])
- ->count();
- if ($counts) {
- $counts--;
- } else {
- $counts = 0;
- }
- $data['goods_id'] = $order->goods_id;
- $data['money'] = $order->money;
- $data['created_at'] = date('m-d H:i', $order['created_at']);
- $data['counts'] = $counts;
- $time = time();
- $date = date('Y-m-d', $time);
- $surplus_second = strtotime($date . ' ' . $activity['end_time']) - $time;
- $data['surplus_second'] = $surplus_second;
- $data['goods_name'] = $goods_info->goods_name;
- $data['cover_pic'] = $goods_info->cover_pic;
- $data['activity_id'] = $activity_id;
- $data['list'] = LuckyGroupOrder::getWinText($mall_id, $activity_id, $order->goods_id);
- return $this->success('success', $data);
- }
- //去支付,再次支付调用
- public function actionToPay()
- {
- $params = \Yii::$app->request->post();
- $res = \Yii::$app->services->validate->validate($params, [
- [['id'], 'required'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['user_id'] = $this->user_id;
- $res = LuckyGroupOrder::toPay($params);
- if ($res === false) return $this->error(LuckyGroupOrder::getStaticError());
- return $this->success('操作成功', $res);
- }
- //取消订单
- public function actionClose()
- {
- $params = \Yii::$app->request->post();
- $res = \Yii::$app->services->validate->validate($params, [
- [['id'], 'required'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $params['user_id'] = $this->user_id;
- $res = LuckyGroupOrder::close($params);
- if (!$res) return $this->error(LuckyGroupOrder::getStaticError());
- return $this->success('操作成功', []);
- }
- }
|