功能:商店完善戒指板块
迁移:
- 2026_03_01_153959:shop_items 增加 intimacy_bonus/charm_bonus 字段
Seeder(RingItemsSeeder):
- 银质戒指 500金 亲密+10 魅力+30
- 黄金戒指 2000金 亲密+30 魅力+80
- 红宝石戒指 8000金 亲密+80 魅力+200
- 钻石戒指 30000金 亲密+200 魅力+500
- 传说神戒 100000金 亲密+500 魅力+1000
ShopService:
- buyItem() 分支加 ring 类型
- buyRing():扣金币 + 写入 active UserPurchase(背包持有)
ShopController::items():
- 返回 intimacy_bonus/charm_bonus
- 统计 ring_counts(各戒指持有数量)
shop-panel.blade.php:
- 新增「💍 求婚戒指」分组(排在最后)
- 图标右上角红色数字徽章(持有时)
- 卡片下方显示亲密度/魅力加成
- 购买按钮与现有逻辑复用
This commit is contained in:
@@ -32,6 +32,7 @@ class ShopService
|
||||
'instant' => $this->buyInstant($user, $item),
|
||||
'duration' => $this->buyWeekCard($user, $item),
|
||||
'one_time' => $this->buyRenameCard($user, $item),
|
||||
'ring' => $this->buyRing($user, $item),
|
||||
default => ['ok' => false, 'message' => '未知商品类型'],
|
||||
};
|
||||
}
|
||||
@@ -209,6 +210,31 @@ class ShopService
|
||||
return $purchase->shopItem->effectKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* 购买结婚戒指:扣金币、写入背包(active 状态,等待结婚时消耗)。
|
||||
*
|
||||
* @return array{ok:bool, message:string}
|
||||
*/
|
||||
public function buyRing(User $user, ShopItem $item): array
|
||||
{
|
||||
DB::transaction(function () use ($user, $item): void {
|
||||
// 扣除金币
|
||||
$user->decrement('jjb', $item->price);
|
||||
// 写入背包(active = 未使用,求婚时变为 used_pending→used 或 lost)
|
||||
UserPurchase::create([
|
||||
'user_id' => $user->id,
|
||||
'shop_item_id' => $item->id,
|
||||
'status' => 'active',
|
||||
'price_paid' => $item->price,
|
||||
]);
|
||||
});
|
||||
|
||||
return [
|
||||
'ok' => true,
|
||||
'message' => "💍 {$item->name} 购买成功!已放入背包,可用于求婚。",
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户当前激活的改名卡(是否持有未用改名卡)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user