Commit b25287db by chenjinjing

no message

parent b901ec8f
/**寿州古城智慧调度事件态势感知 */
/**
* 主界面
* @param req
* @param res
*/
export function getData(req, res) {
let ret:any = {};
/**填充数据格式处理 */
res.send(ret);
}
const path = require('path');
import * as fs from "fs";
import { analysisXml } from "../util/myXML";
import {ServerConfig} from "../config/systemClass";
export let systemConfig = new ServerConfig;
const ConfigName = "serverConfig.xml";
export async function initConfig() {
try {
let buff = fs.readFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), ConfigName));
let configStr = buff.toString();
let configInfo:any = await analysisXml(configStr);
if (!configInfo || !configInfo.config) console.log("xml中无配置加载");
else {
//必要配置
let integralConfig = ["port"];
checkConfig(integralConfig, configInfo.config);
let {port} = configInfo.config;
systemConfig.port = parseInt(port[0]);
}
} catch(err) {
// throw new BizError("服务器配置解析错误 请检查根目录下 serverConfig.xml 文件是否正确");
}
}
function checkConfig(config, configData) {
config.forEach(item => {
if (typeof item == "object") {
for (let key in item) {
if (!configData[key] || !configData[key][0]) {
// throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 缺少 ${key}`);
console.log("初始化配置失败");
}
item[key].forEach( subItem => {
if (!configData[key][0][subItem] || !configData[key][0][subItem][0]) {
// throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 ${key}缺少 ${subItem}`);
console.log("初始化配置失败");
}
});
}
} else {
if (!configData[item] || !configData[item][0]) {
// throw new SysError(SYSTEMERRORENUM.初始化配置失败, `serverConfig.xml中 缺少 ${item}`);
console.log("初始化配置失败");
}
}
});
}
/**
* 系统配置类
*/
export class ServerConfig {
port:number;
}
/**解析表格数据 */
import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
let fs = require('fs');
async function lanuch() {
/**初始化xml文件配置 */
await initConfig();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
}
lanuch();
export function httpErrorHandler(err, req, res, next) {
console.log("in httpErrorHandler");
console.log(err);
//todo 自定义错误编码
if (err) {
if (err.message == "您的登录已失效" ) {
res.success({success:false, msg:err.message, code:501});
next();
}
else if (err.message == "您的账户没有访问权限") {
res.success({success:false, msg:"非常抱歉,您没有权限,请联系工作人员!", code:502});
next();
} else if ( err.message == "token已过期") {
res.success({success:false, msg:"token失效", code:503});
next();
}
else {
res.success({success:false, msg:err.message, code:500});
next();
}
}
}
\ No newline at end of file
export function watch(req, res, next) {
res.success = success.bind({res:res, req:req});
return next();
}
function success(data) {
let resultPack;
if (data ) {
if ( data.success === undefined || data.success === true ) {
resultPack = {data, success:true, code:200};
}
else {
resultPack = data;
}
}else {
resultPack = {code:500, success:false, msg:'result is null'};
}
this.res.send(resultPack);
}
import express = require('express');
import bodyParser = require('body-parser');
import routers = require('../routers/router');
import compression = require('compression');
import * as fallback from 'express-history-api-fallback';
import * as path from "path";
import { watch } from '../middleware/watch';
import { httpErrorHandler } from '../middleware/httpErrorHandler';
export class httpServer {
static createServer(port:number) {
var httpServer = express();
httpServer.all('*',function (req, res, next) {
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header('Access-Control-Allow-Credentials', true);
res.header("X-Powered-By", ' 3.2.1');
res.header("Authorization", 'Basic SzEyUlBDOksxMlJQQ1B3ZA==');
if(req.method === 'OPTIONS'){
res.statusCode = 200;
res.end();
}else{
next();
}
});
httpServer.use(bodyParser.json({limit:"10kb"}));
httpServer.use(compression())
httpServer.use(watch);
routers.setRouter(httpServer);
httpServer.use(httpErrorHandler);
httpServer.use(express.static(path.join(__dirname, "../../img/")) );
httpServer.use(express.static(path.join(__dirname, "../../pdf/")) );
const root = path.join(__dirname, "../../public/")
httpServer.use(express.static(root))
httpServer.use(fallback('index.html', { root }))
console.log('web listen on port:'+port);
httpServer.listen(port);
console.log('server listen on port:'+port);
return httpServer;
}
}
/**
* 总路由入口
*/
import * as asyncHandler from 'express-async-handler';
import * as szgcBiz from '../biz/getData';
export function setRouter(httpServer){
httpServer.get('/getdata', asyncHandler(szgcBiz.getData));
}
var xml2js = require("xml2js");
/**
*
* @param str 需要解析的xml文本
* @returns 解析好的对象
*/
export function analysisXml(str) {
return new Promise( (resolve, reject) => {
xml2js.parseString(str, (err, result) => {
if (err) return reject(err);
return resolve(result);
});
});
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment