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 @@ +
+
+
内测配置
+
+
+ +
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
签到时获得的积分将乘以此倍数
+
+
+
+
+ +
+
+
+
+
+
@@ -268,8 +304,6 @@
- -
@@ -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