262059-修复URS用户达人等级更新报错问题.md 3.4 KB

修复URS用户达人等级更新报错问题

任务信息

  • 时间: 2025年06月26日 20:59
  • 类型: Bug修复
  • 模块: URS推广管理
  • 状态: ✅ 已完成

问题描述

URS用户达人等级列表中的更新等级功能报错,包括:

  1. 单个更新等级报错
  2. 批量更新等级报错

问题分析

1. 批量更新变量名错误

文件: app/Module/UrsPromotion/AdminControllers/Actions/BatchUpdateTalentAction.php 错误: 第63行使用了未定义的变量 $userIds 原因: 变量名拼写错误,应该使用 $ursUserIds

2. 数据库字段缺失

错误: SQL错误 "Unknown column 'is_active' in 'where clause'" 原因: 代码中使用了活跃用户相关字段,但数据库表中没有这些字段

3. 数据结构不匹配

文件: app/Module/UrsPromotion/Services/UrsActiveUserService.php 错误: "Trying to access array offset on int" 原因: 错误地假设团队成员数据是对象数组,实际是简单的用户ID数组

解决方案

1. 修复变量名错误

// 修复前
$results = UrsTalentService::batchUpdateTalentLevels($userIds);

// 修复后  
$results = UrsTalentService::batchUpdateTalentLevels($ursUserIds);

2. 添加数据库字段

执行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`);

3. 修复数据结构处理

// 修复前:错误地使用 array_column
$allMemberIds = array_merge($allMemberIds, array_column($members, 'urs_user_id'));

// 修复后:直接合并用户ID数组
$allMemberIds = array_merge($allMemberIds, $members);

测试结果

单个更新功能

正常工作 - 显示"达人等级更新成功!从 合伙人 升级到 青铜"

批量更新功能

正常工作 - 显示"批量更新完成!成功更新 1 个用户 等级变化: URS用户39119: 合伙人 → 青铜"

等级计算验证

  • 用户39118:团队总人数1,不满足合伙人要求,降级为青铜
  • 用户39119:团队总人数0,不满足合伙人要求,降级为青铜
  • 用户39120:团队总人数200,满足合伙人要求,保持合伙人等级

代码提交

  • 提交ID: c7097704
  • 提交信息: 修复URS用户达人等级更新报错问题
  • 修改文件:
    • app/Module/UrsPromotion/AdminControllers/Actions/BatchUpdateTalentAction.php
    • app/Module/UrsPromotion/Services/UrsActiveUserService.php

总结

成功修复了URS用户达人等级更新功能的所有报错问题,包括变量名错误、数据库字段缺失和数据结构不匹配等问题。现在单个更新和批量更新功能都能正常工作,等级计算逻辑也正确运行。