fix calculateUserSeedBons

This commit is contained in:
xiaomlove
2023-07-13 01:23:08 +08:00
parent 1d560d9aca
commit d8aef62b33
+8 -6
View File
@@ -2,6 +2,7 @@
namespace App\Repositories; namespace App\Repositories;
use App\Models\Setting; use App\Models\Setting;
use App\Models\User;
use Carbon\Carbon; use Carbon\Carbon;
use Nexus\Database\NexusDB; use Nexus\Database\NexusDB;
@@ -196,10 +197,12 @@ LUA;
/* Don't ever return an empty array until we're done iterating */ /* Don't ever return an empty array until we're done iterating */
$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY); $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
while($arr_keys = $redis->hScan($batch, $it, "*", $size)) { while($arr_keys = $redis->hScan($batch, $it, "*", $size)) {
foreach($arr_keys as $uid => $timestamp) { $uidArr = array_keys($arr_keys);
do_log("$logPrefix $uid => $timestamp"); /* Print the hash member and value */ $sql = sprintf("select %s from users where id in (%s)", implode(',', User::$commonFields), implode(',', $uidArr));
$results = NexusDB::select($sql);
$userInfo = get_user_row($uid); foreach ($results as $userInfo)
{
$uid = $userInfo['id'];
$isDonor = is_donor($userInfo); $isDonor = is_donor($userInfo);
$seedBonusResult = calculate_seed_bonus($uid); $seedBonusResult = calculate_seed_bonus($uid);
$bonusLog = "[CLEANUP_CLI_CALCULATE_SEED_BONUS], user: $uid, seedBonusResult: " . nexus_json_encode($seedBonusResult); $bonusLog = "[CLEANUP_CLI_CALCULATE_SEED_BONUS], user: $uid, seedBonusResult: " . nexus_json_encode($seedBonusResult);
@@ -229,7 +232,7 @@ LUA;
$all_bonus = $all_bonus / $dividend; $all_bonus = $all_bonus / $dividend;
$seed_points = $seedBonusResult['seed_points'] / $dividend; $seed_points = $seedBonusResult['seed_points'] / $dividend;
$updatedAt = now()->toDateTimeString(); $updatedAt = now()->toDateTimeString();
$sql = "update users set seed_points = ifnull(seed_points, 0) + $seed_points, seedbonus = seedbonus + $all_bonus, seed_points_per_hour = {$seedBonusResult['seed_points']} ,seed_points_updated_at = '$updatedAt' where id = $uid limit 1"; $sql = "update users set seed_points = ifnull(seed_points, 0) + $seed_points, seed_points_per_hour = {$seedBonusResult['seed_points']}, seedbonus = seedbonus + $all_bonus, seed_points_updated_at = '$updatedAt' where id = $uid limit 1";
do_log("$bonusLog, query: $sql"); do_log("$bonusLog, query: $sql");
NexusDB::statement($sql); NexusDB::statement($sql);
if ($fd) { if ($fd) {
@@ -243,7 +246,6 @@ LUA;
} else { } else {
do_log("logFile: $logFile is not writeable!", 'error'); do_log("logFile: $logFile is not writeable!", 'error');
} }
$count++;
} }
sleep(rand(1, 10)); sleep(rand(1, 10));
} }