|
|
@@ -9,29 +9,31 @@ use UCore\ModelCore;
|
|
|
/**
|
|
|
* 奖励项
|
|
|
*
|
|
|
- * field start
|
|
|
- * @property int $id 主键
|
|
|
- * @property int $group_id 奖励组ID,外键关联game_reward_groups表
|
|
|
- * @property int $reward_type 奖励类型(1:物品, 2:货币, 3:宠物经验, 4:宠物体力, 5:其他)
|
|
|
- * @property int $target_id 目标ID(物品ID、货币ID等,根据reward_type解释)
|
|
|
- * @property int $param1 参数1(根据reward_type不同含义,如物品的品质、货币的来源等)
|
|
|
- * @property int $param2 参数2(根据reward_type不同含义,如物品的绑定状态、货币的类型等)
|
|
|
- * @property int $quantity 数量
|
|
|
- * @property int $min_quantity 最小数量(NULL表示使用quantity字段)
|
|
|
- * @property int $max_quantity 最大数量(NULL表示使用quantity字段)
|
|
|
- * @property float $weight 权重(随机发放时使用)
|
|
|
- * @property float $probability 获得概率(百分比,0-100,NULL表示使用权重机制)
|
|
|
- * @property bool $is_guaranteed 是否必中(0:非必中, 1:必中)
|
|
|
- * @property int $pity_threshold 保底阈值(0表示不启用保底)
|
|
|
- * @property float $pity_weight_factor 保底权重因子(递增概率的倍数)
|
|
|
- * @property bool $pity_enabled 是否启用保底机制
|
|
|
- * @property array $extra_data 额外数据(JSON格式,可存储特定奖励类型的额外参数)
|
|
|
- * @property \Carbon\Carbon $created_at 创建时间
|
|
|
- * @property \Carbon\Carbon $updated_at 更新时间
|
|
|
+ * field start
|
|
|
+ *
|
|
|
+ * @property int $id 主键
|
|
|
+ * @property int $group_id 奖励组ID,外键关联game_reward_groups表
|
|
|
+ * @property int $reward_type 奖励类型(1:物品, 2:货币, 3:宠物经验, 4:宠物体力, 5:其他)
|
|
|
+ * @property int $target_id 目标ID(物品ID、货币ID等,根据reward_type解释)
|
|
|
+ * @property int $param1 参数1(根据reward_type不同含义,如物品的品质、货币的来源等)
|
|
|
+ * @property int $param2 参数2(根据reward_type不同含义,如物品的绑定状态、货币的类型等)
|
|
|
+ * @property int $quantity 数量
|
|
|
+ * @property int $min_quantity 最小数量(NULL表示使用quantity字段)
|
|
|
+ * @property int $max_quantity 最大数量(NULL表示使用quantity字段)
|
|
|
+ * @property float $weight 权重(随机发放时使用)
|
|
|
+ * @property float $probability 获得概率(百分比,0-100,NULL表示使用权重机制)
|
|
|
+ * @property bool $is_guaranteed 是否必中(0:非必中, 1:必中)
|
|
|
+ * @property int $pity_threshold 保底阈值(0表示不启用保底)
|
|
|
+ * @property float $pity_weight_factor 保底权重因子(递增概率的倍数)
|
|
|
+ * @property bool $pity_enabled 是否启用保底机制
|
|
|
+ * @property array $extra_data 额外数据(JSON格式,可存储特定奖励类型的额外参数)
|
|
|
+ * @property \Carbon\Carbon $created_at 创建时间
|
|
|
+ * @property \Carbon\Carbon $updated_at 更新时间
|
|
|
* field end
|
|
|
*/
|
|
|
class GameRewardItem extends ModelCore
|
|
|
{
|
|
|
+
|
|
|
/**
|
|
|
* 与模型关联的表名
|
|
|
*
|
|
|
@@ -39,7 +41,7 @@ class GameRewardItem extends ModelCore
|
|
|
*/
|
|
|
protected $table = 'game_reward_items';
|
|
|
|
|
|
- // attrlist start
|
|
|
+ // attrlist start
|
|
|
protected $fillable = [
|
|
|
'id',
|
|
|
'group_id',
|
|
|
@@ -66,20 +68,20 @@ class GameRewardItem extends ModelCore
|
|
|
* @var array
|
|
|
*/
|
|
|
protected $casts = [
|
|
|
- 'reward_type' => 'integer',
|
|
|
- 'target_id' => 'integer',
|
|
|
- 'param1' => 'integer',
|
|
|
- 'param2' => 'integer',
|
|
|
- 'quantity' => 'integer',
|
|
|
- 'weight' => 'float',
|
|
|
- 'probability' => 'float',
|
|
|
- 'min_quantity' => 'integer',
|
|
|
- 'max_quantity' => 'integer',
|
|
|
- 'is_guaranteed' => 'boolean',
|
|
|
- 'pity_threshold' => 'integer',
|
|
|
+ 'reward_type' => 'integer',
|
|
|
+ 'target_id' => 'integer',
|
|
|
+ 'param1' => 'integer',
|
|
|
+ 'param2' => 'integer',
|
|
|
+ 'quantity' => 'integer',
|
|
|
+ 'weight' => 'float',
|
|
|
+ 'probability' => 'float',
|
|
|
+ 'min_quantity' => 'integer',
|
|
|
+ 'max_quantity' => 'integer',
|
|
|
+ 'is_guaranteed' => 'boolean',
|
|
|
+ 'pity_threshold' => 'integer',
|
|
|
'pity_weight_factor' => 'float',
|
|
|
- 'pity_enabled' => 'boolean',
|
|
|
- 'extra_data' => 'json',
|
|
|
+ 'pity_enabled' => 'boolean',
|
|
|
+ 'extra_data' => 'json',
|
|
|
];
|
|
|
|
|
|
/**
|
|
|
@@ -123,6 +125,7 @@ class GameRewardItem extends ModelCore
|
|
|
case REWARD_TYPE::ITEM->value:
|
|
|
try {
|
|
|
$itemModel = \App\Module\GameItems\Models\Item::find($this->target_id);
|
|
|
+
|
|
|
return $itemModel ? $itemModel->name : "物品 (ID: {$this->target_id})";
|
|
|
} catch (\Exception $e) {
|
|
|
return "物品 (ID: {$this->target_id})";
|
|
|
@@ -131,6 +134,7 @@ class GameRewardItem extends ModelCore
|
|
|
case REWARD_TYPE::CURRENCY->value:
|
|
|
try {
|
|
|
$currency = \App\Module\Fund\Models\FundCurrencyModel::find($this->target_id);
|
|
|
+
|
|
|
return $currency ? $currency->name : "货币 (ID: {$this->target_id})";
|
|
|
} catch (\Exception $e) {
|
|
|
return "货币 (ID: {$this->target_id})";
|
|
|
@@ -139,6 +143,7 @@ class GameRewardItem extends ModelCore
|
|
|
case REWARD_TYPE::FUND_CONFIG->value:
|
|
|
try {
|
|
|
$fund = \App\Module\Fund\Models\FundConfigModel::find($this->target_id);
|
|
|
+
|
|
|
return $fund ? $fund->name : "账户种类 (ID: {$this->target_id})";
|
|
|
} catch (\Exception $e) {
|
|
|
return "账户种类 (ID: {$this->target_id})";
|
|
|
@@ -159,6 +164,7 @@ class GameRewardItem extends ModelCore
|
|
|
case REWARD_TYPE::PET->value:
|
|
|
try {
|
|
|
$pet = \App\Module\Pet\Models\PetConfig::find($this->target_id);
|
|
|
+
|
|
|
return $pet ? $pet->name : "宠物 (ID: {$this->target_id})";
|
|
|
} catch (\Exception $e) {
|
|
|
return "宠物 (ID: {$this->target_id})";
|
|
|
@@ -181,54 +187,75 @@ class GameRewardItem extends ModelCore
|
|
|
switch ($this->reward_type) {
|
|
|
case REWARD_TYPE::ITEM->value:
|
|
|
// 创建物品奖励对象
|
|
|
- $rewardItem = new \Uraus\Kku\Common\RewardItem([
|
|
|
- 'item_id' => $this->target_id,
|
|
|
- 'instance_id' => 0, // 默认为0,表示不指定实例
|
|
|
- 'quantity' => $this->max_quantity ?: $this->quantity,
|
|
|
- ]);
|
|
|
- $reward->setItems([$rewardItem]);
|
|
|
+ if ($this->min_quantity) {
|
|
|
+ $rewardItem = new \Uraus\Kku\Common\RewardItem([
|
|
|
+ 'item_id' => $this->target_id,
|
|
|
+ 'instance_id' => 0, // 默认为0,表示不指定实例
|
|
|
+ 'min_quantity' => $this->min_quantity,
|
|
|
+ 'max_quantity' => $this->max_quantity,
|
|
|
+ ]);
|
|
|
+ }else{
|
|
|
+ $rewardItem = new \Uraus\Kku\Common\RewardItem([
|
|
|
+ 'item_id' => $this->target_id,
|
|
|
+ 'instance_id' => 0, // 默认为0,表示不指定实例
|
|
|
+ 'quantity' => $this->quantity,
|
|
|
+
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $reward->setItems([ $rewardItem ]);
|
|
|
break;
|
|
|
|
|
|
case REWARD_TYPE::CURRENCY->value:
|
|
|
case REWARD_TYPE::FUND_CONFIG->value:
|
|
|
// 创建代币奖励对象
|
|
|
- $rewardCoin = new \Uraus\Kku\Common\RewardCoin([
|
|
|
- 'type' => $this->target_id,
|
|
|
- 'quantity' => $this->max_quantity ?: $this->quantity,
|
|
|
- ]);
|
|
|
- $reward->setCoins([$rewardCoin]);
|
|
|
+ if ($this->min_quantity) {
|
|
|
+ $rewardCoin = new \Uraus\Kku\Common\RewardCoin([
|
|
|
+ 'type' => $this->target_id,
|
|
|
+ 'min_quantity' => $this->min_quantity,
|
|
|
+ 'max_quantity' => $this->max_quantity,
|
|
|
+ ]);
|
|
|
+ } else {
|
|
|
+ $rewardCoin = new \Uraus\Kku\Common\RewardCoin([
|
|
|
+ 'type' => $this->target_id,
|
|
|
+ 'quantity' => $this->quantity,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $reward->setCoins([ $rewardCoin ]);
|
|
|
break;
|
|
|
|
|
|
case REWARD_TYPE::PET->value:
|
|
|
// 创建宠物奖励对象
|
|
|
$rewardPet = new \Uraus\Kku\Common\RewardPets([
|
|
|
- 'pet_type' => $this->target_id,
|
|
|
- 'quantity' => $this->quantity,
|
|
|
- ]);
|
|
|
- $reward->setPets([$rewardPet]);
|
|
|
+ 'pet_type' => $this->target_id,
|
|
|
+ 'quantity' => $this->quantity,
|
|
|
+ ]);
|
|
|
+ $reward->setPets([ $rewardPet ]);
|
|
|
break;
|
|
|
|
|
|
case REWARD_TYPE::PET_POWER->value:
|
|
|
case REWARD_TYPE::PET_ENERGY->value:
|
|
|
// 创建宠物体力奖励对象
|
|
|
$rewardPetPower = new \Uraus\Kku\Common\RewardPetPowers([
|
|
|
- 'pet_id' => $this->target_id,
|
|
|
- 'quantity' => $this->max_quantity ?: $this->quantity,
|
|
|
- ]);
|
|
|
- $reward->setPetPowers([$rewardPetPower]);
|
|
|
+ 'pet_id' => $this->target_id,
|
|
|
+ 'quantity' => $this->max_quantity ?: $this->quantity,
|
|
|
+ ]);
|
|
|
+ $reward->setPetPowers([ $rewardPetPower ]);
|
|
|
break;
|
|
|
|
|
|
case REWARD_TYPE::FARM_SHRINE->value:
|
|
|
// 创建神像奖励对象
|
|
|
$rewardGod = new \Uraus\Kku\Common\RewardGod([
|
|
|
- 'type' => $this->target_id,
|
|
|
- 'diff' => $this->param2 ?: 3600, // 默认1小时
|
|
|
- 'quantity' => $this->quantity,
|
|
|
- ]);
|
|
|
- $reward->setGods([$rewardGod]);
|
|
|
+ 'type' => $this->target_id,
|
|
|
+ 'diff' => $this->param2 ?: 3600, // 默认1小时
|
|
|
+ 'quantity' => $this->quantity,
|
|
|
+ ]);
|
|
|
+ $reward->setGods([ $rewardGod ]);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return $reward;
|
|
|
}
|
|
|
+
|
|
|
}
|