123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- const fs = require('fs')
- var express = require('express')
- var bodyParser = require('body-parser')
- var path = require('path')
- // 路由加载
- var mount = require('mount-routes')
- var app = express()
- /**
- *
- * 公共系统初始化
- *
- */
- app.use(bodyParser.json())
- app.use(bodyParser.urlencoded({ extended: true }))
- // 初始化数据库模块
- var database = require('./modules/database')
- database.initialize(app, function(err) {
- if (err) {
- console.error('连接数据库失败失败 %s', err)
- }
- })
- /**
- *
- * 后台管理系统初始化
- *
- */
- // 获取管理员逻辑模块
- var managerService = require(path.join(process.cwd(), 'services/ManagerService'))
- // 获取角色服务模块
- var roleService = require(path.join(process.cwd(), 'services/RoleService'))
- // 设置跨域和相应数据格式
- app.all('/api/*', function(req, res, next) {
- res.header('Access-Control-Allow-Origin', '*')
- res.header('Access-Control-Allow-Headers', 'X-Requested-With, mytoken')
- res.header('Access-Control-Allow-Headers', 'X-Requested-With, Authorization')
- res.setHeader('Content-Type', 'application/json;charset=utf-8')
- res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
- res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
- res.header('X-Powered-By', ' 3.2.1')
- if (req.method == 'OPTIONS') res.send(200)
- /*让options请求快速返回*/ else next()
- })
- // 初始化统一响应机制
- var resextra = require('./modules/resextra')
- app.use(resextra)
- // 初始化 后台登录 passport 策略
- admin_passport = require('./modules/passport')
- // 设置登录模块的登录函数衔接 passport 策略
- admin_passport.setup(app, managerService.login)
- // 设置 passport 登录入口点
- app.use('/api/private/v1/login', admin_passport.login)
- // 设置 passport 验证路径
- app.use('/api/private/v1/*', admin_passport.tokenAuth)
- // 获取验证模块
- var authorization = require(path.join(process.cwd(), '/modules/authorization'))
- // 设置全局权限
- authorization.setAuthFn(function(req, res, next, serviceName, actionName, passFn) {
- if (!req.userInfo || isNaN(parseInt(req.userInfo.rid))) return res.sendResult('无角色ID分配')
- // 验证权限
- roleService.authRight(req.userInfo.rid, serviceName, actionName, function(err, pass) {
- passFn(pass)
- })
- })
- /**
- *
- * 初始化路由
- *
- */
- // 带路径的用法并且可以打印出路有表
- mount(app, path.join(process.cwd(), '/routes'), true)
- app.all('/ueditor/ue', function(req, res, next) {
- res.header('Access-Control-Allow-Origin', '*')
- res.header('Access-Control-Allow-Headers', 'X-Requested-With, mytoken')
- res.header('Access-Control-Allow-Headers', 'X-Requested-With, Authorization')
- res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With, X_Requested_With')
- res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
- res.header('X-Powered-By', ' 3.2.1')
- if (req.method == 'OPTIONS') res.send(200)
- /*让options请求快速返回*/ else next()
- })
- // 富文本编辑器上传
- var ueditor = require(path.join(process.cwd(), '/modules/ueditor'))
- // 富文本控件处理qing q
- app.use('/ueditor/ue', ueditor)
- //. 设置富文本空间地址
- app.use('/ueditor', express.static('public/ueditor'))
- app.use('/tmp_uploads', express.static('tmp_uploads'))
- app.use('/x/common', express.static('uploads/common'))
- app.use('/uploads/goodspics', express.static('uploads/goodspics'))
- var upload_config = require('config').get('upload_config')
- app.use('/' + upload_config.get('upload_ueditor'), express.static(upload_config.get('upload_ueditor')))
- const logistics = require('./modules/Logistics.js')
- app.get('/api/private/v1/kuaidi/:orderno', logistics.getLogisticsInfo)
- // 定义日志
- // var log4js = require('./modules/logger');
- // log4js.use(app);
- /**
- *
- * 统一处理无响应
- *
- */
- // 如果没有路径处理就返回 Not Found
- app.use(function(req, res, next) {
- res.sendResult(null, 404, 'Not Found')
- })
- app.listen(8888)
- module.exports = app
|