From cfadaf43267e95cbdbbeef1ed84c203ab4b7c16f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Thu, 18 Dec 2025 18:15:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=99=8D=E8=BA=AB=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Cron.php | 1 + application/cron/controller/DaySeconds.php | 78 ++++++++++++++++++- .../cron/controller/PerformPerSecond.php | 69 ---------------- 3 files changed, 78 insertions(+), 70 deletions(-) diff --git a/application/api/controller/Cron.php b/application/api/controller/Cron.php index 9f0a7712..278c5820 100644 --- a/application/api/controller/Cron.php +++ b/application/api/controller/Cron.php @@ -52,6 +52,7 @@ class Cron /* * 清除房间热度值 * 清除房间离线超24小时的用户 + * 系统降身价 */ public function DaySeconds() { diff --git a/application/cron/controller/DaySeconds.php b/application/cron/controller/DaySeconds.php index 083bae33..c67c01cd 100644 --- a/application/cron/controller/DaySeconds.php +++ b/application/cron/controller/DaySeconds.php @@ -16,12 +16,16 @@ class DaySeconds function index() { echo "清除房间热度值:\n"; - $this->clear_room_today_hot_value();//0点以后房间热度值清零 +// $this->clear_room_today_hot_value();//0点以后房间热度值清零 echo "\n"; echo "清除房间离线超24小时的用户:\n"; $this->clear_room_offline_user();//0点以后清除房间离线超24小时用户 echo "\n"; + + echo "系统降身价:\n"; + $this->system_downgrade(); + echo "\n"; } @@ -62,4 +66,76 @@ class DaySeconds echo date('Y-m-d H:i:s').' 完成'."\n"; } + + //系统降身价 + public function system_downgrade(){ + //获取系统信息 + $down_market_value = explode(',',get_system_config_value('down_market_value')); + if($down_market_value){ + $day = $down_market_value[0]; + $market_value = $down_market_value[1]; + }else{ + $day = 0; + $market_value = 0; + } + + $num = 0; + if($day && $market_value){ + //查询每个用户的身价 + $user_market_value = db::name('user')->field('id,market_value')->select(); + if($user_market_value){ + foreach ($user_market_value as $value){ + if($value['market_value'] > 1){ + //获取他的降级时间 + $down_time = db::name('vs_user_market_value_log')->where(['user_id' => $value['id'],'type' =>1]) + ->order('id desc')->value('createtime'); + + //如果没有降级记录,则使用当前时间作为起始时间 + if(empty($down_time)){ + $down_time = time(); + } + + //检查是否到了降级时间 + if(time() - $down_time >= $day*86400){ + //开始降身价 + db::startTrans(); + try { + $market_values = max($value['market_value'] - $market_value, 1); + $update_result = db::name('user')->where('id', $value['id'])->update(['market_value' => $market_values]); + + if($update_result) { + $data = [ + 'user_id' => $value['id'], + 'before' => $value['market_value'], + 'change_value' => $market_value, + 'afterwards' => $market_values, + 'type' => 1, + 'createtime' => time() + ]; + $res = db::name('vs_user_market_value_log')->insert($data); + + if($res){ + $num += 1; + db::commit(); + }else{ + db::rollback(); + \think\Log::error("系统降身价失败: 插入日志失败 user_id={$value['id']}"); + } + } else { + db::rollback(); + \think\Log::error("系统降身价失败: 更新用户身价失败 user_id={$value['id']}"); + } + } catch (\Exception $e) { + db::rollback(); + \think\Log::error("系统降身价异常: " . $e->getMessage() . " user_id={$value['id']}"); + } + } + } + } + } + } + echo "系统降身价完成:".$num."\n"; + } + + } \ No newline at end of file diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 4ec7988d..cfbd1c9a 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -51,10 +51,6 @@ class PerformPerSecond $this->sign_room_time_end(); echo "\n"; - echo "系统降身价:\n"; - $this->system_downgrade(); - echo "\n"; - echo "公会会员结算比例申请过期处理:\n"; $this->user_ratio_up_apply_timeout(); echo "\n"; @@ -374,72 +370,7 @@ class PerformPerSecond } } - //系统降身价 - public function system_downgrade(){ - //获取系统信息 - $down_market_value = explode(',',get_system_config_value('down_market_value')); - if($down_market_value){ - $day = $down_market_value[0]; - $market_value = $down_market_value[1]; - }else{ - $day = 0; - $market_value = 0; - } - if($day && $market_value){ - //查询每个用户的身价 - $user_market_value = db::name('user')->field('id,market_value')->select(); - if($user_market_value){ - foreach ($user_market_value as $value){ - if($value['market_value'] > 1){ - //获取他的降级时间 - $down_time = db::name('vs_user_market_value_log')->where(['user_id' => $value['id'],'type' =>1]) - ->order('id desc')->value('createtime'); - - //如果没有降级记录,则使用当前时间作为起始时间 - if(empty($down_time)){ - $down_time = time(); - } - - //检查是否到了降级时间 - if(time() - $down_time >= $day*86400){ - //开始降身价 - db::startTrans(); - try { - $market_values = max($value['market_value'] - $market_value, 1); - $update_result = db::name('user')->where('id', $value['id'])->update(['market_value' => $market_values]); - - if($update_result) { - $data = [ - 'user_id' => $value['id'], - 'before' => $value['market_value'], - 'change_value' => $market_value, - 'afterwards' => $market_values, - 'type' => 1, - 'createtime' => time() - ]; - $res = db::name('vs_user_market_value_log')->insert($data); - - if($res){ - db::commit(); - }else{ - db::rollback(); - \think\Log::error("系统降身价失败: 插入日志失败 user_id={$value['id']}"); - } - } else { - db::rollback(); - \think\Log::error("系统降身价失败: 更新用户身价失败 user_id={$value['id']}"); - } - } catch (\Exception $e) { - db::rollback(); - \think\Log::error("系统降身价异常: " . $e->getMessage() . " user_id={$value['id']}"); - } - } - } - } - } - } - } //公会会员结算比例申请过期处理 public function user_ratio_up_apply_timeout(){ //超过24小时的数据