manghe/app/common/helper/ConfigHelper.php
2025-04-06 20:26:07 +00:00

69 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\common\helper;
use think\facade\Db;
use app\common\server\RedisHelper;
/**
* 配置帮助类
* 用于获取系统配置参数
*/
class ConfigHelper
{
/**
* 静态属性,用于存储无限赏抽奖倍数
* 第一次获取后会缓存,避免重复查询
*
* @var int|null
*/
private static $infiniteMultiple = null;
/**
* 获取无限赏抽奖倍数
* 从数据库中查询key为infinite_multiple的配置获取multiple字段
* 将结果存入Redis缓存有效期为1天
*
* @return int 抽奖倍数默认为1000
*/
public static function getInfiniteMultiple()
{
// 如果静态属性已有值,直接返回
if (self::$infiniteMultiple !== null) {
return self::$infiniteMultiple;
}
// 实例化Redis助手
$redis = new RedisHelper();
// 设置Redis键名
$redisKey = 'config:infinite_multiple';
// 尝试从Redis获取
$cachedValue = $redis->get($redisKey);
if ($cachedValue !== false) {
// 缓存结果到静态属性
self::$infiniteMultiple = (int)$cachedValue;
return self::$infiniteMultiple;
}
// Redis中不存在从数据库获取
$config = Db::name('config')
->where('key', 'infinite_multiple')
->value('value');
// 解析JSON数据
$configArray = json_decode($config, true);
// 获取倍数值默认为10000
$multiple = isset($configArray['multiple']) ? (int)$configArray['multiple'] : 10000;
// 存入Redis过期时间为1天86400秒
$redis->set($redisKey, $multiple, 86400);
// 缓存结果到静态属性
self::$infiniteMultiple = $multiple;
return self::$infiniteMultiple;
}
}