From 9be577cc81018a1977299b4a4267026ec056c7ab Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Thu, 4 Aug 2022 13:02:55 +0800 Subject: [PATCH] harem addition --- include/cleanup.php | 40 ++++++++-------------------------- include/functions.php | 17 +++++++++++++++ lang/chs/lang_mybonus.php | 8 +++++++ lang/chs/lang_settings.php | 3 +++ lang/cht/lang_mybonus.php | 8 +++++++ lang/cht/lang_settings.php | 3 +++ lang/en/lang_mybonus.php | 8 +++++++ lang/en/lang_settings.php | 3 +++ public/mybonus.php | 27 +++++++++++++++++++++++ public/settings.php | 11 +++++++++- resources/lang/en/admin.php | 1 + resources/lang/zh_TW/admin.php | 1 + 12 files changed, 98 insertions(+), 32 deletions(-) diff --git a/include/cleanup.php b/include/cleanup.php index 3bb4799c..3f2c22a3 100644 --- a/include/cleanup.php +++ b/include/cleanup.php @@ -264,45 +264,23 @@ function docleanup($forceAll = 0, $printProgress = false) { $res = sql_query("SELECT DISTINCT userid FROM peers WHERE seeder = 'yes'") or sqlerr(__FILE__, __LINE__); if (mysql_num_rows($res) > 0) { -// $sqrtof2 = sqrt(2); -// $logofpointone = log(0.1); -// $valueone = $logofpointone / $tzero_bonus; -// $pi = 3.141592653589793; -// $valuetwo = $bzero_bonus * ( 2 / $pi); -// $valuethree = $logofpointone / ($nzero_bonus - 1); -// $timenow = TIMENOW; -// $sectoweek = 7*24*60*60; + $haremAdditionFactor = get_setting('bonus.harem_addition'); while ($arr = mysql_fetch_assoc($res)) //loop for different users { -// $A = 0; -// $count = 0; -// $all_bonus = 0; -// $torrentres = sql_query("select torrents.added, torrents.size, torrents.seeders from torrents LEFT JOIN peers ON peers.torrent = torrents.id WHERE peers.userid = {$arr['userid']} AND peers.seeder ='yes' group by torrents.id") or sqlerr(__FILE__, __LINE__); -// while ($torrent = mysql_fetch_array($torrentres)) -// { -// $weeks_alive = ($timenow - strtotime($torrent['added'])) / $sectoweek; -// $gb_size = $torrent['size'] / 1073741824; -// $temp = (1 - exp($valueone * $weeks_alive)) * $gb_size * (1 + $sqrtof2 * exp($valuethree * ($torrent['seeders'] - 1))); -// $A += $temp; -// $count++; -// } -// if ($count > $maxseeding_bonus) -// $count = $maxseeding_bonus; -// $all_bonus = $seedPoints = ($valuetwo * atan($A / $l_bonus) + ($perseeding_bonus * $count)) / (3600 / $autoclean_interval_one); -// $is_donor = get_single_value("users","donor","WHERE id=".$arr['userid']); -// $log = "[UPDATE_BONUS], user: {$arr['userid']}, original bonus: $all_bonus, is_donor: $is_donor, donortimes_bonus: $donortimes_bonus"; -// if ($is_donor == 'yes' && $donortimes_bonus > 0) { -// $all_bonus = $all_bonus * $donortimes_bonus; -// $log .= ", do multiple, all_bonus: $all_bonus"; -// } -// do_log($log); $seedBonusResult = calculate_seed_bonus($arr['userid']); $dividend = 3600 / $autoclean_interval_one; $all_bonus = $seedBonusResult['all_bonus'] / $dividend; $seed_points = $seedBonusResult['seed_points'] / $dividend; + $bonusLog = "[CLEANUP_CALCULATE_SEED_BONUS], user: {$arr['userid']}, seedBonusResult: " . nexus_json_encode($seedBonusResult) . ", all_bonus: $all_bonus, seed_points: $seed_points"; + if ($haremAdditionFactor > 0) { + $haremAddition = calculate_harem_addition($arr['userid']) * $haremAdditionFactor / $dividend; + $all_bonus += $haremAddition; + $bonusLog .= ", haremAddition: $haremAddition, new all_bonus: $all_bonus"; + } $sql = "update users set seed_points = ifnull(seed_points, 0) + $seed_points, seedbonus = seedbonus + $all_bonus where id = {$arr["userid"]}"; - do_log("[CLEANUP_CALCULATE_SEED_BONUS], result: " . nexus_json_encode($seedBonusResult) . ", query: $sql"); + do_log("$bonusLog, query: $sql"); sql_query($sql); + } } $log = 'calculate seeding bonus'; diff --git a/include/functions.php b/include/functions.php index f8d8a047..1ceb31da 100644 --- a/include/functions.php +++ b/include/functions.php @@ -5730,4 +5730,21 @@ function calculate_seed_bonus($uid, $torrentIdArr = null): array return $result; } +function calculate_harem_addition($uid) +{ + $harems = \App\Models\User::query() + ->where('invited_by', $uid) + ->where('status', \App\Models\User::STATUS_CONFIRMED) + ->where('enabled', \App\Models\User::ENABLED_YES) + ->get(['id']); + $addition = 0; + $haremsCount = $harems->count(); + foreach ($harems as $harem) { + $result = calculate_seed_bonus($harem->id); + $addition += $result['all_bonus']; + } + do_log("[HAREM_ADDITION], user: $uid, haremsCount: $haremsCount ,addition: $addition"); + return $addition; +} + ?> diff --git a/lang/chs/lang_mybonus.php b/lang/chs/lang_mybonus.php index 0b7953ed..28f33fc1 100644 --- a/lang/chs/lang_mybonus.php +++ b/lang/chs/lang_mybonus.php @@ -130,6 +130,14 @@ $lang_mybonus = array 'text_attendance_card' => '购买补签卡', 'text_attendance_card_note' => '补签一天消耗一张,补签目标日期所得魔力奖励按照正常计算,即目标日期往前推计算连续天数获得奖励。', 'text_success_buy_attendance_card' => '成功购买了一张补签卡。', + 'text_harem_addition_get' => '当前后宫加成每小时获得 %s 魔力', + 'reward_type' => '奖励类型', + 'addition' => '加成', + 'got_bonus' => '获得魔力', + 'total' => '合计', + 'reward_type_basic' => '基本奖励', + 'reward_type_harem_addition' => '后宫加成', + 'bonus_base' => '基础魔力', ); ?> diff --git a/lang/chs/lang_settings.php b/lang/chs/lang_settings.php index 06523933..7c0cea46 100644 --- a/lang/chs/lang_settings.php +++ b/lang/chs/lang_settings.php @@ -766,6 +766,9 @@ $lang_settings = array 'row_imdb_language' => 'IMDB 语言', 'text_imdb_language_note' => '抓取 IMDB 数据使用的语言。', 'text_login_type_passkey' => 'passkey', + 'row_harem_addition' => '后宫加成', + 'text_user_would_get_by_harem' => '用户将获得直属后宫魔力值的', + 'text_harem_addition_note' => '倍作为奖励(系数,如填入 0.01,后宫获得 100 魔力则奖励用户 100 * 0.01 = 1)', ); ?> diff --git a/lang/cht/lang_mybonus.php b/lang/cht/lang_mybonus.php index b58a8879..c120eb79 100644 --- a/lang/cht/lang_mybonus.php +++ b/lang/cht/lang_mybonus.php @@ -130,6 +130,14 @@ $lang_mybonus = array 'text_attendance_card' => '購買補簽卡', 'text_attendance_card_note' => '補簽一天消耗一張,補簽目標日期所得魔力獎勵按照正常計算,即目標日期往前推計算連續天數獲得獎勵。', 'text_success_buy_attendance_card' => '成功購買了一張補簽卡。', + 'text_harem_addition_get' => '當前後宮加成每小時獲得 %s 魔力', + 'reward_type' => '獎勵類型', + 'addition' => '加成', + 'got_bonus' => '獲得魔力', + 'total' => '合計', + 'reward_type_basic' => '基本獎勵', + 'reward_type_harem_addition' => '後宮加成', + 'bonus_base' => '基礎魔力', ); ?> diff --git a/lang/cht/lang_settings.php b/lang/cht/lang_settings.php index 1805d763..0cdd5439 100644 --- a/lang/cht/lang_settings.php +++ b/lang/cht/lang_settings.php @@ -766,6 +766,9 @@ $lang_settings = array 'row_imdb_language' => 'IMDB 語言', 'text_imdb_language_note' => '抓取 IMDB 數據使用的語言。', 'text_login_type_passkey' => 'passkey', + 'row_harem_addition' => '後宮加成', + 'text_user_would_get_by_harem' => '用戶將獲得直屬後宮魔力值的', + 'text_harem_addition_note' => '倍作為獎勵(系數,如填入 0.01,後宮獲得 100 魔力則獎勵用戶 100 * 0.01 = 1)', ); ?> diff --git a/lang/en/lang_mybonus.php b/lang/en/lang_mybonus.php index 62db3d3e..ce663fce 100644 --- a/lang/en/lang_mybonus.php +++ b/lang/en/lang_mybonus.php @@ -130,6 +130,14 @@ where"); // $sqrtof2 = sqrt(2); @@ -429,6 +430,32 @@ $A = $seedBonusResult['A']; $width = $percent * 4; print("\"".$percent."%\""); +$factor = get_setting('bonus.harem_addition'); +$addition = calculate_harem_addition($CURUSER['id']); +$totalBonus = number_format($all_bonus + $addition * $factor, 3); +$summaryTable = ''; +$summaryTable .= ''; +$summaryTable .= sprintf( + '', + $lang_mybonus['reward_type_basic'], + round($all_bonus,3), + '-', + round($all_bonus,3), + $totalBonus +); +if ($factor > 0) { + $summaryTable .= sprintf( + '', + $lang_mybonus['reward_type_harem_addition'], + number_format($addition, 3), + number_format($factor * 100, 2) . '%', + number_format($addition * $factor, 3) + ); +} +$summaryTable .= '
'.$lang_mybonus['reward_type'].''.$lang_mybonus['bonus_base'].''.$lang_mybonus['addition'].''.$lang_mybonus['got_bonus'].''.$lang_mybonus['total'].'
%s%s%s%s%s
%s%s%s%s
'; + +print '
'.$summaryTable.'
'; + print("

".$lang_mybonus['text_other_things_get_bonus']."

"); print("