·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

怎么把Discuz所有用户的积分更新下

284 2
发表于 2022-4-13 12:11:31 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
discuz很多用户被清空帖子后没有登录 积分没有相应的更新,如何操作把所有用户的积分刷新一下
我要说一句 收起回复

评论2

TyCodingLv.8 发表于 2022-4-13 12:12:15 | 查看全部
可以定制插件做个批量更新
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-17 17:38:06 | 查看全部
在Discuz中,用户的积分是根据其发帖、回帖、登录等行为自动更新的。如果用户的帖子被清空后没有登录,积分可能没有及时更新。你可以通过以下步骤来手动刷新所有用户的积分:

### 方法一:通过SQL语句批量更新用户积分
你可以通过执行SQL语句来批量更新用户的积分。首先,你需要确定用户的积分计算公式,然后根据公式更新用户的积分。

1. **登录数据库管理工具**(如phpMyAdmin)。
2. **选择你的Discuz数据库**。
3. **执行以下SQL语句**:

  1. UPDATE `pre_common_member_count`
  2. SET `extcredits1` = (SELECT COUNT(*) FROM `pre_forum_post` WHERE `authorid` = `pre_common_member_count`.`uid` AND `first` = 1),
  3.     `extcredits2` = (SELECT COUNT(*) FROM `pre_forum_post` WHERE `authorid` = `pre_common_member_count`.`uid` AND `first` = 0),
  4.     `extcredits3` = (SELECT COUNT(*) FROM `pre_forum_post` WHERE `authorid` = `pre_common_member_count`.`uid` AND `invisible` = 0),
  5.     `extcredits4` = (SELECT COUNT(*) FROM `pre_forum_post` WHERE `authorid` = `pre_common_member_count`.`uid` AND `invisible` = -1)
复制代码


- `extcredits1`、`extcredits2`、`extcredits3`、`extcredits4` 是Discuz中的积分字段,你可以根据你的积分设置调整这些字段。
- `pre_forum_post` 是帖子表,`pre_common_member_count` 是用户积分表。

### 方法二:通过Discuz后台工具更新
Discuz后台提供了一个“更新用户积分”的工具,你可以通过这个工具来批量更新用户的积分。

1. **登录Discuz后台**。
2. **进入“工具” -> “更新统计”**。
3. **选择“更新用户积分”**,然后点击“提交”。
4. 系统会自动根据用户的发帖、回帖等行为重新计算并更新用户的积分。

### 方法三:通过插件或自定义脚本
如果你需要更复杂的积分更新逻辑,可以考虑编写一个插件或自定义脚本来实现。

1. **编写一个PHP脚本**,遍历所有用户并根据其发帖、回帖等行为重新计算积分。
2. **在脚本中调用Discuz的API**来更新用户的积分。

  1. <?php
  2. require_once './source/class/class_core.php';
  3. $discuz = C::app();
  4. $discuz->init();

  5. $query = C::t('common_member')->fetch_all();
  6. foreach ($query as $user) {
  7.     $uid = $user['uid'];
  8.     $post_count = C::t('forum_post')->count_by_authorid($uid, 1);
  9.     $reply_count = C::t('forum_post')->count_by_authorid($uid, 0);
  10.    
  11.     // 根据你的积分公式计算积分
  12.     $extcredits1 = $post_count * 10; // 假设每个主题帖加10分
  13.     $extcredits2 = $reply_count * 5; // 假设每个回复加5分
  14.    
  15.     // 更新用户积分
  16.     C::t('common_member_count')->update($uid, array(
  17.         'extcredits1' => $extcredits1,
  18.         'extcredits2' => $extcredits2,
  19.     ));
  20. }
  21. echo "用户积分更新完成!";
  22. ?>
复制代码


### 注意事项
- **备份数据库**:在执行任何批量操作之前,请务必备份数据库,以防止数据丢失。
- **测试**:在生产环境中执行之前,建议在测试环境中先进行测试,确保脚本或SQL语句的正确性。

通过以上方法,你可以批量更新Discuz用户的积分。如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.138.175.178,GMT+8, 2025-4-4 16:19 , Processed in 0.428423 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表