Files
midi-php/application/cron/controller/PerformPerSecond.php

207 lines
7.3 KiB
PHP
Raw Normal View History

2025-08-13 10:43:56 +08:00
<?php
namespace app\cron\controller;
use think\Db;
use Yzh\YunPay;
/*
* 定时任务,每秒执行的方法
*/
class PerformPerSecond
{
/*
* 运行函数
*/
function index()
{
echo "拍卖房结束提醒:\n";
$this->auction_end_notice();//拍卖房结束提醒
echo "\n";
echo "Pk房连线中倒计时结束操作PK结束\n";
$this->pk_start_end();
echo "\n";
echo "Pk房PK进行中倒计时结束操作PK结束\n";
$this->pk_end();
echo "\n";
echo "Pk房PK结束惩罚倒计时结束断开操作\n";
$this->pk_close();
echo "\n";
echo "pk发起10秒后无应答拒绝\n";
$this->pk_start_refuse();
echo "\n";
2025-09-09 17:23:42 +08:00
echo "房间火热值更新:\n";
$this->room_hot_update();
echo "\n";
2025-08-13 10:43:56 +08:00
}
//拍卖房结束提醒
protected function auction_end_notice()
{
$auction_list = db::name('vs_room_auction')->where(['status'=>2,'duration' => ['<',time()]])->select();
$data_count = 0;
if($auction_list){
foreach ($auction_list as &$value){
model('api/RoomAuction')->room_auction_end($value['room_id'],$value['auction_id']);
$data_count++;
}
}
echo "拍卖结束提醒完成-共" . $data_count . "条数据\n";
}
//pk发起10秒后无应答拒绝
protected function pk_start_refuse()
{
$pk_list = db::name('vs_room_pk')->where(['status'=>1])->select();
$data_count = 0;
if($pk_list){
foreach ($pk_list as &$value){
if($value['createtime'] + 10 <= time()){
//pk发起10秒后无应答拒绝
model('api/RoomPk')->accept_pk($value['pk_id'],2);
$data_count++;
}
}
}
echo "pk发起10秒后无应答拒绝-共". $data_count . "条数据\n";
}
//Pk房连线中倒计时结束操作PK结束
protected function pk_start_end()
{
$pk_list = db::name('vs_room_pk')->where(['status'=>2])->select();
$data_count = 0;
if($pk_list){
foreach ($pk_list as &$value){
if($value['updatetime'] + 300 <= time()){
//pk结束
model('api/RoomPk')->end_pk($value['pk_id'],4);
}
$data_count++;
}
}
echo "Pk房连线中倒计时结束操作PK结束-共". $data_count . "条数据\n";
}
//Pk房PK进行中倒计时结束操作PK结束
protected function pk_end()
{
$pk_list = db::name('vs_room_pk')->where(['status'=>3])->select();
$data_count = 0;
if($pk_list){
foreach ($pk_list as &$value){
if($value['start_time'] + $value['pk_times'] * 60 <= time()){
//pk结束
model('api/RoomPk')->end_pk($value['pk_id']);
}
$data_count++;
}
}
echo "Pk房PK进行中倒计时结束操作PK结束-共". $data_count . "条数据\n";
}
//Pk房PK结束惩罚倒计时结束断开操作
protected function pk_close()
{
$pk_list = db::name('vs_room_pk')->where(['status'=>['in',[4,7]]])->select();
$data_count = 0;
if($pk_list){
foreach ($pk_list as &$value){
if($value['updatetime'] + 300 <= time()){
//断开操作
model('api/RoomPk')->end_pk($value['pk_id'],2);
}
$data_count++;
}
}
echo "Pk房PK结束惩罚倒计时结束断开操作-共". $data_count . "条数据\n";
}
/*
* 提现云账号订单状态查询
*/
public function withdraw_order_status(){
//一个月内的数据
$time = time() - 7 * 86400;
$withdrawal = db::name('vs_user_withdrawal')->where(['deal_type'=>2,'status'=>['in',[4,5]]])->where(['submit_yun_time'=>['>=',$time]])->select();
echo "提现云账号订单状态查询条数(".count($withdrawal)."\n";
foreach ($withdrawal as $key => $value) {
if($value['status'] == 5){
if((time()-$value['pay_time']) >= 3600){
continue;
}
}
echo "提现订单查询:".$value['order_sn']."\n";
$yun_pay = new YunPay($value['order_sn'], "", "", "", "","");
$result = $yun_pay->queryOrder($value['type']);
if($result['code'] == 1){
if($result['data']['code']==0){
db::name('vs_user_withdrawal')->where('order_sn',$value['order_sn'])->update([
'status' => 6,
'pay_time' => time(),
'pay_message' => $result['data']['msg'],
'updatetime' => time()
]);
}else{
db::name('vs_user_withdrawal')->where('order_sn',$value['order_sn'])->update([
'status' => 5,
'pay_time' => time(),
'pay_message' => $result['data']['msg'],
'updatetime' => time()
]);
}
echo "提现订单查询成功:".$result['msg']."\n";
}else{
echo "提现订单查询失败:".$result['msg']."\n";
}
}
}
2025-09-09 17:23:42 +08:00
//房间火热值更新
public function room_hot_update(){
2025-09-09 17:59:10 +08:00
$room_id_list = db::name('vs_room_hot_value_log')->field('id,room_id')->select();
$room_list = db::name('vs_room_hot_value_log')->field('room_id,sum(hot_value) as value')->group('room_id')->select();
2025-09-09 17:23:42 +08:00
if($room_list){
$data_count = 0;
$data_room_list = [];
foreach ($room_list as $value){
$hot_value = 0;
$hot_values = db::name('vs_room')->where('id',$value['room_id'])->field('hot_value,today_hot_value')->find();
if($hot_values['today_hot_value'] == $value['value'] || $value['value'] == 0){
continue;
}
if($hot_values['today_hot_value'] < $value['value']){
$hot_value = $hot_values['hot_value'] + ($value['value'] - $hot_values['today_hot_value']);
}
if($hot_values['today_hot_value'] > $value['value']){
$hot_value = $hot_values['hot_value'];
}
$res = db::name('vs_room')->where('id',$value['room_id'])->update([
'today_hot_value' => $value['value'],
'hot_value' => $hot_value,
'updatetime' => time()
]);
if($res){
// db::name('vs_room_hot_value_log')->where('room_id',$value['room_id'])->delete();
$data_room_list[] = $value['room_id'];
}
$data_count ++;
}
foreach ($room_id_list as $v){
if(in_array($v['room_id'],$data_room_list)){
2025-09-09 17:59:10 +08:00
db::name('vs_room_hot_value_log')->where('id',$v['id'])->delete();
2025-09-09 17:23:42 +08:00
}
}
2025-09-09 17:59:10 +08:00
echo "房间火热值更新操作-共". $data_count . "条数据\n";
2025-09-09 17:23:42 +08:00
}
}
2025-08-13 10:43:56 +08:00
}