dzadsod/include/class/cloud.class.php

126 lines
5.7 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');
//所有公用方法
class cloud
{
public $tsql;
public function __construct()
{
global $_M, $_YW;
$this->tsql = load::own_class('tsql', 'new');
}
/*
* 把数组转成JSON用于ajax返回可以用于普通json请求返回也可以用于跨域的ajax的jsonp格式的数据请求返回。
* @param array $back 输出字符串或数组
* @param string $callback ajax的回调函数的名称
*/
public function jsoncallback($back, $callback = 'callback')
{
global $_M;
header('Content-type: application/x-javascript');
$callback = $_M['form'][ $callback ];
$json = json_encode($back, JSON_UNESCAPED_UNICODE);
echo $callback ? $callback . '(' . $json . ')' : $json;
}
//城市信息
public function citydata()
{
global $_M, $_YW;
$dirfile = PATH_APP_FILE . 'public/js/city/city.min.json';
if (!file_exists($dirfile)) {
$citys = json_decode(file_get_contents(PATH_SYS . "include/static2/vendor/select-linkage/citydata.min.json"), true);
$i = 0;
$array = [];
foreach ($citys['citylist'] as $key => $val) {
if (version_compare($_M['config']['metcms_v'], '6.2.0', '>=')) {
$val['p'] = substr($val['p'], 0, stripos($val['p'], '('));
$array[ $key ] = $val;
} else {
foreach ($val as $pkey => $pval) {
array_unshift($pval, ['n' => '请选择']);
if (array_level($pval) == 4) {
foreach ($pval as $akey => $aval) {
if (array_level($aval['a']) == 2) array_unshift($aval['a'], ['s' => '请选择']);
$array[ $key ][ $pkey ][ $akey ] = $aval;
}
//跳过
continue;
}
$array[ $key ][ $pkey ] = $pval;
}
}
}
$citydata = ['citylist' => $array];
//生成缓存
$jsonstr = json_encode($citydata, JSON_UNESCAPED_UNICODE);
load::sys_func('file');
makefile($dirfile);
file_put_contents($dirfile, $jsonstr);
$citystr = self::jsoncallback($citydata);
} else {
$citystr = file_get_contents($dirfile);
}
//返回信息
echo $citystr;
}
public function city_url()
{
global $_M, $_YW;
$dirfile = PATH_APP_FILE . 'public/js/city/city.min.json';
if (file_exists($dirfile)) {
$url = $_M['url']['app'] . "{$_YW['n']}/public/js/city/city.min.json";
} else {
$url = class_exists('appadmin') ? $_M['url']['own_name'] . "c=ajax&a=docitys" : $_M['url']['own_name'] . "c=index&a=docitys";
}
return $url;
}
//计算时间相差天数
public function summary()
{
global $_M, $_YW;
$summoney = $this->tsql->table('contract')->qfield(" Sum(h_tprice) as tprice ")->where(" h_tprice IS NOT NULL ")->one();
return [
'village' => $this->tsql->table('village')->count(),
'elevator' => $this->tsql->table('elevator')->count(),
'vfree' => $this->tsql->table_unset()
->tables(['elevator', 'el'], 'LEFT JOIN')
->tables(['launch', 'la'], 'ON find_in_set( el.e_number, la.l_enumber )')
->where(" la.l_endtime < CURDATE() OR la.l_starttime > CURDATE() OR la.id IS NULL ")
->count(" distinct e_number "),
'vlease' => $this->tsql->table_unset()
->tables(['elevator', 'el'], 'LEFT JOIN')
->tables(['launch', 'la'], 'ON find_in_set( el.e_number, la.l_enumber )')
->where(" NOT(la.l_endtime < CURDATE() OR la.l_starttime > CURDATE() ) ")
->count(" distinct e_number "),
'vendday' => $this->tsql->table_unset()
->tables(['elevator', 'el'], 'LEFT JOIN')
->tables(['launch', 'la'], 'ON find_in_set( el.e_number, la.l_enumber )')
->where(" la.l_endtime BETWEEN CURDATE( ) AND date_add( CURDATE( ), INTERVAL 7 DAY ) ")
->count(" distinct e_number "),
'vprerow' => $this->tsql->table_unset()
->tables(['elevator', 'el'], 'LEFT JOIN')
->tables(['launch', 'la'], 'ON find_in_set( el.e_number, la.l_enumber )')
->where(" la.l_starttime > CURDATE() ")
->count(" distinct e_number "),
'contract' => $this->tsql->table('contract')->count(),
'launch' => $this->tsql->table('launch')->count(),
'endcontract' => $this->tsql->table('contract')->where(" h_endtime < CURDATE() ")->count(),
'endlaunch' => $this->tsql->table('launch')->where(" l_endtime < CURDATE() ")->count(),
'customer' => $this->tsql->table('customer')->count(),
// 'workers' => $this->tsql->table('workers')->count(),
'summoney' => intval($summoney['tprice']),
];
}
}
?>