diff --git a/app/common/dao/store/StoreActivityUserDao.php b/app/common/dao/store/StoreActivityUserDao.php index 75dd9e2a..cdcbd8bb 100644 --- a/app/common/dao/store/StoreActivityUserDao.php +++ b/app/common/dao/store/StoreActivityUserDao.php @@ -3,6 +3,8 @@ namespace app\common\dao\store; use app\common\dao\BaseDao; +use app\common\model\store\consumption\StoreConsumption; +use app\common\model\store\StoreActivityOrder; use app\common\model\store\StoreActivityUser; class StoreActivityUserDao extends BaseDao @@ -23,17 +25,42 @@ class StoreActivityUserDao extends BaseDao */ public function choose(int $userId, int $couponId, int $activityId) { - $exist = StoreActivityUser::where('user_id', $userId)->where('activity_id', $activityId)->find(); - if (!empty($exist)) { - throw new \Exception('请勿重复提交'); + $model = StoreActivityUser::where('user_id', $userId)->where('value', $couponId)->where('activity_id', $activityId)->find(); + if (empty($model)) { + $model = new StoreActivityUser(); + $model->user_id = $userId; + $model->value = $couponId; + $model->activity_id = $activityId; + $model->create_time = time(); + $model->status = 1; + if (!$model->save()) { + throw new \Exception('保存出错'); + } } - $model = new StoreActivityUser(); - $model->user_id = $userId; - $model->value = $couponId; - $model->activity_id = $activityId; - $model->create_time = time(); - if (!$model->save()) { - throw new \Exception('请勿重复提交'); + $validModel = StoreActivityUser::where('user_id', $userId)->where('activity_id', $activityId)->where('status', 1)->find(); + if ($validModel['value'] != $couponId) { + $consumption = StoreConsumption::where('coupon_id', $validModel['value'])->find(); + if ($consumption['type'] == StoreConsumption::TYPE_PULL_CONSUMPTION) { + $groupOrders = StoreActivityOrder::whereRaw('user_id=:user_id or spread_id=:spread_id', ['user_id' => $userId, 'spread_id' => $userId]) + ->where('activity_id', $activityId) + ->where('status', StoreActivityOrder::STATUS_VALID) + ->count(); + if ($groupOrders > 0) { + $model->status = 0; + if (!$model->save()) { + throw new \Exception('保存出错'); + } + throw new \Exception('您正在参与活动,暂时不支持切换'); + } + } + $validModel->status = 0; + if (!$validModel->save()) { + throw new \Exception('保存出错'); + } + $model->status = 1; + if (!$model->save()) { + throw new \Exception('保存出错'); + } } }