dzadsod/web/timing.class.php

123 lines
4.6 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
defined('IN_MET') or exit('No permission');
//用来处理定时执行排期处理
//访问入口固定为app/index.php?n=dzadsod&c=timing&a=doindex
// 不需要微信通知 可以不再需要定期访问本地址
load::own_class('appweb');
class timing extends appweb
{
# 过滤方法名
private $ado = ['doindex'];
//初始化
public function __construct()
{
global $_M, $_YW;
parent::__construct();
//----------------------------------加快信息响应------开始---------------------------
set_time_limit(0);
ob_end_clean();
header("Connection: close");
header("HTTP/1.1 200 OK");
header("Content-type:text/html;charset=utf-8");
header('Access-Control-Allow-Methods:post');
ob_start();
//Windows服务器需要加上这行。
echo 'API响应时间'.date('Y-m-d H:i:s', $this->time).str_repeat(" ",4096);
//----------------------------------加快信息响应------中段---------------------------
// 过滤
if (!in_array(M_ACTION, $this->ado,true)) {
//报错
exit(0);
}
//----------------------------------加快信息响应------中段---------------------------
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
if (function_exists("fastcgi_finish_request")) {
fastcgi_finish_request();
}
ignore_user_abort(true);
set_time_limit(0);
//----------------------------------加快信息响应------结束---------------------------
}
# 每天凌晨后或者早上6点之前进行广告位排期处理
# 主要计算排期是否过期,是否已经提到开始排期了
public function doindex()
{
global $_M, $_YW;
$this->webase = load::own_class('../met_wechat/include/class/LW_BASE', 'new');
//当天日期时间
$curdate = date('Y-m-d',$this->time);
$strdate = strtotime($curdate);
$num = ['daya' => 0,'dayb' => 0,'dayc' => 0];
//查询到期订单
//查询的是设置的提醒天数以及订单结束日期的前后3天数
$where = " endtime = CURDATE() OR (h_endtime BETWEEN CURDATE() AND DATE_ADD( CURDATE(), INTERVAL 3 DAY ) ) ";
$noticeday = $this->tsql->table('noticeday')->where($where)->all();
foreach ($noticeday as $val) {
//延时2秒
sleep(3);
$h_endtime = strtotime($val['h_endtime']);
//首先判断当前这条信息是属于到期前台3天的 还是属于设置的提醒
//那就是判断订单结束时间和今天的相差天数
$day = abs(($h_endtime - $strdate) / 86400);
if($day > 3){
//按照设置的提醒来计算
$htypes = "合同 {$val['noticeday']} 天后到期提醒";
//蓝色
$color = "#57c7d4";
$type = 1;
$num['daya']++;
}else{
//说明还没到期
if($h_endtime > $strdate){
$htypes = "合同 {$day} 天后到期";
//黄色
$color = "#f2a654";
$type = 1;
$num['dayb']++;
}else{
$htypes = "合同今天到期";
//红色
$color = "#F96868";
$type = 2;
$num['dayc']++;
}
}
//公司名称
$customer = $this->tsql->table('customer')->where(['id' => $val['h_cid']])->one();
//签定人员
$w_name = [];
$workerswid = stringto_array($val['h_wid'],',');
foreach ($workerswid as $hwid) {
$workers = $this->tsql->table('workers')->where(['id' => $hwid])->one();
$w_name[] = $workers['w_name'];
}
//整理内容
$val['first'] = ['value' => $htypes, 'color' => $color];
$val['c_allname'] = $customer['c_allname'];
$val['wnamestr'] = arrayto_string($w_name,'');
//发送通知
parent::postdata($type,$val)->openid();
}
//以上为定时通知或者到期通知
//增加一个今天要上架的投放
$num['dayd'] = $this->tsql->table('launch')->where(" l_starttime = CURDATE() ")->count();
parent::postdata(3,$num)->openid();
die();
}
}
?>