69 lines
1.9 KiB
PHP
69 lines
1.9 KiB
PHP
<?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;
|
||
}
|
||
}
|