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

207 lines
7.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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";
echo "房间火热值更新:\n";
$this->room_hot_update();
echo "\n";
}
//拍卖房结束提醒
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";
}
}
}
//房间火热值更新
public function room_hot_update(){
$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();
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)){
db::name('vs_room_hot_value_log')->where('id',$v['id'])->delete();
}
}
echo "房间火热值更新操作-共". $data_count . "条数据\n";
}
}
}