RestrictionsMarketingLogic.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace addons\Seckill\common\logic\order;
  3. use addons\Seckill\common\models\SeckillActivityOrder;
  4. use addons\Seckill\common\models\SeckillActivityUser;
  5. use common\enums\StatusEnum;
  6. use common\logic\order\BaseOrderLimit;
  7. use common\logic\order\limit\BaseLimit;
  8. use Exception;
  9. class RestrictionsMarketingLogic extends BaseLimit
  10. {
  11. public function execute($form)
  12. {
  13. }
  14. public static function compute($form)
  15. {
  16. try {
  17. // 获取当前活动设置的限购数量
  18. $limitNum = $form['activity']['limit_nums'] ?? 0;
  19. if (!empty($limitNum)) {
  20. //dd($form);
  21. $activity_id = $form['activity']['id'] ?? 0;
  22. $user_id = $form['user_id'] ?? 0;
  23. $mall_id = $form['mall_id'] ?? 0;
  24. if (empty($activity_id) || empty($user_id) || empty($mall_id)) {
  25. throw new Exception('参数错误');
  26. }
  27. // 如果活动设置了限购数量,那么就判断用户购买数量是否超过限制
  28. $seckillOrderNum = SeckillActivityUser::find()
  29. ->where(['mall_id' => $mall_id, 'user_id' => $user_id, 'activity_id' => $activity_id, 'status' => StatusEnum::ENABLED])
  30. ->count();
  31. if ($seckillOrderNum >= $limitNum) {
  32. throw new Exception('您已达到活动限购上限,无法再参与活动');
  33. }
  34. }
  35. } catch (Exception $e) {
  36. throw new Exception($e->getMessage());
  37. }
  38. }
  39. }