2026_10_27_130000_initialize_fixed_promotion_activities.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. use Illuminate\Database\Migrations\Migration;
  3. use Illuminate\Support\Facades\DB;
  4. return new class extends Migration {
  5. public function up(): void
  6. {
  7. $rules = [
  8. 7 => ['title' => '净亏邀请奖励', 'params' => ['turnover_ratio' => '0.00', 'loss_amount' => '500.00', 'invite_count' => 3, 'reward_amount' => '500.00']],
  9. 9 => ['title' => '转盘活动', 'params' => ['turnover_ratio' => '0.00', 'completion_probability' => '20.00', 'online_seconds' => 3600,
  10. 'deposit_amount' => '3000.00', 'team_deposit_amount' => '500.00', 'bet_amount' => '5000.00', 'team_bet_amount' => '3000.00']],
  11. ];
  12. DB::transaction(function () use ($rules) {
  13. $now = now('Asia/Shanghai');
  14. foreach ($rules as $type => $config) {
  15. if (DB::table('promotion_activities')->where('type', $type)->exists()) continue;
  16. $id = DB::table('promotion_activities')->insertGetId([
  17. 'title' => $config['title'], 'type' => $type, 'status' => 0,
  18. 'start_time' => $now->timestamp, 'end_time' => $now->copy()->addYear()->timestamp,
  19. 'lang' => 'zh', 'sort' => 0, 'params' => json_encode($config['params'], JSON_THROW_ON_ERROR),
  20. 'publish_platforms' => '[]', 'register_platforms' => '[]',
  21. 'register_time_limited' => 0, 'deposit_limited' => 0, 'show_ineligible' => 1,
  22. 'reward_quota' => null, 'budget' => null, 'created_at' => $now, 'updated_at' => $now,
  23. ]);
  24. DB::table('promotion_campaigns')->insert(['activity_id' => $id, 'first_published_at' => null, 'created_at' => $now, 'updated_at' => $now]);
  25. }
  26. });
  27. }
  28. public function down(): void
  29. {
  30. // Keep activity IDs, publication dates and participation history when rolling back code.
  31. }
  32. };