From a4224b6524e98dcda00fd12d2d1c691adc403a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8D=8E=E6=B8=85?= <18691022700@163.com> Date: Mon, 1 Dec 2025 10:33:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E5=86=85=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E7=94=A8=20=E7=94=A8=E6=88=B7=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cron/controller/PerformPerSecond.php | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/application/cron/controller/PerformPerSecond.php b/application/cron/controller/PerformPerSecond.php index 437cd65..2250218 100644 --- a/application/cron/controller/PerformPerSecond.php +++ b/application/cron/controller/PerformPerSecond.php @@ -43,6 +43,9 @@ class PerformPerSecond echo "签约房时间结束处理:\n"; $this->sign_room_time_end(); echo "\n"; + echo "系统降身价:\n"; + $this->system_downgrade(); + echo "\n"; } @@ -355,4 +358,72 @@ class PerformPerSecond } } } + + //系统降身价 + public function system_downgrade(){ + //获取系统信息 + $down_market_value = 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']}"); + } + } + } + } + } + } + } + } \ No newline at end of file