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']), ]; } } ?>