新增聊天室成就系统与消息保留策略
This commit is contained in:
@@ -21,6 +21,7 @@ use App\Http\Requests\UpdateDailyStatusRequest;
|
||||
use App\Http\Requests\UpdateProfileRequest;
|
||||
use App\Models\Sysparam;
|
||||
use App\Models\User;
|
||||
use App\Services\AchievementService;
|
||||
use App\Services\ChatStateService;
|
||||
use App\Services\ChatUserPresenceService;
|
||||
use App\Services\PositionPermissionService;
|
||||
@@ -58,6 +59,7 @@ class UserController extends Controller
|
||||
private readonly ChatStateService $chatState,
|
||||
private readonly ChatUserPresenceService $chatUserPresenceService,
|
||||
private readonly UserCurrencyService $currencyService,
|
||||
private readonly AchievementService $achievementService,
|
||||
private readonly PositionPermissionService $positionPermissionService,
|
||||
) {}
|
||||
|
||||
@@ -159,6 +161,14 @@ class UserController extends Controller
|
||||
'expires_at' => $signIdentity->expires_at?->toIso8601String(),
|
||||
] : null,
|
||||
];
|
||||
// 名片展示前先静默补算一次,避免进度已达标但解锁记录尚未落库。
|
||||
$this->achievementService->scanUser($targetUser);
|
||||
$achievementDisplay = $this->achievementService->displayForUser($targetUser);
|
||||
$data['achievements'] = [
|
||||
'unlocked_count' => $achievementDisplay['unlocked_count'],
|
||||
'total_count' => $achievementDisplay['total_count'],
|
||||
'recent' => $this->achievementService->recentUnlockedForUser($targetUser, 5)->values()->all(),
|
||||
];
|
||||
|
||||
// 管理员网络信息仅对站长或拥有「封IP」职务权限的操作者展示。
|
||||
$canViewNetworkInfo = $operator
|
||||
|
||||
Reference in New Issue
Block a user