添加内测签到倍数

This commit is contained in:
youda 2025-04-12 23:42:51 +08:00
parent 56002f390d
commit 1719ebfa07
5 changed files with 202 additions and 10 deletions

View File

@ -111,6 +111,7 @@ class Config extends Base
$infinite_multiple = getConfig('infinite_multiple');
$wechatofficialaccount_setting = getConfig('wechatofficialaccount_setting');
$rank_setting = getConfig('rank_setting');
$system_test = getConfig('system_test');
View::assign("key", "systemconfig");
View::assign("data", $config);
@ -120,6 +121,7 @@ class Config extends Base
View::assign("wechatofficialaccount_setting", $wechatofficialaccount_setting);
View::assign("infinite_multiple", $infinite_multiple);
View::assign("rank_setting", $rank_setting);
View::assign("system_test", $system_test);
return View::fetch('Config/systemconfig');
}
@ -218,6 +220,11 @@ class Config extends Base
($redis->getRedis())->del('config:app_setting');
}
if ($data['key'] == 'system_test') {
//清除redis缓存system_test
\app\common\helper\ConfigHelper::clearSystemTestCache();
}
$result = setConfig($data['key'], $data);
if ($result) {
return $this->renderSuccess('修改成功');

View File

@ -237,6 +237,42 @@
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">内测配置</div>
<div class="layui-card-body">
<form class="layui-form" action="" lay-filter="system-test-form">
<input type="hidden" name="key" value="system_test">
<div class="layui-form-item">
<label class="layui-form-label">是否开启内测</label>
<div class="layui-input-block">
<input type="radio" name="enable_test" value="1" title="开启" {if isset($system_test.enable_test) && $system_test.enable_test==1}checked{/if}>
<input type="radio" name="enable_test" value="0" title="关闭" {if !isset($system_test.enable_test) || $system_test.enable_test==0}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否禁用微信支付</label>
<div class="layui-input-block">
<input type="radio" name="disable_wechat_pay" value="1" title="禁用" {if isset($system_test.disable_wechat_pay) && $system_test.disable_wechat_pay==1}checked{/if}>
<input type="radio" name="disable_wechat_pay" value="0" title="启用" {if !isset($system_test.disable_wechat_pay) || $system_test.disable_wechat_pay==0}checked{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">签到倍数</label>
<div class="layui-input-block">
<input type="number" name="sign_multiple" value="{$system_test.sign_multiple|default=1}" autocomplete="off" class="layui-input" min="1">
<div class="layui-form-mid layui-word-aux">签到时获得的积分将乘以此倍数</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="system-test-form">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="layui-col-md12">
<div class="layui-card">
@ -268,8 +304,6 @@
</div>
</div>
<!-- 排行榜设置卡片 -->
<div class="layui-col-md12">
<div class="layui-card">
@ -774,6 +808,26 @@
return false;
});
// 内测配置表单提交
form.on('submit(system-test-form)', function (data) {
var field = data.field;
// 提交到后台
$.ajax({
url: '{:url("/admin/update")}',
type: 'post',
data: field,
success: function (res) {
if (res.status) {
layer.msg(res.msg, { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2 });
}
}
});
return false;
});
// 微信公众号设置表单提交
form.on('submit(wechatofficialaccount-setting-form)', function (data) {
var field = data.field;

View File

@ -28,6 +28,8 @@ class ConfigHelper
private static $appSetting = null;
private static $systemTest = null;
/**
* 获取应用设置
*
@ -279,4 +281,85 @@ class ConfigHelper
// 删除缓存,返回是否成功
return $redis->delete($redisKey);
}
/**
* 获取内测配置
*
* @return array 内测配置
*/
public static function getSystemTest()
{
// 如果静态属性已有值,直接返回
if (self::$systemTest !== null) {
return self::$systemTest;
}
// 实例化Redis助手
$redis = new RedisHelper();
// 设置Redis键名
$redisKey = 'config:system_test';
// 尝试从Redis获取
$cachedValue = $redis->get($redisKey);
if ($cachedValue !== false) {
// 缓存结果到静态属性
self::$systemTest = json_decode($cachedValue, true);
return self::$systemTest;
}
// Redis中不存在从数据库获取
$config = Db::name('config')
->where('key', 'system_test')
->value('value');
// 解析JSON数据
$configArray = json_decode($config, true) ?: [];
// 存入Redis过期时间为1小时3600秒
$redis->set($redisKey, json_encode($configArray), 3600);
// 缓存结果到静态属性
self::$systemTest = $configArray;
return self::$systemTest;
}
/**
* 获取内测配置
*
* @return array 内测配置
*/
public static function getSystemTestKey($key)
{
// 如果静态属性已有值,直接返回
$system_test = self::getSystemTest();
if ($system_test != null && $system_test['enable_test'] == "1") {
return $system_test[$key];
}
if ($key == "sign_multiple") {
return "0";
}
return "0";
}
/**
* 清除内测配置缓存
*
* @return bool 是否成功清除缓存
*/
public static function clearSystemTestCache()
{
// 重置静态属性
self::$systemTest = null;
// 清除Redis缓存
$redis = new RedisHelper();
$redisKey = 'config:system_test';
// 删除缓存,返回是否成功
return $redis->delete($redisKey);
}
}

View File

@ -11,7 +11,7 @@ use app\common\model\SignConfig;
use app\common\model\SignConfigReward;
use app\common\service\RewardService;
use think\Model;
use app\common\helper\ConfigHelper;
class UserSign extends Base
{
@ -74,7 +74,7 @@ class UserSign extends Base
if ($res1) {
foreach ($res1 as $item) {
$msg = $msg .'每日签到获得:'. $item['msg'] . ',';
$msg = $msg . '每日签到获得:' . $item['msg'] . ',';
}
}
// 处理累计签到奖励
@ -82,7 +82,7 @@ class UserSign extends Base
if ($res2) {
$res[] = $res2;
foreach ($res2 as $item) {
$msg = $msg .'累计签到获得:'. $item['msg'] . ',';
$msg = $msg . '累计签到获得:' . $item['msg'] . ',';
}
}
if ($msg) {
@ -101,6 +101,15 @@ class UserSign extends Base
protected static function processSignRewards($user_id, $type, $day)
{
$sign_multiple = ConfigHelper::getSystemTestKey("sign_multiple");
if (!$sign_multiple) {
$sign_multiple = 0;
} else {
$sign_multiple = intval($sign_multiple);
}
if ($sign_multiple <= 0) {
$sign_multiple = 1;
}
// 查找符合条件的配置
$reward = SignConfig::where('type', '=', $type)
->where('status', '=', 1)
@ -108,7 +117,7 @@ class UserSign extends Base
->field('reward_id')->find();
$res = [];
if ($reward) {
$res = RewardService::sendReward($user_id, $reward['reward_id'], $type == 1 ? "签到奖励" : "累计签到奖励");
$res = RewardService::sendRewardsMultiple($user_id, $reward['reward_id'], $sign_multiple,$type == 1 ? "签到奖励" : "累计签到奖励");
if ($res && $res['status']) {
return $res['data'];
}

View File

@ -45,6 +45,44 @@ class RewardService
return ['status' => true, 'msg' => '奖励发放成功', 'data' => $result];
}
/**
* 发放奖励
* @param int $user_id 用户ID
* @param string $reward_ids 奖励ID或奖励ID数组
* @param string $source 奖励来源(如:签到、任务等)
* @return array 处理结果
*/
public static function sendRewardsMultiple($user_id, $reward_id, $sign_multiple, $source = '系统奖励')
{
if (!$user_id) {
return ['status' => false, 'msg' => '用户ID不能为空'];
}
// 获取奖励信息
$rewards = Reward::where('reward_id', '=', $reward_id)
->select()
->toArray();
if (empty($rewards)) {
return ['status' => false, 'msg' => '未找到有效奖励'];
}
$result = [];
$user = User::find($user_id);
if (empty($user)) {
return ['status' => false, 'msg' => '用户不存在'];
}
foreach ($rewards as &$reward) {
$reward['reward_value'] = $reward['reward_value'] * $sign_multiple;
$res = self::sendSingleReward($user_id, $reward, $source);
$result[] = $res;
}
return ['status' => true, 'msg' => '奖励发放成功', 'data' => $result];
}
/**
* 发放单个奖励
* @param int $user_id 用户ID
@ -61,20 +99,20 @@ class RewardService
case 1: // 钻石
$res = User::changeMoney($user_id, $reward['reward_value'], 6, $source);
$result['status'] = !empty($res);
$result['msg'] = $result['status'] ? '获得钻石*'.$reward['reward_value'] : '钻石发放失败';
$result['msg'] = $result['status'] ? '获得钻石*' . $reward['reward_value'] : '钻石发放失败';
break;
case 2: // 货币1
$res = User::changeIntegral($user_id, $reward['reward_value'], 6, $source);
$result['status'] = !empty($res);
$result['msg'] = $result['status'] ? '获得UU币*'.$reward['reward_value'] : 'UU币发放失败';
$result['msg'] = $result['status'] ? '获得UU币*' . $reward['reward_value'] : 'UU币发放失败';
break;
case 3: // 货币2
$res = User::changeMoney2($user_id, $reward['reward_value'], 6, $source);
$result['status'] = !empty($res);
$result['msg'] = $result['status'] ? '获得达达券*'.$reward['reward_value'] : '达达券发放失败';
$result['msg'] = $result['status'] ? '获得达达券*' . $reward['reward_value'] : '达达券发放失败';
break;
case 4: // 优惠券
if (!empty($reward['reward_extend'])) {
@ -110,4 +148,5 @@ class RewardService
return $result;
}
}