diff --git a/app/admin/controller/Config.php b/app/admin/controller/Config.php
index 484e9e3..7f92ad5 100755
--- a/app/admin/controller/Config.php
+++ b/app/admin/controller/Config.php
@@ -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('修改成功');
diff --git a/app/admin/view/Config/systemconfig.html b/app/admin/view/Config/systemconfig.html
index 1a9a01b..3d84728 100755
--- a/app/admin/view/Config/systemconfig.html
+++ b/app/admin/view/Config/systemconfig.html
@@ -237,6 +237,42 @@
+
@@ -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;
diff --git a/app/common/helper/ConfigHelper.php b/app/common/helper/ConfigHelper.php
index 213bf35..45e22e7 100755
--- a/app/common/helper/ConfigHelper.php
+++ b/app/common/helper/ConfigHelper.php
@@ -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);
+ }
}
\ No newline at end of file
diff --git a/app/common/model/UserSign.php b/app/common/model/UserSign.php
index 7fbde15..6afaf80 100755
--- a/app/common/model/UserSign.php
+++ b/app/common/model/UserSign.php
@@ -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'];
}
diff --git a/app/common/service/RewardService.php b/app/common/service/RewardService.php
index 5190623..c6dc829 100755
--- a/app/common/service/RewardService.php
+++ b/app/common/service/RewardService.php
@@ -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;
}
+
}
\ No newline at end of file