GameRewardGroupRepository.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Module\Game\Repositorys;
  3. use App\Module\Game\Models\GameRewardGroup;
  4. use Dcat\Admin\Repositories\EloquentRepository;
  5. /**
  6. * 奖励组数据仓库类
  7. *
  8. * 提供奖励组数据的访问和操作功能。
  9. * 该类是奖励组模块与后台管理系统的桥梁,用于处理奖励组数据的CRUD操作。
  10. */
  11. class GameRewardGroupRepository extends EloquentRepository
  12. {
  13. /**
  14. * 关联的Eloquent模型类
  15. *
  16. * @var string
  17. */
  18. protected $eloquentClass = GameRewardGroup::class;
  19. /**
  20. * 复制奖励组
  21. *
  22. * @param int $id 奖励组ID
  23. * @return GameRewardGroup
  24. */
  25. public function duplicate(int $id): GameRewardGroup
  26. {
  27. $group = $this->eloquentClass::with('rewardItems')->findOrFail($id);
  28. // 复制奖励组
  29. $newGroup = $group->replicate();
  30. $newGroup->name = $group->name . ' (复制)';
  31. $newGroup->code = $group->code . '_copy_' . time();
  32. $newGroup->save();
  33. // 复制奖励项
  34. foreach ($group->rewardItems as $item) {
  35. $newItem = $item->replicate();
  36. $newItem->group_id = $newGroup->id;
  37. $newItem->save();
  38. }
  39. return $newGroup;
  40. }
  41. }