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