*/ public static function getCachedList(): array { $list = Cache::get(self::CACHE_KEY_LIST); if ($list !== null && is_array($list)) { return $list; } self::refreshCache(); $list = Cache::get(self::CACHE_KEY_LIST); return is_array($list) ? $list : []; } /** * 重新从数据库加载并写入缓存(保存时调用) */ public static function refreshCache(): void { $list = (new self())->order('id', 'asc')->select()->toArray(); Cache::set(self::CACHE_KEY_LIST, $list, self::CACHE_TTL); } /** * 从缓存取最小 real_ev */ public static function getCachedMinRealEv(): float { $list = self::getCachedList(); if (empty($list)) { return 0.0; } $vals = array_column($list, 'real_ev'); $min = min($vals); return (float) $min; } /** * 从缓存按档位取奖励列表 * @return array */ public static function getCachedByTier(string $tier): array { $list = self::getCachedList(); $rows = []; foreach ($list as $row) { if (isset($row['tier']) && (string) $row['tier'] === $tier) { $rows[] = $row; } } return $rows; } /** 保存后刷新缓存 */ public static function onAfterInsert($model): void { self::refreshCache(); } /** 更新后刷新缓存 */ public static function onAfterUpdate($model): void { self::refreshCache(); } /** 删除后刷新缓存 */ public static function onAfterDelete($model): void { self::refreshCache(); } /** 色子点数下限 */ public function searchGridNumberMinAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('grid_number', '>=', $value); } } /** 色子点数上限 */ public function searchGridNumberMaxAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('grid_number', '<=', $value); } } /** 前端显示文本模糊 */ public function searchUiTextAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('ui_text', 'like', '%' . $value . '%'); } } /** 真实资金结算下限 */ public function searchRealEvMinAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('real_ev', '>=', $value); } } /** 真实资金结算上限 */ public function searchRealEvMaxAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('real_ev', '<=', $value); } } /** 所属档位 */ public function searchTierAttr($query, $value) { if ($value !== '' && $value !== null) { $query->where('tier', '=', $value); } } }