GameRewardItem.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Module\Game\Models;
  3. use App\Module\Game\Enums\REWARD_TYPE;
  4. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  5. use UCore\ModelCore;
  6. /**
  7. * 奖励项
  8. *
  9. * field start
  10. * @property int $id 主键
  11. * @property int $group_id 奖励组ID,外键关联game_reward_groups表
  12. * @property int $reward_type 奖励类型(1:物品, 2:货币, 3:宠物经验, 4:宠物体力, 5:其他)
  13. * @property int $target_id 目标ID(物品ID、货币ID等,根据reward_type解释)
  14. * @property int $param1 参数1(根据reward_type不同含义,如物品的品质、货币的来源等)
  15. * @property int $param2 参数2(根据reward_type不同含义,如物品的绑定状态、货币的类型等)
  16. * @property int $quantity 数量
  17. * @property float $weight 权重(随机发放时使用)
  18. * @property bool $is_guaranteed 是否必中(0:非必中, 1:必中)
  19. * @property array $extra_data 额外数据(JSON格式,可存储特定奖励类型的额外参数)
  20. * @property \Carbon\Carbon $created_at 创建时间
  21. * @property \Carbon\Carbon $updated_at 更新时间
  22. * field end
  23. */
  24. class GameRewardItem extends ModelCore
  25. {
  26. /**
  27. * 与模型关联的表名
  28. *
  29. * @var string
  30. */
  31. protected $table = 'game_reward_items';
  32. // attrlist start
  33. protected $fillable = [
  34. 'id',
  35. 'group_id',
  36. 'reward_type',
  37. 'target_id',
  38. 'param1',
  39. 'param2',
  40. 'quantity',
  41. 'weight',
  42. 'is_guaranteed',
  43. 'extra_data',
  44. ];
  45. // attrlist end
  46. /**
  47. * 应该被转换为原生类型的属性
  48. *
  49. * @var array
  50. */
  51. protected $casts = [
  52. 'reward_type' => 'integer',
  53. 'target_id' => 'integer',
  54. 'param1' => 'integer',
  55. 'param2' => 'integer',
  56. 'quantity' => 'integer',
  57. 'weight' => 'float',
  58. 'is_guaranteed' => 'boolean',
  59. 'extra_data' => 'json',
  60. ];
  61. /**
  62. * 获取奖励项所属的奖励组
  63. *
  64. * @return BelongsTo
  65. */
  66. public function rewardGroup(): BelongsTo
  67. {
  68. return $this->belongsTo(GameRewardGroup::class, 'group_id', 'id');
  69. }
  70. }