diff --git a/app/Endpoint/Api/Http/Controllers/DrawActivityController.php b/app/Endpoint/Api/Http/Controllers/DrawActivityController.php index 558fe3f9..56f6bcad 100644 --- a/app/Endpoint/Api/Http/Controllers/DrawActivityController.php +++ b/app/Endpoint/Api/Http/Controllers/DrawActivityController.php @@ -10,6 +10,7 @@ use App\Models\DrawActivity; use App\Models\DrawLog; use App\Models\DrawTicket; use App\Services\DrawActivityService; +use App\Services\DrawTicketService; use Illuminate\Contracts\Cache\LockTimeoutException; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; @@ -29,16 +30,24 @@ class DrawActivityController extends Controller if ($user = $request->user()) { // 当前用户的抽奖机会 - $drawTicket = DrawTicket::where('draw_activity_id', $drawActivity->id) - ->where('user_id', $user->id) - ->first(); + $drawTicket = DrawTicket::where('draw_activity_id', $drawActivity->id)->where('user_id', $user->id)->first(); + + // 保证每个用户, 每月至少一次 抽奖机会 + if ($drawActivity->send_ticket_type == 2) { + $service = DrawTicketService::make(); + if (!$drawTicket || ($drawTicket->updated_at->lt(now()->startOfMonth()) && $drawTicket->number <= 0)) { + $service->change($user, $drawActivity, 1, '活动赠送'); + + $drawTicket = DrawTicket::where('draw_activity_id', $drawActivity->id)->where('user_id', $user->id)->first(); + } + } // 当前用户未填写收货地址的实物奖品 - $drawLog = DrawLog::whereRelation('prize', 'type', DrawPrizeType::Goods->value) - ->where('draw_activity_id', $drawActivity->id) - ->where('user_id', $user->id) - ->whereNull('consignee_name') - ->first(); + // $drawLog = DrawLog::whereRelation('prize', 'type', DrawPrizeType::Goods->value) + // ->where('draw_activity_id', $drawActivity->id) + // ->where('user_id', $user->id) + // ->whereNull('consignee_name') + // ->first(); } return response()->json([ diff --git a/app/Services/DrawTicketService.php b/app/Services/DrawTicketService.php index 7b05edba..1e005730 100644 --- a/app/Services/DrawTicketService.php +++ b/app/Services/DrawTicketService.php @@ -10,6 +10,11 @@ use App\Models\User; class DrawTicketService { + public static function make(...$params) + { + return new static(...$params); + } + /** * 增加/扣除 用户在给定活动中的抽奖机会 * @@ -21,7 +26,7 @@ class DrawTicketService * * @throws \App\Exceptions\BizException */ - public function change(User $user, DrawActivity $drawActivity, int $number, ?string $remark = null): void + public function change(User $user, DrawActivity $drawActivity, int $number, ?string $remark = null) { if ($number === 0) { throw new BizException('抽奖次数不能为 0');