From 3edb283b620d1e38b43fd5adb5875ad798dd7c78 Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Mon, 30 Jan 2023 14:47:02 +0800 Subject: [PATCH] add medal max allow wear number --- .../System/SettingResource/Pages/EditSetting.php | 4 ++++ app/Repositories/MedalRepository.php | 8 ++++++++ nexus/Install/settings.default.php | 1 + resources/lang/en/label.php | 3 ++- resources/lang/en/medal.php | 1 + resources/lang/zh_CN/label.php | 1 + resources/lang/zh_CN/medal.php | 1 + resources/lang/zh_TW/label.php | 1 + resources/lang/zh_TW/medal.php | 1 + 9 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php b/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php index 53c207db..0aacad46 100644 --- a/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php +++ b/app/Filament/Resources/System/SettingResource/Pages/EditSetting.php @@ -127,6 +127,10 @@ class EditSetting extends Page implements Forms\Contracts\HasForms ->integer() ->label(__('label.setting.system.change_username_min_interval_in_days')) , + Forms\Components\TextInput::make('system.maximum_number_of_medals_can_be_worn') + ->integer() + ->label(__('label.setting.system.maximum_number_of_medals_can_be_worn')) + , ])->columns(2); $tabs = apply_filter('nexus_setting_tabs', $tabs); diff --git a/app/Repositories/MedalRepository.php b/app/Repositories/MedalRepository.php index ea2641fb..3e53f040 100644 --- a/app/Repositories/MedalRepository.php +++ b/app/Repositories/MedalRepository.php @@ -1,7 +1,9 @@ pivot->id; $idArr[] = $id; if (isset($userMedalData[$id]['status'])) { $status = UserMedal::STATUS_WEARING; + $wearCount++; } else { $status = UserMedal::STATUS_NOT_WEARING; } $statusCaseWhens[] = sprintf('when `id` = %s then %s', $id, $status); $priorityCaseWhens[] = sprintf('when `id` = %s then %s', $id, $userMedalData[$id]['priority'] ?? 0); } + $maxWearAllow = Setting::get('system.maximum_number_of_medals_can_be_worn'); + if ($maxWearAllow && $wearCount > $maxWearAllow) { + throw new NexusException(nexus_trans('medal.max_allow_wearing', ['count' => $maxWearAllow])); + } $sql = sprintf( 'update user_medals set `status` = case %s end, `priority` = case %s end where id in (%s)', implode(' ', $statusCaseWhens), implode(' ', $priorityCaseWhens), implode(',', $idArr) diff --git a/nexus/Install/settings.default.php b/nexus/Install/settings.default.php index 6691288b..02782903 100644 --- a/nexus/Install/settings.default.php +++ b/nexus/Install/settings.default.php @@ -438,5 +438,6 @@ return array ( 'system' => [ 'change_username_min_interval_in_days' => '365', 'change_username_card_allow_characters_outside_the_alphabets' => 'no', + 'maximum_number_of_medals_can_be_worn' => 3, ], ); diff --git a/resources/lang/en/label.php b/resources/lang/en/label.php index 4a9021ec..c1413aad 100644 --- a/resources/lang/en/label.php +++ b/resources/lang/en/label.php @@ -84,7 +84,8 @@ return [ 'system' => [ 'tab_header' => 'System', 'change_username_card_allow_characters_outside_the_alphabets' => 'Does the name change card allow characters other than English letters', - 'change_username_min_interval_in_days' => 'the minimum interval days of Change user name', + 'change_username_min_interval_in_days' => 'The minimum interval days of Change user name', + 'maximum_number_of_medals_can_be_worn' => 'Maximum number of medals that can be worn', ], ], 'user' => [ diff --git a/resources/lang/en/medal.php b/resources/lang/en/medal.php index 7ee1b9dc..5bb85a78 100644 --- a/resources/lang/en/medal.php +++ b/resources/lang/en/medal.php @@ -43,4 +43,5 @@ return [ 'inventory_empty' => 'Inventory empty', 'gift_btn' => 'Gift', 'confirm_to_gift' => 'Confirm to gift to user ', + 'max_allow_wearing' => 'A maximum of :count medals can be worn at the same time', ]; diff --git a/resources/lang/zh_CN/label.php b/resources/lang/zh_CN/label.php index f48a4617..696ce3d5 100644 --- a/resources/lang/zh_CN/label.php +++ b/resources/lang/zh_CN/label.php @@ -85,6 +85,7 @@ return [ 'tab_header' => '系统', 'change_username_card_allow_characters_outside_the_alphabets' => '改名卡是否允许英文字母外的字符', 'change_username_min_interval_in_days' => '修改用户名最小间隔天数', + 'maximum_number_of_medals_can_be_worn' => '勋章最大可佩戴数', ], ], 'user' => [ diff --git a/resources/lang/zh_CN/medal.php b/resources/lang/zh_CN/medal.php index dd14434e..c3b1a26f 100644 --- a/resources/lang/zh_CN/medal.php +++ b/resources/lang/zh_CN/medal.php @@ -43,4 +43,5 @@ return [ 'inventory_empty' => '库存不足', 'gift_btn' => '赠送', 'confirm_to_gift' => '确定要赠送给用户 ', + 'max_allow_wearing' => '最多允许同时佩戴 :count 个勋章', ]; diff --git a/resources/lang/zh_TW/label.php b/resources/lang/zh_TW/label.php index 66dd2a1b..e0097e79 100644 --- a/resources/lang/zh_TW/label.php +++ b/resources/lang/zh_TW/label.php @@ -85,6 +85,7 @@ return [ 'tab_header' => '系統', 'change_username_card_allow_characters_outside_the_alphabets' => '改名卡是否允許英文字母外的字符', 'change_username_min_interval_in_days' => '修改用戶名最小間隔天數', + 'maximum_number_of_medals_can_be_worn' => '勛章最大可佩戴數', ], ], 'user' => [ diff --git a/resources/lang/zh_TW/medal.php b/resources/lang/zh_TW/medal.php index a164298b..630a18e3 100644 --- a/resources/lang/zh_TW/medal.php +++ b/resources/lang/zh_TW/medal.php @@ -43,4 +43,5 @@ return [ 'inventory_empty' => '庫存不足', 'gift_btn' => '贈送', 'confirm_to_gift' => '確定要贈送給用戶 ', + 'max_allow_wearing' => '最多允許同時佩戴 :count 個勛章', ];