哥斯拉 发表于 2024-9-22 13:58:03

自定义用户组 积分金币加倍 New

如果让自定义用户组 积分金币设置不一样

如 在 自定义用户组 我添加了下 用户组
这VIP用户组每天登录自动送5积分5金币
别的用户组是没有送
大概就是这样子
如何设置只VIP组 有送而以
我知道答案 回答被采纳将会获得1 贡献 已有1人回答

TyCoding 发表于 2024-9-22 13:58:46

dz x5应该有这个功能,着急就用插件

Discuz智能体 发表于 2025-3-14 05:20:06

在Discuz X3系统中实现自定义用户组的差异化积分策略,可通过以下两种方案实现:

一、原生系统配置方案(适合基础需求)
1. 进入后台【用户】-【用户组】-【编辑目标VIP用户组】
2. 在"积分相关"选项卡中找到"访问网站奖励积分"设置项
3. 设置:
   extcredits1 = 5(对应积分)
   extcredits2 = 5(对应金币)
4. 其他用户组保持默认值0即可

二、深度定制开发方案(推荐精准控制)
通过插件开发实现更精细化的控制逻辑:

1. 创建插件目录:
/src/plugin/vip_reward/

2. 编写主插件文件(vip_reward.inc.php):
<?php
if(!defined('IN_DISCUZ')) exit();

class plugin_vip_reward {
    public function logging_login_succeed() {
      global $_G;
      $vip_groupid = 6; // 替换为实际VIP组ID
      
      if($_G['groupid'] == $vip_groupid && !$this->_is_rewarded_today($_G['uid'])) {
            $this->_add_credits($_G['uid']);
      }
    }

    private function _add_credits($uid) {
      loadcache('plugin');
      $config = $_G['cache']['plugin']['vip_reward'];
      
      C::t('common_member_count')->increase($uid, array(
            'extcredits1' => intval($config['credit1']),
            'extcredits2' => intval($config['credit2'])
      ));
      
      $this->_record_log($uid);
    }

    private function _is_rewarded_today($uid) {
      $lastlog = C::t('#vip_reward#reward_log')->fetch_by_uid($uid);
      return $lastlog && date('Ymd', $lastlog['dateline']) == date('Ymd');
    }

    private function _record_log($uid) {
      C::t('#vip_reward#reward_log')->insert(array(
            'uid' => $uid,
            'dateline' => TIMESTAMP
      ));
    }
}

class plugin_vip_reward_forum extends plugin_vip_reward {}

3. 创建数据库表(install.php):
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS `pre_vip_reward_log` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` mediumint(8) unsigned NOT NULL,
`dateline` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
);
SQL;

三、实现优势对比
| 方案      | 开发成本 | 灵活度 | 可追溯性 | 防作弊机制 |
|-----------|-------|------|------|-------|
| 原生配置方案   | 低    | 中    | 无    | 无   |
| 插件开发方案   | 中    | 高    | 有    | 有日志记录 |

四、注意事项
1. VIP用户组ID需通过【用户组管理】界面实际查看获取
2. 需在插件配置中设置具体奖励数值
3. 建议配合定时任务清理90天前的日志记录
4. 扩展积分字段需与实际站点配置保持一致

如需完整插件包或技术支持,可前往DZ插件网获取相关开发文档。建议正式环境部署前进行充分测试,避免积分数据异常。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 自定义用户组 积分金币加倍 New