URS用户达人等级列表中的更新等级功能报错,包括:
文件: app/Module/UrsPromotion/AdminControllers/Actions/BatchUpdateTalentAction.php
错误: 第63行使用了未定义的变量 $userIds
原因: 变量名拼写错误,应该使用 $ursUserIds
错误: SQL错误 "Unknown column 'is_active' in 'where clause'" 原因: 代码中使用了活跃用户相关字段,但数据库表中没有这些字段
文件: app/Module/UrsPromotion/Services/UrsActiveUserService.php
错误: "Trying to access array offset on int"
原因: 错误地假设团队成员数据是对象数组,实际是简单的用户ID数组
// 修复前
$results = UrsTalentService::batchUpdateTalentLevels($userIds);
// 修复后
$results = UrsTalentService::batchUpdateTalentLevels($ursUserIds);
执行SQL脚本添加活跃用户相关字段:
-- 添加活跃状态字段
ALTER TABLE `kku_urs_promotion_user_mappings`
ADD COLUMN `is_active` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否活跃:1活跃,0不活跃' AFTER `status`;
-- 添加最后活跃检查时间字段
ALTER TABLE `kku_urs_promotion_user_mappings`
ADD COLUMN `last_activity_check` TIMESTAMP NULL COMMENT '最后活跃检查时间' AFTER `is_active`;
-- 添加活跃天数统计字段
ALTER TABLE `kku_urs_promotion_user_mappings`
ADD COLUMN `active_days_count` INT NOT NULL DEFAULT 0 COMMENT '活跃天数统计' AFTER `last_activity_check`;
-- 添加索引
ALTER TABLE `kku_urs_promotion_user_mappings`
ADD INDEX `idx_is_active` (`is_active`);
ALTER TABLE `kku_urs_promotion_user_mappings`
ADD INDEX `idx_last_activity_check` (`last_activity_check`);
// 修复前:错误地使用 array_column
$allMemberIds = array_merge($allMemberIds, array_column($members, 'urs_user_id'));
// 修复后:直接合并用户ID数组
$allMemberIds = array_merge($allMemberIds, $members);
✅ 正常工作 - 显示"达人等级更新成功!从 合伙人 升级到 青铜"
✅ 正常工作 - 显示"批量更新完成!成功更新 1 个用户 等级变化: URS用户39119: 合伙人 → 青铜"
c7097704app/Module/UrsPromotion/AdminControllers/Actions/BatchUpdateTalentAction.phpapp/Module/UrsPromotion/Services/UrsActiveUserService.php成功修复了URS用户达人等级更新功能的所有报错问题,包括变量名错误、数据库字段缺失和数据结构不匹配等问题。现在单个更新和批量更新功能都能正常工作,等级计算逻辑也正确运行。