任务时间: 2025年06月16日 16:13
任务类型: 功能开发
模块: UrsPromotion
为URS推广模块新增活跃用户概念,将用户活跃度作为达人等级升级的新条件,提升推广体系的质量和真实性。
文件: app/Module/UrsPromotion/Database/add_active_user_fields.sql
新增字段:
is_active TINYINT(1) - 是否活跃:1活跃,0不活跃last_activity_check TIMESTAMP - 最后活跃检查时间active_days_count INT - 活跃天数统计索引优化:
idx_is_active - 活跃状态索引idx_last_activity_check - 检查时间索引新增字段:
active_count_required INT - 所需活跃人数active_direct_required INT - 所需直推活跃人数配置示例: | 等级 | 名称 | 直推要求 | 团队要求 | 活跃直推要求 | 活跃团队要求 | |------|------|----------|----------|--------------|--------------| | 1 | 初级达人 | 3 | 10 | 2 | 3 | | 2 | 中级达人 | 8 | 30 | 5 | 8 | | 3 | 高级达人 | 15 | 80 | 8 | 15 | | 4 | 资深达人 | 30 | 200 | 15 | 30 | | 5 | 顶级达人 | 50 | 500 | 25 | 50 |
文件: app/Module/UrsPromotion/Services/UrsActiveUserService.php
核心方法:
updateUserActiveStatus() - 更新单个用户活跃状态batchUpdateActiveStatus() - 批量更新活跃状态checkUserActivity() - 检查用户活跃状态getActiveTeamMembers() - 获取活跃团队成员getActiveUserStats() - 获取活跃用户统计活跃判定规则:
const ACTIVE_DAYS_THRESHOLD = 15; // 活跃天数阈值
public static function checkUserActivity(User $user): bool
{
if (!$user->last_activity_time) {
return false;
}
$threshold = Carbon::now()->subDays(self::ACTIVE_DAYS_THRESHOLD);
return $user->last_activity_time >= $threshold;
}
UrsUserMapping模型更新:
UrsTalentConfig模型更新:
UrsTalentService扩展:
calculateTalentLevel()方法,集成活跃用户条件checkUpgradeEligibility()方法,检查活跃用户要求UrsUserMappingService扩展:
文件: app/Module/UrsPromotion/Commands/UrsUpdateActiveStatusCommand.php
功能特性:
使用示例:
# 正常更新
php artisan urs:update-active-status
# 限制处理500个用户
php artisan urs:update-active-status --limit=500
# 试运行模式
php artisan urs:update-active-status --dry-run
# 重置所有状态
php artisan urs:update-active-status --reset
建议crontab配置:
# 每日凌晨2点执行
0 2 * * * cd /path/to/project && php artisan urs:update-active-status
文件: app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php
新增功能:
文件: app/Module/UrsPromotion/AdminControllers/UrsTalentConfigController.php
新增功能:
文件: app/Module/UrsPromotion/Commands/TestActiveUserCommand.php
测试功能:
使用示例:
# 运行完整测试
php artisan urs:test-active-user
# 测试活跃用户统计
php artisan urs:test-active-user --stats
# 测试指定用户
php artisan urs:test-active-user --user-id=1001
文件: app/Module/UrsPromotion/Docs/活跃用户功能.md
内容结构:
文件: app/Module/UrsPromotion/Docs/用户绑定关系.md
更新内容:
文件: app/Module/UrsPromotion/Docs/DEV.md
更新内容:
# 执行数据库迁移脚本
mysql -u username -p database_name < app/Module/UrsPromotion/Database/add_active_user_fields.sql
# 添加到crontab
0 2 * * * cd /path/to/project && php artisan urs:update-active-status
# 运行功能测试
php artisan urs:test-active-user
# 试运行活跃状态更新
php artisan urs:update-active-status --dry-run
app/Module/UrsPromotion/Services/UrsActiveUserService.phpapp/Module/UrsPromotion/Commands/UrsUpdateActiveStatusCommand.phpapp/Module/UrsPromotion/Commands/TestActiveUserCommand.phpapp/Module/UrsPromotion/Database/add_active_user_fields.sqlapp/Module/UrsPromotion/Docs/活跃用户功能.mdapp/Module/UrsPromotion/Models/UrsUserMapping.phpapp/Module/UrsPromotion/Models/UrsTalentConfig.phpapp/Module/UrsPromotion/Services/UrsTalentService.phpapp/Module/UrsPromotion/Services/UrsUserMappingService.phpapp/Module/UrsPromotion/AdminControllers/UrsUserMappingController.phpapp/Module/UrsPromotion/AdminControllers/UrsTalentConfigController.phpapp/Module/UrsPromotion/Docs/用户绑定关系.mdapp/Module/UrsPromotion/Docs/DEV.mdGit提交: ae0723a5
提交信息: 实现URS推广模块活跃用户功能
任务完成时间: 2025年06月16日 16:13
功能开发状态: ✅ 已完成