From 9cf6583d9a8e009de99e4aad65ac519c030c3219 Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Thu, 26 Jan 2023 23:08:49 +0800 Subject: [PATCH] add medal bonus addition --- .../Resources/System/MedalResource.php | 7 ++++ app/Jobs/CalculateUserSeedBonus.php | 5 +++ app/Models/Medal.php | 2 +- ..._bonus_addition_factor_to_medals_table.php | 32 ++++++++++++++++ include/constants.php | 2 +- include/functions.php | 37 +++++++++++++++++-- lang/chs/lang_mybonus.php | 3 ++ public/medal.php | 6 ++- public/mybonus.php | 19 +++++++--- resources/lang/en/bonus.php | 1 + resources/lang/en/medal.php | 2 + resources/lang/zh_CN/bonus.php | 1 + resources/lang/zh_CN/medal.php | 2 + resources/lang/zh_TW/bonus.php | 1 + resources/lang/zh_TW/medal.php | 2 + 15 files changed, 108 insertions(+), 14 deletions(-) create mode 100644 database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php diff --git a/app/Filament/Resources/System/MedalResource.php b/app/Filament/Resources/System/MedalResource.php index 1c500cec..73a316e4 100644 --- a/app/Filament/Resources/System/MedalResource.php +++ b/app/Filament/Resources/System/MedalResource.php @@ -70,6 +70,12 @@ class MedalResource extends Resource ->label(__('medal.fields.sale_end_time')) ->helperText(__('medal.fields.sale_end_time_help')) , + Forms\Components\TextInput::make('bonus_addition_factor') + ->label(__('medal.fields.bonus_addition_factor')) + ->helperText(__('medal.fields.bonus_addition_factor_help')) + ->numeric() + ->default(0) + , Forms\Components\Textarea::make('description') ->label(__('label.description')) , @@ -89,6 +95,7 @@ class MedalResource extends Resource ->label(__('medal.fields.sale_begin_end_time')) ->formatStateUsing(fn ($record) => new HtmlString(sprintf('%s ~
%s', $record->sale_begin_time ?? '--', $record->sale_end_time ?? '--'))) , + Tables\Columns\TextColumn::make('bonus_addition_factor')->label(__('medal.fields.bonus_addition_factor')), Tables\Columns\TextColumn::make('price')->label(__('label.price')), Tables\Columns\TextColumn::make('duration')->label(__('label.medal.duration')), diff --git a/app/Jobs/CalculateUserSeedBonus.php b/app/Jobs/CalculateUserSeedBonus.php index 7e3b5c69..4b06682b 100644 --- a/app/Jobs/CalculateUserSeedBonus.php +++ b/app/Jobs/CalculateUserSeedBonus.php @@ -91,6 +91,11 @@ class CalculateUserSeedBonus implements ShouldQueue $all_bonus += $haremAddition; $bonusLog .= ", haremAdditionFactor: $haremAdditionFactor, haremBonus: $haremBonus, haremAddition: $haremAddition, all_bonus: $all_bonus"; } + if ($seedBonusResult['medal_additional_factor'] > 0) { + $medalAddition = $seedBonusResult['medal_bonus'] * $seedBonusResult['medal_additional_factor']; + $all_bonus += $medalAddition; + $bonusLog .= ", medalAdditionFactor: {$seedBonusResult['medal_additional_factor']}, medalBonus: {$seedBonusResult['medal_bonus']}, medalAddition: $medalAddition, all_bonus: $all_bonus"; + } $dividend = 3600 / $autoclean_interval_one; $all_bonus = $all_bonus / $dividend; $seed_points = $seedBonusResult['seed_points'] / $dividend; diff --git a/app/Models/Medal.php b/app/Models/Medal.php index 271c8651..a76dfca7 100644 --- a/app/Models/Medal.php +++ b/app/Models/Medal.php @@ -17,7 +17,7 @@ class Medal extends NexusModel protected $fillable = [ 'name', 'description', 'image_large', 'image_small', 'price', 'duration', 'get_type', - 'display_on_medal_page', 'sale_begin_time', 'sale_end_time', 'inventory', + 'display_on_medal_page', 'sale_begin_time', 'sale_end_time', 'inventory', 'bonus_addition_factor', ]; public $timestamps = true; diff --git a/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php b/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php new file mode 100644 index 00000000..17eb44f7 --- /dev/null +++ b/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php @@ -0,0 +1,32 @@ +float('bonus_addition_factor')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('medals', function (Blueprint $table) { + $table->dropColumn(['bonus_addition_factor']); + }); + } +}; diff --git a/include/constants.php b/include/constants.php index c89c35dd..261c281c 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@ 0) { $rowSpan++; $hasHaremAddition = true; @@ -6260,6 +6270,10 @@ function build_bonus_table(array $user, array $bonusResult = [], array $options $rowSpan++; $hasOfficialAddition = true; } + if ($bonusResult['medal_additional_factor'] > 0) { + $rowSpan++; + $hasMedalAddition = true; + } $table = sprintf('', $options['table_style'] ?? ''); $table .= ''; @@ -6285,6 +6299,18 @@ function build_bonus_table(array $user, array $bonusResult = [], array $options $rowSpan, $totalBonus ); + if ($hasMedalAddition) { + $table .= sprintf( + '', + nexus_trans('bonus.reward_types.medal_addition'), + $bonusResult['torrent_peer_count'], + mksize($bonusResult['size']), + number_format($bonusResult['A'], 3), + number_format($bonusResult['medal_bonus'], 3), + $bonusResult['medal_additional_factor'], + number_format($bonusResult['medal_bonus'] * $bonusResult['medal_additional_factor'], 3) + ); + } if ($hasOfficialAddition) { $table .= sprintf( @@ -6311,6 +6337,7 @@ function build_bonus_table(array $user, array $bonusResult = [], array $options number_format($haremAddition * $haremFactor, 3) ); } + $table .= '
%s%s%s%s%s%s%s
'; return [ @@ -6319,6 +6346,8 @@ function build_bonus_table(array $user, array $bonusResult = [], array $options 'harem_addition_factor' => $haremFactor, 'has_official_addition' => $hasOfficialAddition, 'official_addition_factor' => $officialAdditionalFactor, + 'has_medal_addition' => $hasMedalAddition, + 'medal_addition_factor' => $bonusResult['medal_additional_factor'], ]; } diff --git a/lang/chs/lang_mybonus.php b/lang/chs/lang_mybonus.php index 8e0299b1..74bd1daf 100644 --- a/lang/chs/lang_mybonus.php +++ b/lang/chs/lang_mybonus.php @@ -167,6 +167,9 @@ $lang_mybonus = array 'text_success_buy_change_username_card' => "祝贺你,成功购买了改名卡!", 'text_change_username_card_already_has' => '已经拥有改名卡', 'text_rainbow_id_already_valid_forever' => '已永久拥有彩虹 ID', + 'text_get_by_medal' => '勋章加成每小时将额外得到如下的魔力值', + 'medal_additional_desc' => '勋章奖励计算公式同上,不考虑低保', + 'medal_additional_factor' => '最终奖励为计算所得勋章奖励乘以勋章加成系数,当前勋章加成系数为: ', ); ?> diff --git a/public/medal.php b/public/medal.php index 102e3a12..6db9489c 100644 --- a/public/medal.php +++ b/public/medal.php @@ -21,6 +21,7 @@ $columnDescriptionLabel = nexus_trans('medal.fields.description'); $columnActionLabel = nexus_trans('nexus.action'); $columnSaleBeginEndTimeLabel = nexus_trans('medal.fields.sale_begin_end_time'); $columnInventoryLabel = nexus_trans('medal.fields.inventory'); +$columnBonusAdditionFactorLabel = nexus_trans('medal.fields.bonus_addition_factor'); $header = '

'.$title.'

'; $filterForm = <<
@@ -41,6 +42,7 @@ $table = <<$columnNameLabel + @@ -81,8 +83,8 @@ foreach ($rows as $row) { $class, $row->id, $btnText, $disabled ); $table .= sprintf( - '', - $row->id, $row->name, $row->image_large, $row->sale_begin_time ?? '--', $row->sale_end_time ?? '--', number_format($row->price), $row->durationText, $row->inventory ?? nexus_trans('label.infinite'), $row->description, $action + '', + $row->id, $row->name, $row->image_large, $row->sale_begin_time ?? '--', $row->sale_end_time ?? '--', $row->bonus_addition_factor, number_format($row->price), $row->durationText, $row->inventory ?? nexus_trans('label.infinite'), $row->description, $action ); } $table .= '
$columnImageLargeLabel $columnSaleBeginEndTimeLabel$columnBonusAdditionFactorLabel $columnPriceLabel $columnDurationLabel $columnInventoryLabel
%s%s%s ~
%s
%s%s%s%s%s
%s%s%s ~
%s
%s%s%s%s%s%s
'; diff --git a/public/mybonus.php b/public/mybonus.php index 675f68d0..9511a3f3 100644 --- a/public/mybonus.php +++ b/public/mybonus.php @@ -489,6 +489,13 @@ else $loadpic = "loadbargreen"; $width = $percent * 4; print("\"".$percent."%\""); +if ($bonusTableResult['has_medal_addition']) { + print("

".$lang_mybonus['text_get_by_medal']."

"); + print(""); +} if ($bonusTableResult['has_official_addition']) { print("

".$lang_mybonus['text_get_by_seeding_official']."

"); print("