medal add bonus addition duration

This commit is contained in:
xiaomlove
2025-07-14 21:03:09 +07:00
parent b81cf0c1c6
commit 3ffdec1f4a
11 changed files with 78 additions and 17 deletions
+2 -5
View File
@@ -70,11 +70,8 @@ class BonusRepository extends BaseRepository
], $user->locale);
do_log("comment: $comment");
$this->consumeUserBonus($user, $requireBonus, BonusLogs::BUSINESS_TYPE_BUY_MEDAL, "$comment(medal ID: {$medal->id})");
$expireAt = null;
if ($medal->duration > 0) {
$expireAt = Carbon::now()->addDays((int)$medal->duration)->toDateTimeString();
}
$user->medals()->attach([$medal->id => ['expire_at' => $expireAt, 'status' => UserMedal::STATUS_NOT_WEARING]]);
$medalRep = new MedalRepository();
$medalRep->userAttachMedal($user, $medal);
if ($medal->inventory !== null) {
$affectedRows = NexusDB::table('medals')
->where('id', $medal->id)
+19 -4
View File
@@ -68,12 +68,27 @@ class MedalRepository extends BaseRepository
if ($exists) {
throw new \LogicException("user: $uid already own this medal: $medalId.");
}
$this->userAttachMedal($user, $medal);
}
public function userAttachMedal(User $user, Medal $medal): void
{
$expireAt = null;
if ($duration > 0) {
$expireAt = Carbon::now()->addDays(intval($duration))->toDateTimeString();
$bonusAdditionExpireAt = null;
if ($medal->duration > 0) {
$expireAt = Carbon::now()->addDays((int)$medal->duration)->toDateTimeString();
}
clear_user_cache($uid);
return $user->medals()->attach([$medal->id => ['expire_at' => $expireAt, 'status' => UserMedal::STATUS_NOT_WEARING]]);
if ($medal->bonus_addition_duration > 0) {
$bonusAdditionExpireAt = Carbon::now()->addDays((int)$medal->bonus_addition_duration)->toDateTimeString();
}
$user->medals()->attach([
$medal->id => [
'expire_at' => $expireAt,
'bonus_addition_expire_at' => $bonusAdditionExpireAt,
'status' => UserMedal::STATUS_NOT_WEARING,
]
]);
clear_user_cache($user->id);
}
public function toggleUserMedalStatus($id, $userId)