| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace addons\GroupBuy\common\logic\order;
- use addons\GroupBuy\common\enums\GroupBuyEnum;
- use addons\GroupBuy\common\models\GroupBuyActive;
- use addons\GroupBuy\common\models\GroupBuyOrder;
- use common\enums\StatusEnum;
- use common\models\mall\Mall;
- class ActiveFinish
- {
- /**
- * 订单结束成团
- * @param $mall_id
- * @param $open_group_id
- * @param $active
- * @return bool
- */
- public static function handle($mall_id, $open_group_id, $active)
- {
- try {
- if (!$active || $active->virtual_group_type != 3) {
- return true;
- }
- // 获取当前团中的所有订单
- $where = [
- 'mall_id' => $mall_id,
- 'open_group_id' => $open_group_id,
- 'is_pay' => 1,
- 'order_status' => GroupBuyEnum::JOINING,
- 'status' => StatusEnum::ENABLED,
- ];
- $groupModel = GroupBuyOrder::find()
- ->where($where)
- ->orderBy('open_group_id asc')
- ->all();
- // 是否开启了 "当参团人数≥ x 人,拼团有效期结束后,自动成团"
- $groupCount = count($groupModel);
- if ($active->virtual_group_sub_type == 1 && $groupCount < $active->group_size && $groupCount < $active->expired_auto_complete_min_num) {
- // 拼团失败,退款
- $res = GroupBuyOrder::finishGroupBuyOrder($mall_id, $open_group_id);
- if (!$res) {
- throw new \Exception(' 开团id[ID:' . $open_group_id . ']过期,执行拼团结束失败, errmsg: ' . GroupBuyOrder::getStaticError() . PHP_EOL);
- }
- return true;
- }
- $res = GroupBuyOrder::addMainOrder($groupModel[0], $groupModel, $active, count($groupModel));
- if (!$res) {
- \Yii::$app->custom->logs("生成主订单错误,触发:order_id:" . $groupModel[0]['open_group_id']);
- return false;
- }
- return true;
- } catch (\Exception $e) {
- \Yii::$app->custom->logs('拼团订单生成失败', $e->getMessage());
- return false;
- }
- }
- }
|