<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
namespace app\dice\model\play_record_test;

use app\dice\model\DiceModel;
use app\dice\model\reward_config_record\DiceRewardConfigRecord;
use app\dice\model\lottery_pool_config\DiceLotteryPoolConfig;
use think\model\relation\BelongsTo;

/**
 * 玩家抽奖记录(测试数据)模型
 *
 * dice_play_record_test 玩家抽奖记录(测试数据)
 *
 * @property  $id ID
 * @property  $lottery_config_id 彩金池配置id
 * @property  $lottery_type 抽奖类型:0=付费,1=免费
 * @property  $is_win 中大奖:0=无,1=中奖
 * @property  $win_coin 赢取平台币
 * @property  int|null $ante 底注/注数（dice_ante_config.mult）
 * @property  int|null $paid_amount 付费金额（付费局=ante*1，免费局=0）
 * @property  $direction 方向:0=顺时针,1=逆时针
 * @property  $reward_tier 中奖档位：T1,T2,T3,T4,T5,BIGWIN
 * @property  $create_time 创建时间
 * @property  $update_time 修改时间
 * @property  $start_index 起始索引
 * @property  $target_index 结束索引
 * @property  $roll_number 摇取点数和
 * @property  $roll_array 摇取点数:[1,2,3,4,5,6]
 * @property  $status 状态:0=失败,1=成功
 * @property  $super_win_coin 中大奖平台币
 * @property  $reward_win_coin 摇色子中奖平台币
 * @property  $admin_id 所属管理员
 * @property  int|null $reward_config_record_id 关联 DiceRewardConfigRecord.id（权重测试记录）
 */
class DicePlayRecordTest extends DiceModel
{
    /**
     * 数据表主键
     * @var string
     */
    protected $pk = 'id';

    /**
     * 数据库表名称
     * @var string
     */
    protected $table = 'dice_play_record_test';

    protected $createTime = 'create_time';

    protected $updateTime = 'update_time';

    /**
     * 彩金池配置
     * 关联 lottery_config_id -> DiceLotteryPoolConfig.id
     */
    public function diceLotteryPoolConfig(): BelongsTo
    {
        return $this->belongsTo(DiceLotteryPoolConfig::class, 'lottery_config_id', 'id');
    }

    /**
     * 关联的权重测试记录
     * reward_config_record_id -> DiceRewardConfigRecord.id
     */
    public function diceRewardConfigRecord(): BelongsTo
    {
        return $this->belongsTo(DiceRewardConfigRecord::class, 'reward_config_record_id', 'id');
    }

    /** 彩金池配置 id（关联 dice_lottery_pool_config.id） */
    public function searchLotteryConfigIdAttr($query, $value): void
    {
        if ($value === '' || $value === null) {
            return;
        }
        $query->where('lottery_config_id', '=', (int) $value);
    }

    /** 抽奖类型 0=付费 1=免费 */
    public function searchLotteryTypeAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('lottery_type', '=', $value);
        }
    }

    /** 方向 0=顺时针 1=逆时针 */
    public function searchDirectionAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('direction', '=', $value);
        }
    }

    /** 是否中大奖 0=无 1=中大奖 */
    public function searchIsWinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('is_win', '=', $value);
        }
    }

    /** 赢取平台币下限 */
    public function searchWinCoinMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('win_coin', '>=', $value);
        }
    }

    /** 赢取平台币上限 */
    public function searchWinCoinMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('win_coin', '<=', $value);
        }
    }

    /** 付费金额（付费局=ante*1，免费局=0） */
    public function searchPaidAmountAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('paid_amount', '=', $value);
        }
    }

    /** 底注/注数（dice_ante_config.mult） */
    public function searchAnteAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('ante', '=', $value);
        }
    }

    /** 中奖档位（按表字段 reward_tier） */
    public function searchRewardTierAttr($query, $value)
    {
        if ($value === '' || $value === null) {
            return;
        }
        $query->where('reward_tier', '=', $value);
    }

    /** 点数和 roll_number（摇取点数和 5-30） */
    public function searchRollNumberAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('roll_number', '=', $value);
        }
    }

    /** 关联 dice_reward_config_record.id（权重测试记录） */
    public function searchRewardConfigRecordIdAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('reward_config_record_id', '=', $value);
        }
    }
}
