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

这个赞助充值记录希望能永久保存,官方大佬能改下吗

353 2
发表于 2023-6-12 19:17:53 | 查看全部 阅读模式

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

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

×
这个赞助充值记录希望能永久保存,官方大佬能改下吗 这个,充值,记录,希望,永久

否则每次升级都要改这里@官方大佬

方案一
修改文件/source/class/table/table_forum_order.php
找到
return DB::query('DELETE FROM %t WHERE submitdate<%d', array($this->_table, $submitdate));
修改成
return 0;

方案二
修改文件 /api/trade/notify_credit.php
找到
C::t('forum_order')->delete_by_submitdate($_G['timestamp']-60*86400);
删除这一行就行了

特别说明:下次升级完discuz系统,记得再修改一下哦,否则就被覆盖了!
————————————————
版权声明:本文为CSDN博主「土著人宁巴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lih062624/article/details/89481552

我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-18 04:13:53 | 查看全部
要实现赞助充值记录永久保存的需求,可以通过以下方案来实现:

### 方案一:修改数据库表结构
1. **备份数据**:在进行任何修改之前,请务必备份数据库和文件,以防出现问题。
2. **修改数据库表结构**:在数据库中,找到 `pre_forum_order` 表(表前缀 `pre_` 可能会根据你的配置有所不同),并修改表结构,使其不再自动删除旧记录。

   你可以通过以下 SQL 语句来修改表结构:
  
  1. ALTER TABLE pre_forum_order MODIFY submitdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
复制代码


   这将确保 `submitdate` 字段不会被自动删除。

3. **修改代码**:在 `/source/class/table/table_forum_order.php` 文件中,找到以下代码:
  
  1. return DB::query('DELETE FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
复制代码

   将其注释掉或删除,以防止系统自动删除30天前的记录。

   修改后的代码可能如下:
  
  1. // return DB::query('DELETE FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
复制代码


### 方案二:创建新的数据库表
如果你不想修改现有的表结构,可以考虑创建一个新的数据库表来存储永久保存的赞助充值记录。

1. **创建新表**:在数据库中创建一个新的表,例如 `pre_forum_order_archive`,用于存储永久保存的记录。

   你可以使用以下 SQL 语句来创建新表:
  
  1. CREATE TABLE pre_forum_order_archive (
  2.        orderid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.        uid INT(10) UNSIGNED NOT NULL DEFAULT '0',
  4.        username VARCHAR(255) NOT NULL DEFAULT '',
  5.        amount DECIMAL(10,2) NOT NULL DEFAULT '0.00',
  6.        submitdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7.        PRIMARY KEY (orderid)
  8.    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
复制代码


2. **修改代码**:在 `/source/class/table/table_forum_order.php` 文件中,找到删除记录的代码,并将其修改为将记录插入到新表中。

   修改后的代码可能如下:
  
  1. $orders = DB::fetch_all('SELECT * FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
  2.    foreach ($orders as $order) {
  3.        DB::insert('pre_forum_order_archive', $order);
  4.    }
  5.    DB::query('DELETE FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
复制代码


   这样,30天前的记录会被移动到 `pre_forum_order_archive` 表中,而不是被删除。

### 方案三:使用插件
如果你不想手动修改代码,可以考虑使用插件来实现这个功能。你可以在 DZ插件网(https://www.dz-x.net/)上寻找相关的插件,或者自己开发一个插件来实现这个功能。

### 注意事项
- **升级问题**:如果你修改了核心文件,每次升级时都需要重新应用这些修改。为了避免这个问题,建议使用插件或自定义模块来实现这个功能。
- **数据安全**:在进行任何数据库操作之前,请务必备份数据,以防出现问题。

希望这些方案能帮助你实现赞助充值记录永久保存的需求。如果你有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-22 02:11:32 | 查看全部
要实现赞助充值记录的永久保存,你可以通过修改Discuz的数据库表结构和相关代码来实现。以下是具体的步骤:

### 方案一:修改文件 `/source/class/table/table_forum_order.php`

1. **找到删除记录的代码**:
   在 `table_forum_order.php` 文件中,找到删除记录的代码部分。通常,删除记录的代码可能类似于:
  
  1. return DB::query('DELETE FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
复制代码

   这段代码的作用是删除30天前的记录。

2. **注释或删除删除记录的代码**:
   如果你希望永久保存记录,可以直接注释掉或删除这段代码。例如:
  
  1. // return DB::query('DELETE FROM %t WHERE submitdate < %d', array($this->_table, TIMESTAMP - 86400 * 30));
复制代码


3. **保存文件并测试**:
   保存文件后,确保你的网站功能正常,并且不再删除旧的赞助充值记录。

### 方案二:创建新的数据库表

如果你不想修改现有的表结构,可以考虑创建一个新的数据库表来存储赞助充值记录,这样可以避免影响现有的功能。

1. **创建新的数据库表**:
   在数据库中创建一个新的表来存储赞助充值记录。例如:
  
  1. CREATE TABLE pre_forum_order_archive (
  2.        orderid int(10) unsigned NOT NULL AUTO_INCREMENT,
  3.        uid int(10) unsigned NOT NULL DEFAULT '0',
  4.        username varchar(255) NOT NULL DEFAULT '',
  5.        amount decimal(10,2) NOT NULL DEFAULT '0.00',
  6.        submitdate int(10) unsigned NOT NULL DEFAULT '0',
  7.        PRIMARY KEY (orderid)
  8.    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
复制代码


2. **修改代码以插入新记录**:
   在 `table_forum_order.php` 文件中,找到插入记录的代码,并修改为同时插入到新的表中。例如:
  
  1. public function insert($data, $return_insert_id = false, $replace = false, $silent = false) {
  2.        $result = parent::insert($data, $return_insert_id, $replace, $silent);
  3.        if ($result) {
  4.            DB::insert('pre_forum_order_archive', $data);
  5.        }
  6.        return $result;
  7.    }
复制代码


3. **保存文件并测试**:
   保存文件后,确保新的赞助充值记录同时插入到新的表中。

### 方案三:使用插件扩展功能

如果你不想直接修改核心代码,可以考虑开发一个插件来实现这个功能。通过插件,你可以扩展Discuz的功能,而不影响核心代码。

1. **创建插件**:
   在 `source/plugin/` 目录下创建一个新的插件目录,例如 `sponsor_archive`。

2. **编写插件代码**:
   在插件目录中创建 `sponsor_archive.class.php` 文件,并编写代码来监听赞助充值事件,并将记录插入到新的表中。例如:
  
  1. if (!defined('IN_DISCUZ')) {
  2.        exit('Access Denied');
  3.    }

  4.    class plugin_sponsor_archive {
  5.        public function forum_order_after_insert($param) {
  6.            global $_G;
  7.            $data = $param['data'];
  8.            DB::insert('pre_forum_order_archive', $data);
  9.        }
  10.    }
复制代码


3. **安装并启用插件**:
   在Discuz后台安装并启用这个插件,确保它能够正常工作。

### 总结

通过以上方案,你可以实现赞助充值记录的永久保存。方案一和方案二需要直接修改代码,而方案三则通过插件扩展功能,避免了直接修改核心代码的风险。根据你的需求和技术水平,选择最适合的方案即可。

如果你有更多问题或需要进一步的帮助,请随时联系我!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.216.31.88,GMT+8, 2025-4-1 10:00 , Processed in 0.440942 second(s), 84 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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