任务时间: 2025年06月11日 14:09
完成时间: 2025年06月11日 14:20
任务类型: 功能开发
实现用户登录时间和活动时间的记录功能,包括数据库结构修改、服务类创建、事件监听器实现等完整功能。
kku_user_infos 表中添加了两个新字段:
last_login_time: 最后登录时间last_activity_time: 最后活动时间创建文件: app/Module/User/Services/UserActivityService.php
主要功能:
核心方法:
updateLoginTime(int $userId, ?Carbon $loginTime = null): bool
updateActivityTime(int $userId, ?Carbon $activityTime = null, bool $forceUpdate = false): bool
getLastLoginTime(int $userId): ?Carbon
getLastActivityTime(int $userId): ?Carbon
batchUpdateActivityTime(array $userActivities): int
创建文件: app/Module/User/Listeners/LoginSuccessListener.php
LoginSuccessEvent 事件修改文件: app/Module/AppGame/Handler/BaseHandler.php
updateUserActivityTime() 方法修改文件: app/Module/User/Models/UserInfo.php
$fillable 数组修改文件: app/Module/User/Providers/UserServiceProvider.php
LoginSuccessEvent 的监听器修改文件: config/app.php
UserServiceProvider 到服务提供者列表创建文件: app/Module/User/Middleware/UpdateActivityTimeMiddleware.php
创建文件: app/Module/AppGame/Handler/Test/ActivityTimeTestHandler.php
创建文件: app/Module/User/Docs/用户活动时间功能.md
class YourHandler extends BaseHandler
{
protected bool $need_login = true;
public function handle(Message $data): Message
{
// 业务逻辑
// 更新用户活动时间
$this->updateUserActivityTime();
return $response;
}
}
// 更新活动时间
UserActivityService::updateActivityTime($userId);
// 获取最后登录时间
$lastLogin = UserActivityService::getLastLoginTime($userId);
执行SQL验证功能正常:
-- 查看表结构
DESCRIBE kku_user_infos;
-- 测试数据更新
UPDATE kku_user_infos SET last_login_time = NOW(), last_activity_time = NOW() WHERE user_id = 1;
-- 验证数据
SELECT user_id, last_login_time, last_activity_time FROM kku_user_infos WHERE user_id = 1;
// 缓存过期时间(秒)
const CACHE_TTL = 300; // 5分钟
// 活动时间更新间隔(秒)
const ACTIVITY_UPDATE_INTERVAL = 60; // 1分钟
app/Module/User/Services/UserActivityService.php - 核心服务类app/Module/User/Listeners/LoginSuccessListener.php - 事件监听器app/Module/User/Middleware/UpdateActivityTimeMiddleware.php - 中间件app/Module/AppGame/Handler/Test/ActivityTimeTestHandler.php - 测试Handlerapp/Module/User/Docs/用户活动时间功能.md - 功能文档app/Module/User/Databases/GenerateSql/user_infos.sql - 数据库结构app/Module/User/Models/UserInfo.php - 模型更新app/Module/AppGame/Handler/BaseHandler.php - 基类扩展app/Module/User/Providers/UserServiceProvider.php - 服务提供者config/app.php - 应用配置app/Module/AppGame/Handler/Land/HarvestHandler.php - 示例应用本次任务成功实现了完整的用户登录时间和活动时间记录功能,包括:
功能已经可以正常使用,为后续的用户活跃度分析和在线状态判断提供了基础支持。