惧愁人 发表于 2024-6-29 16:44:14

有没有回帖评论, 可以随机獲取积分的设置? New

有没有那种回帖评论了,
即可以随机獲取积分的设置?
(不是发帖人预设随机红包那种)

并且可以限制次数的?(防刷积分)。我知道答案 回答被采纳将会获得1 贡献 已有0人回答

Discuz智能体 发表于 2025-3-18 05:33:38

是的,你可以通过自定义开发或使用现有的插件来实现回帖评论随机获取积分的功能,并且可以限制获取积分的次数以防止刷积分。以下是一个基本的实现思路:

### 1. 使用插件
你可以通过DZ插件网(https://www.dz-x.net/)搜索是否有现成的插件可以实现这个功能。如果没有现成的插件,可以考虑定制开发。

### 2. 自定义开发
如果你有一定的开发能力,可以通过修改Discuz的代码来实现这个功能。以下是一个简单的实现思路:

#### 步骤1:修改回帖逻辑
在Discuz的回帖逻辑中,找到处理回帖的代码部分(通常在`source/module/forum/forum_post.php`中),在回帖成功后添加随机获取积分的逻辑。

// 假设你已经找到了回帖成功的逻辑
if($reply_success) {
    // 获取当前用户ID
    $uid = $_G['uid'];
   
    // 获取用户今天已经获取积分的次数
    $today_count = C::t('common_member_count')->fetch($uid)['extcredits1_today'];
   
    // 设置每天最多获取积分的次数
    $max_times_per_day = 5;
   
    if($today_count < $max_times_per_day) {
      // 随机生成积分
      $random_points = rand(1, 10); // 随机1到10积分
      
      // 更新用户积分
      updatemembercount($uid, array('extcredits1' => $random_points), true, 'RPC', 1);
      
      // 更新今天获取积分的次数
      C::t('common_member_count')->increase($uid, array('extcredits1_today' => 1));
    }
}

#### 步骤2:添加每日积分获取次数的字段
在`common_member_count`表中添加一个字段`extcredits1_today`,用于记录用户每天获取积分的次数。

ALTER TABLE `pre_common_member_count` ADD `extcredits1_today` INT(10) UNSIGNED NOT NULL DEFAULT '0';

#### 步骤3:每日重置获取次数
你可以通过Discuz的计划任务功能,每天凌晨重置用户的`extcredits1_today`字段。

1. 在`source/class/task/`目录下创建一个新的计划任务文件,例如`reset_daily_points.php`。
2. 在文件中编写重置逻辑:

<?php

if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

class task_reset_daily_points {

    var $version = '1.0';
    var $name = '每日积分获取次数重置';
    var $description = '每天凌晨重置用户每日获取积分的次数';
    var $copyright = 'DZ插件网';
    var $icon = '';
    var $period = '';
    var $periodtype = 0;
    var $conditions = array();

    function csc($task = array()) {
      global $_G;

      // 重置所有用户的extcredits1_today字段为0
      C::t('common_member_count')->update_all('extcredits1_today=0');

      return true;
    }

    function view() {
      return '每日积分获取次数重置任务';
    }
}

3. 在Discuz后台的计划任务管理中,添加这个任务并设置为每天凌晨执行。

### 3. 测试
完成上述步骤后,你可以在论坛中测试回帖功能,确保用户回帖后能够随机获取积分,并且每天获取积分的次数受到限制。

### 4. 注意事项
- 确保在修改代码前备份数据库和文件,以防出现问题。
- 如果你不熟悉Discuz的代码结构,建议先阅读Discuz的开发手册(https://addon.dismall.com/library/)以了解更多细节。

通过以上步骤,你可以实现一个简单的回帖评论随机获取积分并限制次数的功能。如果你需要更复杂的功能,可以考虑进一步扩展或定制开发。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 09:40:02

是的,你可以通过自定义开发或使用现有的插件来实现回帖评论后随机获取积分的功能,并且可以限制次数以防止刷积分。以下是一个基本的实现思路:

### 1. 使用插件
你可以通过DZ插件网(https://www.dz-x.net/)搜索是否有现成的插件可以实现这个功能。通常这类插件会提供以下功能:
- 回帖或评论后随机获取积分。
- 设置积分获取的范围(如1-10积分)。
- 限制每天或每次回帖的积分获取次数。

### 2. 自定义开发
如果你有开发能力,可以通过修改Discuz的代码来实现这个功能。以下是一个简单的实现思路:

#### 2.1 修改回帖逻辑
在Discuz的回帖逻辑中,找到回帖成功后的处理函数(通常在`source/module/forum/forum_post.php`中),在回帖成功后添加随机积分的逻辑。

// 在回帖成功后添加以下代码
$min_points = 1; // 最小积分
$max_points = 10; // 最大积分
$random_points = rand($min_points, $max_points); // 随机生成积分

// 获取当前用户的UID
$uid = $_G['uid'];

// 更新用户积分
C::t('common_member_count')->increase($uid, array('extcredits1' => $random_points)); // extcredits1 是积分字段,根据你的设置可能需要调整

// 记录用户已经获取过积分
C::t('common_member_status')->update($uid, array('lastpost' => TIMESTAMP)); // 记录最后一次回帖时间

#### 2.2 限制次数
为了防止刷积分,你可以在用户表中添加一个字段来记录用户当天已经获取积分的次数。然后在回帖时检查这个字段,如果超过限制则不发放积分。

// 获取用户当天已经获取积分的次数
$today = strtotime(date('Y-m-d'));
$lastpost_time = C::t('common_member_status')->fetch($uid, 'lastpost');

if ($lastpost_time < $today) {
    // 如果是新的一天,重置次数
    $times = 0;
} else {
    // 获取当天已经获取积分的次数
    $times = C::t('common_member_status')->fetch($uid, 'times');
}

// 设置每天最多获取积分的次数
$max_times_per_day = 5;

if ($times < $max_times_per_day) {
    // 发放积分
    C::t('common_member_count')->increase($uid, array('extcredits1' => $random_points));
   
    // 更新获取积分的次数
    C::t('common_member_status')->update($uid, array('times' => $times + 1, 'lastpost' => TIMESTAMP));
}

### 3. 注意事项
- **安全性**:确保代码的安全性,防止SQL注入等安全问题。
- **性能**:频繁的数据库操作可能会影响性能,建议在代码中进行优化。
- **测试**:在生产环境上线前,务必在测试环境中充分测试,确保功能正常。

通过以上方法,你可以实现回帖评论后随机获取积分并限制次数的功能。如果你不熟悉代码修改,建议通过DZ插件网(https://www.dz-x.net/)寻找合适的插件来实现这个功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 有没有回帖评论, 可以随机獲取积分的设置? New