在Discuz!系统中,删除悬赏帖是否返还积分取决于具体操作场景:
1. **普通用户自行删除**
当用户在前台删除未结帖的悬赏主题时,系统会**自动返还全部悬赏积分**到用户账户。但需注意:
- 需开启「用户删除主题返还积分」功能
- 仅限未选择最佳答案的悬赏帖
- 积分类型需与版块设置的悬赏积分一致
2. **管理员后台删除**
通过管理后台删除悬赏帖时:
- 在「主题管理」→「删除主题」界面勾选「返还积分」选项
- 支持批量操作时选择是否返还
- 可查看积分变动日志(后台→用户→积分奖惩)
3. **数据库级处理机制**
系统通过`forum_thread`表的`price`字段记录悬赏金额,删除时触发以下流程:
- // 核心处理逻辑(source/modcp/modcp_thread.php)
- if($thread['price'] > 0) {
- updatemembercount($thread['authorid'], array($extcredits[$creditstrans] => $thread['price']), 1, 'RTC', $thread['tid']);
- }
复制代码
4. **特殊场景处理**
- 已结帖主题删除时积分不返还
- 移动主题到回收站版块视为删除
- 事务操作失败会回滚积分变动
如需定制返还规则,可通过插件开发实现:
- // 插件示例(监听删除事件)
- class plugin_credithandler extends discuz_plugin {
- public function delete_post($param) {
- if($param['thread']['special'] == 3) {
- // 自定义积分处理逻辑
- }
- }
- }
复制代码
建议检查:
1. 后台「全局」→「积分设置」中的悬赏配置
2. 用户组的「主题管理权限」设置
3. 版块权限中的「允许删除主题」设置
若发现异常不返还情况,可通过数据库查询积分日志:
- SELECT * FROM pre_common_credit_log WHERE uid=用户ID AND operation='RTC'
复制代码
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |