| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <?php
- namespace addons\Seckill\common\logic\order;
- use addons\Seckill\common\models\SeckillActivityOrder;
- use addons\Seckill\common\models\SeckillActivityUser;
- use common\enums\StatusEnum;
- use common\logic\order\BaseOrderLimit;
- use common\logic\order\limit\BaseLimit;
- use Exception;
- class RestrictionsMarketingLogic extends BaseLimit
- {
- public function execute($form)
- {
- }
- public static function compute($form)
- {
- try {
- // 获取当前活动设置的限购数量
- $limitNum = $form['activity']['limit_nums'] ?? 0;
- if (!empty($limitNum)) {
- //dd($form);
- $activity_id = $form['activity']['id'] ?? 0;
- $user_id = $form['user_id'] ?? 0;
- $mall_id = $form['mall_id'] ?? 0;
- if (empty($activity_id) || empty($user_id) || empty($mall_id)) {
- throw new Exception('参数错误');
- }
- // 如果活动设置了限购数量,那么就判断用户购买数量是否超过限制
- $seckillOrderNum = SeckillActivityUser::find()
- ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'activity_id' => $activity_id, 'status' => StatusEnum::ENABLED])
- ->count();
- if ($seckillOrderNum >= $limitNum) {
- throw new Exception('您已达到活动限购上限,无法再参与活动');
- }
- }
- } catch (Exception $e) {
- throw new Exception($e->getMessage());
- }
- }
- }
|