From 870cfd4a8e62e19c8460e947352d6d80b401f648 Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Thu, 18 Jan 2024 18:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8B=89=E6=96=B0=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E6=8A=A5=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/dao/store/StoreActivityUserDao.php | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) 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('保存出错'); + } } }