杭州神话信息技术有限公司

标题: 用户删除BUG 程序不完整,已经找出原因,请官方修正 [打印本页]

作者: micwolf    时间: 2010-9-2 21:12:14     标题: 用户删除BUG 程序不完整,已经找出原因,请官方修正

现象:
当后台管理员删除用户时,相关联用户中的关注数或被关注数未做更新。
涉及两张表 一张Member 中有三个字段 follow_count,fans_count,fans_new
buddys 中  涉及uid与buddyid

涉及语句为 moudules/admin/member.php

  1. $this->DatabaseHandler->Query("delete from `".TABLE_PREFIX."buddys` where `uid` in('".implode("','",$member_ids)."') or `buddyid` in('".implode("','",$member_ids)."')");
复制代码

上述语句仅删除相关连的用户,但是没有做update SQL

修正思路: 在此语句前,先在buddys表中循环找出被删除用户uid与[uid]相同的记录,在该记录中更新以[buddyid] 为uid 在member表中[fans_count]的值即-1
第二步在buddys表中循环找出被删除用户uid 与[buddyid]相同的记录,在该记录中更新以[uid] 为uid 在member表中[follow_count]的值即-1
第三步再执行上面的删除记录的语句
作者: micwolf    时间: 2010-9-2 21:17:07

建议在下个版本中 后台增加 修复统计 所有用户的 关注数与被关注数 这个功能。执行下就可以修复所有用户显示的不正确性
作者: hoho    时间: 2010-9-2 21:21:33

这个得顶一下。。
作者: micwolf    时间: 2010-9-2 23:59:55

本帖最后由 micwolf 于 2010-9-3 00:01 编辑

发现第二处问题,用户被删除后,相关的Tag没有清理干净。
同样涉及与顶楼一样的文件 modules/admin/member.mod.php

  1. $this->DatabaseHandler->Query("delete from `".TABLE_PREFIX."my_tag` where `uid` in('".implode("','",$member_ids)."')");
复制代码

下面还要增加语句
  1. $this->DatabaseHandler->Query("delete from `".TABLE_PREFIX."my_topic_tag` where `uid` in('".implode("','",$member_ids)."')");
复制代码

此外 确保
执行 $TopicLogic->Delete("where `uid` in('".implode("','",$member_ids)."') limit {$member_ids_count}"); 语句时
topic_tag 表中相应的itemid的记录也删除 【include/logic/topic.login.php】

重点是处理下面的表中数据
tag表 修正思路
根据my_tag表中当前用户对应的tagid,循环查找tag表中对应的记录,并根据下面的不同情况更新total_count,user_count,topic_count,tag_count的值。
如果当前tag记录中的useid 与当前用户Userid 不一致,则直接更新total_count,user_count,topic_count,tag_count的值
如果当前tag记录中的userid 与当前用户userid 一致,且total_count,user_count都为1,则直接删除该记录
如果当前tag记录中的userid 与当前用户userid 一致,但tatal_count,user_count 不为1,则分两步走,第一步更新total_count,user_count,topic_count,tag_count 的值,第二步,利用当前tagid 到表my_tag中查找除了当前用户外使用该tagid的用户的userid,username,dateline,并将值更新到表tag中去


以上为思路,希望官方修正
作者: Admn    时间: 2010-9-3 09:33:43

LZ  你好厉害

可以加入他们的团队了
作者: micwolf    时间: 2010-9-3 11:02:49

还是建议官方在后台增加 清理用户关注,被关注数,TAG统计修复的功能。这样定期清理有好处
作者: 火爆浪子    时间: 2010-9-3 15:25:47

这样的用户才是真正热心用户··

强力顶起来
作者: 放牛郎    时间: 2010-9-4 12:55:56

楼主这样的人肯定有好的发展,因为不仅仅是发现问题,还找到问题原因,并能给出解决方案。




欢迎光临 杭州神话信息技术有限公司 (http://cenwor.com/) Powered by Discuz! X2