- 新增用户申请联系信息功能,包括申请、审核和处理流程 - 优化俱乐部申请、邀请和处理申请的逻辑 - 修复活动不存在时的错误提示 - 优化活动查询条件,支持一次性活动的特殊处理
123 lines
4.6 KiB
PHP
123 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace addons\shopro\job;
|
|
|
|
use think\Db;
|
|
use think\Exception;
|
|
use think\queue\Job;
|
|
use think\exception\PDOException;
|
|
use think\exception\ValidateException;
|
|
|
|
class Test extends BaseJob
|
|
{
|
|
/**
|
|
* 普通优先级队列测试
|
|
*/
|
|
public function shopro(Job $job, $data)
|
|
{
|
|
// 创建目录
|
|
$this->mkdir();
|
|
|
|
// 写入日志文件
|
|
$filename = RUNTIME_PATH . 'storage/queue/shopro.log';
|
|
file_put_contents($filename, date('Y-m-d H:i:s'));
|
|
|
|
$job->delete();
|
|
}
|
|
|
|
|
|
/**
|
|
* 高优先级队列测试
|
|
*/
|
|
public function shoproHigh(Job $job, $data)
|
|
{
|
|
// 创建目录
|
|
$this->mkdir();
|
|
|
|
// 写入日志文件
|
|
$filename = RUNTIME_PATH . 'storage/queue/shopro-high.log';
|
|
file_put_contents($filename, date('Y-m-d H:i:s'));
|
|
|
|
$job->delete();
|
|
}
|
|
|
|
|
|
/**
|
|
* 创建目录
|
|
*/
|
|
private function mkdir()
|
|
{
|
|
$dir = RUNTIME_PATH . 'storage/queue/';
|
|
if (!is_dir($dir)) {
|
|
@mkdir($dir, 0755, true);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 周期性活动创建比赛
|
|
*/
|
|
public function zy(Job $job, $data)
|
|
{
|
|
Db::startTrans();
|
|
try {
|
|
$_actModel = new \app\admin\model\zy\game\Activity();
|
|
$_gameModel = new \app\admin\model\zy\game\Game();
|
|
$week = date('w'); //当前星期
|
|
$current = time(); //当前时间
|
|
$activity = (clone $_actModel)::where('pid', 0)->select(); //周期性主活动
|
|
foreach ($activity as $act) {
|
|
$act = $act->toArray();
|
|
$publicTime = json_decode($act['public_time'] ?? '[]', true);
|
|
$publicBefore = intval($publicTime['before'] ?? 0); //提前几天
|
|
$PublicWeek = $act['week'] - $publicBefore; //设定应该发布的星期
|
|
if ($PublicWeek != $week && ($PublicWeek + 7) != $week) {
|
|
print_r('星期不对');
|
|
continue; // 星期不对
|
|
}
|
|
$public_time = strtotime($publicTime['time']); //设定的时间
|
|
if ($current < $public_time) {
|
|
print_r('时间未到');
|
|
continue; //时间未到
|
|
}
|
|
$act['public_time'] = date('Y-m-d H:i:s', $public_time - $publicBefore * 86400); //设定的时间
|
|
$act['date'] = date('Y-m-d', $public_time - $publicBefore * 86400); //设定的日期
|
|
$query = (clone $_gameModel)::where('act_id', $act['id']);
|
|
if ($act['type'] == 0) { //一次性活动
|
|
$query->where('public_time', $act['public_time'])->where('date', $act['date']);
|
|
}
|
|
$games = $query->select();
|
|
if (!empty($games)) {
|
|
print_r('已存在');
|
|
continue; // 已存在
|
|
}
|
|
$joinStartTime = json_decode($act['join_start_time'] ?? '[]', true);
|
|
$act['join_start_time'] = date('Y-m-d H:i:s', strtotime($joinStartTime['time']) - intval($joinStartTime['before']) * 86400);
|
|
$joinEndTime = json_decode($act['join_end_time'] ?? '[]', true);
|
|
$act['join_end_time'] = date('Y-m-d H:i:s', strtotime($joinEndTime['time']) - intval($joinEndTime['before']) * 86400);
|
|
$quitTime = json_decode($act['quit_time'] ?? '[]', true);
|
|
$act['quit_time'] = date('Y-m-d H:i:s', strtotime($quitTime['time']) - intval($quitTime['before']) * 86400);
|
|
$act['act_id'] = $act['id'];
|
|
unset($act['id']);
|
|
$res = (clone $_gameModel)->allowField(true)->save($act);
|
|
$subs = (clone $_actModel)::where('pid', $act['act_id'])->select();
|
|
foreach ($subs as $sub) { //存在子活动
|
|
$sub = $sub->toArray();
|
|
$sub['public_time'] = $act['public_time'];
|
|
$sub['join_start_time'] = $act['join_start_time'];
|
|
$sub['join_end_time'] = $act['join_end_time'];
|
|
$sub['quit_time'] = $act['quit_time'];
|
|
$sub['act_id'] = $act['act_id'];
|
|
$sub['date'] = $act['date'];
|
|
unset($sub['id']);
|
|
$res = (clone $_gameModel)->allowField(true)->save($sub);
|
|
}
|
|
}
|
|
Db::commit();
|
|
} catch (ValidateException | PDOException | Exception $e) {
|
|
Db::rollback();
|
|
format_log_error($e, 'zy.activity create game');
|
|
}
|
|
$job->release(600); //$delay为延迟时间
|
|
}
|
|
}
|