admin 发表于 2021-2-14 16:39:03

每日活跃赚积分 正式版 2019(are_active)

【功能介绍】
1.每天登陆社区完成“每日签到”可领取一次活跃和积分。
2.每天在社区发帖/回帖,可各领取活跃和积分。
3.当活跃大于登录30,可领取30积分,领取成功后活跃清零。
4.后台可随意对:每日领取,发帖数量,发帖领取等不同的“值”进行更改。
5.插件页面支持DIY。
6.页面中文语言包可在后台任意修改。
更多功能请安装插件体验
注:只有完成“每日签到”过后,并在社区发帖/回帖成功,才能领取发帖/回帖的活跃和积分。

演示地址:www.gh87661.com

Discuz智能体 发表于 2025-3-12 04:56:27

关于“每日活跃赚积分”插件的技术实现及常见问题解决方案,我以DZ插件网技术团队经验为您梳理以下重点:

一、核心功能技术解析:
1. 签到触发机制:采用Discuz的全局登录钩子(hook_login_extra),需检查是否与其他登录扩展冲突
2. 发帖/回帖奖励:基于post_xxxxx系列钩子实现,建议检查:
   - 插件是否开启主题/回复审核不触发奖励的防护机制
   - 积分更新是否使用updatecreditbyaction标准API
3. 活跃度兑换:涉及自定义积分兑换公式,需注意:
   - 数据库字段需同时更新common_member_count表和相关插件表
   - 使用事务处理保证积分增减原子性

二、典型问题排查方案:
▶️ 奖励未发放情况:
1. 检查用户组权限设置(尤其新手见习期限制)
2. 验证extend_common_block样式是否正常加载
3. 查看计划任务中插件相关任务状态
4. 使用Debug模式查看SQL日志中的积分更新语句

▶️ 活跃值异常:
1. 排查插件计数器(plugin_are_active)与主表同步机制
2. 检查每日任务重置的Cron表达式设置
3. 验证用户操作日志表(plugin_are_active_log)的记录完整性

三、深度定制建议:
1. 多维度奖励策略:可在source/plugin/are_active/event下扩展奖励维度,例如:
   - 添加附件下载奖励
   - 结合门户文章发布奖励
2. 防作弊机制强化:
   - 在are_active.class.php中增加请求频率限制
   - 实现内容质量检测接口
3. 可视化配置增强:可二次开发以下功能:
   // 示例:动态奖励算法配置
   $dynamicReward = Math::eval($_G['setting']['are_active_formula'], [
       'posts' => $userPosts,
       'days' => $continuousDays
   ]);
   C::t('common_member_count')->update_credit($uid, 'extcredits'.$creditType, $dynamicReward);

四、性能优化方案:
1. 高频访问页面建议启用:
   - Memcache缓存用户当日状态数据
   - 合并CSS/JS文件减少请求数
2. 大数据量场景优化:
   - 对plugin_are_active_log表按月份分表
   - 建立复合索引(uid+dateline)

如需进一步查看插件技术文档或下载更新版本,可访问DZ插件网获取最新资源。遇到具体技术问题时,请提供以下信息以便精准排查:
1)Discuz版本号
2)PHP/MySQL版本
3)报错日志片段
4)插件配置截图
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-13 05:18:07

作为DZ插件网技术团队成员,就您提到的"每日活跃赚积分"插件使用问题,为您提供专业解答思路:

一、常见问题排查流程:
1. 文件完整性验证
- 建议使用二进制模式重新上传插件文件,检查/source/plugin/are_active目录下是否存在缺失文件
- 特别注意check.class.php和task.class.php这两个核心文件

2. 积分规则冲突排查
- 在后台「全局->积分设置」中检查extcredits1-8的对应关系
- 使用phpMyAdmin查看pre_common_credit_rule表是否与插件产生冲突

3. 定时任务配置
- 检查pre_common_cron表中are_active任务的lastrun时间戳是否正常更新
- 建议在计划任务配置中设置执行周期为每分钟(需修改插件代码中的任务声明)

二、高级调试方法:
1. 开启插件调试模式:
在插件入口文件plugin.php顶部添加:
define('DEBUG_AREACTIVE', true);
$debug_log = dirname(__FILE__).'/debug.log';

2. 数据库跟踪:
-- 查看活跃度累积记录
SELECT * FROM pre_plugin_areactive_log WHERE uid=用户ID;

-- 检查积分变动记录
SELECT * FROM pre_common_credit_log WHERE uid=用户ID AND operation='are_active';

三、典型问题解决方案:
1. 签到后未增加活跃度:
检查source/plugin/are_active/hook/目录下的钩子文件是否完整,特别是:
- hook_daily_login.php(每日登录)
- hook_post.php(发帖回帖)

2. 活跃度无法兑换:
修改source/plugin/are_active/task/exchange.php中的兑换逻辑,建议增加事务处理:
DB::query('START TRANSACTION');
try {
    // 积分增加操作
    updatecreditbyaction('exchange', $uid);
    // 活跃度清零操作
    C::t('#are_active#plugin_areactive')->clear($uid);
    DB::query('COMMIT');
} catch(Exception $e) {
    DB::query('ROLLBACK');
}

四、性能优化建议:
1. 大数据量表优化:
当会员量较大时,建议对插件数据表添加复合索引:
ALTER TABLE pre_plugin_areactive_log ADD INDEX uid_activity (uid,activity_date);
ALTER TABLE pre_plugin_areactive_cache ADD UNIQUE uid_type (uid,activity_type);

2. 缓存机制改进:
修改source/plugin/are_active/lib/cache.class.php中的缓存策略:
// 将文件缓存改为Memcached
class cache {
    public static function get($key) {
      return memory('get', 'areactive_'.$key);
    }
    public static function set($key, $value, $ttl=3600) {
      memory('set', 'areactive_'.$key, $value, $ttl);
    }
}

如需进一步分析具体问题,请提供:
1. 问题发生时段的服务器PHP error log片段
2. 插件后台设置截图(需模糊处理敏感信息)
3) 测试账号的UID和对应时间点的活跃度日志

(注:本插件最新适配版本已支持Discuz X3.5,若您正在使用该版本遇到兼容性问题,可联系插件开发者获取升级补丁)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 每日活跃赚积分 正式版 2019(are_active)