OrderController.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wniu
  5. * Date: 2022/3/24
  6. * Time: 5:26 下午
  7. */
  8. namespace addons\LuckyGroup\api\modules\v1\controllers;
  9. use addons\LuckyGroup\common\enums\LuckyGroupEnum;
  10. use addons\LuckyGroup\common\logic\notify\Notify;
  11. use addons\LuckyGroup\common\models\LuckyGroupActivity;
  12. use addons\LuckyGroup\common\models\LuckyGroupOrder;
  13. use api\controllers\OnAuthController;
  14. use addons\LuckyGroup\common\logic\order\OrderInitDataLogic;
  15. use addons\LuckyGroup\common\logic\order\OrderLimitLogic;
  16. use addons\LuckyGroup\common\logic\order\OrderFormLogic;
  17. use addons\LuckyGroup\common\logic\order\OrderMarketingLogic;
  18. use common\enums\AppEnum;
  19. use common\enums\PreviewTypeEnum;
  20. use common\enums\ShippingTypeEnum;
  21. use common\enums\StatusEnum;
  22. use common\models\goods\Goods;
  23. use common\models\user\UserAddress;
  24. use Yii;
  25. class OrderController extends OnAuthController
  26. {
  27. public $modelClass = '';
  28. /**
  29. * 不用进行登录验证的方法
  30. *
  31. * 例如: ['index', 'update', 'create', 'view', 'delete']
  32. * 默认全部需要验证
  33. *
  34. * @var array
  35. */
  36. protected $authOptional = [];
  37. /**
  38. * @desc:订单预览
  39. * @Author: hua
  40. * @Date: 2021/12/14
  41. * @Time: 18:36
  42. * @Copyright: copyright (c) 2021 广东七件事集团
  43. */
  44. public function actionPreview()
  45. {
  46. $orderFormLogic = new OrderFormLogic();
  47. $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
  48. $form->attributes = Yii::$app->request->post();
  49. $form['action'] = AppEnum::ACTION_PREVIEW;
  50. !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
  51. // 初始化订单数据
  52. $orderInitDataLogic = new OrderInitDataLogic();
  53. $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
  54. if ($form === false) return $this->error($orderInitDataLogic->getError());
  55. // // 购买验证
  56. //预览不做限制
  57. // $orderLimitLogic = new OrderLimitLogic();
  58. // $form = $orderLimitLogic->run($form);
  59. // if ($form === false) return $this->error($orderLimitLogic->getError());
  60. // 获取收货地址
  61. $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id);
  62. $form->address_id = $address_info['id'] ?? 0;
  63. // 运费
  64. $orderMarketingLogic = new OrderMarketingLogic();
  65. $form = $orderMarketingLogic->run($form);
  66. if ($form === false) return $this->error($orderMarketingLogic->getError());
  67. $group_order_goods = $form['group_order_goods'];
  68. $marketing = $form['marketing'];
  69. $pay_type_list = \Yii::$app->services->pay->getEnablePayment($this->mall_id, $this->platform);
  70. $shipping_type_list = ShippingTypeEnum::getMap();
  71. $info = compact('group_order_goods', 'marketing', 'address_info', 'pay_type_list', 'shipping_type_list');
  72. $info['total_pay_money'] = '¥' . $form['total_pay_money'];
  73. $info['is_address'] = $form['is_address'] ?? 0;
  74. return $this->success('操作成功', $info);
  75. }
  76. /**
  77. * 创建订单
  78. * @Author bing
  79. * @DateTime 2021-09-22 09:31:22
  80. * @return void
  81. * @copyright: Copyright (c) 2020 广东七件事集团
  82. */
  83. public function actionCreate()
  84. {
  85. $orderFormLogic = new OrderFormLogic();
  86. $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
  87. $form->attributes = Yii::$app->request->post();
  88. $form['action'] = AppEnum::ACTION_CREATE;
  89. !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
  90. // 初始化订单数据
  91. $orderInitDataLogic = new OrderInitDataLogic();
  92. $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
  93. if ($form === false) return $this->error($orderInitDataLogic->getError());
  94. // 购买验证
  95. $orderLimitLogic = new OrderLimitLogic();
  96. $form = $orderLimitLogic->run($form);
  97. if ($form === false) return $this->error($orderLimitLogic->getError());
  98. // 获取收货地址
  99. $address_info = UserAddress::getUserAddress($this->user_id, $form->address_id);
  100. $form->address_id = $address_info['id']??0;
  101. // 运费
  102. $orderMarketingLogic = new OrderMarketingLogic();
  103. $form = $orderMarketingLogic->run($form);
  104. if ($form === false) return $this->error($orderMarketingLogic->getError());
  105. $res = LuckyGroupOrder::createOrder($form);
  106. if ($res === false) return $this->error(LuckyGroupOrder::getStaticError());
  107. return $this->success('操作成功', $res);
  108. }
  109. /**
  110. * 支付完成
  111. * @return array
  112. */
  113. public function actionPaid()
  114. {
  115. $get = \Yii::$app->request->get();
  116. $res = \Yii::$app->services->validate->validate($get, [
  117. [['order_id'], 'required'],
  118. ]);
  119. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  120. $order = LuckyGroupOrder::findOne(['id' => $get['order_id']]);
  121. $activity_id = $order->activity_id;
  122. $mall_id = $order->mall_id;
  123. $activity = LuckyGroupActivity::findOne($activity_id);
  124. $goods_info = Goods::getOne([['id' => $order->goods_id]]);
  125. $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])
  126. ->count();
  127. if ($counts) {
  128. $counts--;
  129. } else {
  130. $counts = 0;
  131. }
  132. $data['goods_id'] = $order->goods_id;
  133. $data['money'] = $order->money;
  134. $data['created_at'] = date('m-d H:i', $order['created_at']);
  135. $data['counts'] = $counts;
  136. $time = time();
  137. $date = date('Y-m-d', $time);
  138. $surplus_second = strtotime($date . ' ' . $activity['end_time']) - $time;
  139. $data['surplus_second'] = $surplus_second;
  140. $data['goods_name'] = $goods_info->goods_name;
  141. $data['cover_pic'] = $goods_info->cover_pic;
  142. $data['activity_id'] = $activity_id;
  143. $data['list'] = LuckyGroupOrder::getWinText($mall_id, $activity_id, $order->goods_id);
  144. return $this->success('success', $data);
  145. }
  146. //去支付,再次支付调用
  147. public function actionToPay()
  148. {
  149. $params = \Yii::$app->request->post();
  150. $res = \Yii::$app->services->validate->validate($params, [
  151. [['id'], 'required'],
  152. ]);
  153. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  154. $params['mall_id'] = $this->mall_id;
  155. $params['user_id'] = $this->user_id;
  156. $res = LuckyGroupOrder::toPay($params);
  157. if ($res === false) return $this->error(LuckyGroupOrder::getStaticError());
  158. return $this->success('操作成功', $res);
  159. }
  160. //取消订单
  161. public function actionClose()
  162. {
  163. $params = \Yii::$app->request->post();
  164. $res = \Yii::$app->services->validate->validate($params, [
  165. [['id'], 'required'],
  166. ]);
  167. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  168. $params['mall_id'] = $this->mall_id;
  169. $params['user_id'] = $this->user_id;
  170. $res = LuckyGroupOrder::close($params);
  171. if (!$res) return $this->error(LuckyGroupOrder::getStaticError());
  172. return $this->success('操作成功', []);
  173. }
  174. }