| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace App\Module\Game\Models;
- use App\Module\Game\Enums\CONDITION_OPERATOR;
- use App\Module\Game\Enums\CONDITION_TYPE;
- use Illuminate\Database\Eloquent\Relations\BelongsTo;
- use UCore\ModelCore;
- /**
- * 条件项
- *
- * field start
- * @property int $id 主键
- * @property int $group_id 条件组ID,外键关联game_condition_groups表
- * @property int $condition_type 条件类型(1:土地等级, 2:房屋等级, 3:宠物等级, 4:物品持有数, 5:代币持有数)
- * @property int $target_id 目标ID(土地类型ID、宠物ID、物品ID、代币ID等,根据condition_type解释)
- * @property int $operator 比较运算符(1:等于, 2:不等于, 3:大于, 4:大于等于, 5:小于, 6:小于等于)
- * @property int $value 比较值
- * @property int $param1 参数1(根据condition_type不同含义)
- * @property int $param2 参数2(根据condition_type不同含义)
- * @property array $extra_data 额外数据(JSON格式,可存储特定条件类型的额外参数)
- * @property \Carbon\Carbon $created_at 创建时间
- * @property \Carbon\Carbon $updated_at 更新时间
- * field end
- */
- class GameConditionItem extends ModelCore
- {
- /**
- * 与模型关联的表名
- *
- * @var string
- */
- protected $table = 'game_condition_items';
- // attrlist start
- protected $fillable = [
- 'id',
- 'group_id',
- 'condition_type',
- 'target_id',
- 'operator',
- 'value',
- 'param1',
- 'param2',
- 'extra_data',
- ];
- // attrlist end
- /**
- * 应该被转换为原生类型的属性
- *
- * @var array
- */
- protected $casts = [
- 'condition_type' => 'integer',
- 'target_id' => 'integer',
- 'operator' => 'integer',
- 'value' => 'integer',
- 'param1' => 'integer',
- 'param2' => 'integer',
- 'extra_data' => 'json',
- ];
- /**
- * 获取条件项所属的条件组
- *
- * @return BelongsTo
- */
- public function conditionGroup(): BelongsTo
- {
- return $this->belongsTo(GameConditionGroup::class, 'group_id', 'id');
- }
- /**
- * 获取条件类型名称
- *
- * @return string
- */
- public function getConditionTypeName(): string
- {
- return CONDITION_TYPE::getName($this->condition_type);
- }
- /**
- * 获取比较运算符名称
- *
- * @return string
- */
- public function getOperatorName(): string
- {
- return CONDITION_OPERATOR::getName($this->operator);
- }
- /**
- * 获取比较运算符符号
- *
- * @return string
- */
- public function getOperatorSymbol(): string
- {
- return CONDITION_OPERATOR::getSymbol($this->operator);
- }
- /**
- * 获取条件描述
- *
- * @return string
- */
- public function getDescription(): string
- {
- $typeName = $this->getConditionTypeName();
- $operatorSymbol = $this->getOperatorSymbol();
- $targetName = $this->getTargetName();
- return "{$typeName} {$targetName} {$operatorSymbol} {$this->value}";
- }
- /**
- * 获取目标名称
- *
- * @return string
- */
- public function getTargetName(): string
- {
- return \App\Module\Game\Services\ConditionTypeDescriptor::getTargetNameFromModel($this);
- }
- }
|