1 Star 1 Fork 12

赵健/people

forked from shuiruohanyu/people 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 4.29 KB
一键复制 编辑 原始数据 按行查看 历史
shuiruohanyu 提交于 2021-04-16 11:01 . 更新人力后台的数据
/*!
* Koa CMS Backstage management
*
* Copyright JS suwenhao
* Released under the ISC license
* Email swh1057607246@qq.com
*
*/
const Koa = require("koa"),
Router = require("koa-router"),
Static = require("koa-static"),
Session = require("koa-session"),
BodyParser = require("koa-bodyparser"),
path = require("path"),
compress = require("koa-compress"),
jsonp = require("koa-jsonp");
// const opn = require("opn");
axios = require('axios')
api = require("./src/routes/api"); // 后端接口
url = require("url"),
opn = require('opn'),
require('./src/model/db') // 引入数据库
// axios处理
axios.defaults.baseURL = 'http://ihrm-java.itheima.net/' // 设置请求的基地址
// axios响应拦截器
axios.interceptors.response.use(response => {
return response.data
}, error => {
if(error.response && error.response.data) {
return { status: error.status, ...error.response.data }
}
return { data: null, message: '代理线上请求出现异常: '+ error.message, success : false, code: 10006 }
})
// 初始化web服务
const app = new Koa();
const router = new Router();
//配置session
app.keys = ["some secret hurr"];
app.use(
Session({
key: "koa:sess",
maxAge: 5400000,
overwrite: true,
httpOnly: true,
signed: true,
rolling: true,
renew: false,
},
app)
);
//配置静态资源
app.use(Static(path.join(__dirname, "public")));
app.use(Static(path.join(__dirname, "statics")));
//配置post请求数据接收
app.use(BodyParser());
//jsonp
app.use(jsonp());
//gzip
app.use(
compress({
filter: function (content_type) {
return true;
},
threshold: 2048,
flush: require("zlib").Z_SYNC_FLUSH,
})
);
//全局属性
router.use(async (ctx, next) => {
var pathname = url.parse(ctx.url).pathname;
if (pathname === '/api/sys/login') {
// 如果是登录直接放过
await next()
}else {
let { authorization } = ctx.request.header;
if (authorization && ctx.session.user && ctx.session.user.token === authorization.split(' ')[1]) {
console.log("执行请求:" + pathname)
try {
await next()
} catch (error) {
// ctx.status = 505
ctx.body = {
message: "程序执行遇到异常!异常信息:" + error.message,
success: false,
code: 10003,
data: null
}
}
}
else {
ctx.status = 401 // 超时token
ctx.body = {
message: authorization ? 'token超时' : '您还未登录',
success: false,
code: 10002,
data: null
}
}
}
});
// 启动入口
router.get('/',async ctx => {
ctx.body = '黑马程序员-人力资源接口服务启动, 欢迎使用!!!';
})
router.use("/api", api);
app.use(router.routes())
//启动路由
app.use(router.allowedMethods());
app.use(async ctx => {
if(ctx.status === 404) {
const token = await getToken(ctx)
if (token) {
// 组装token
const headers = { Authorization: `Bearer ${token}` }
const { query, body, url, method } = ctx.request
console.log("开始请求线上接口:" + url)
try {
const result = await axios({
headers,
params: query,
data: body ? body : null,
method,
url
})
if(result && result.code === 10002) {
// 如果提示未登录 则置空
ctx.session.lineToken = null
}
ctx.body = result
} catch (error) {
console.log("线上接口执行异常:" + error.message )
}
}else {
console.log("未能获取线上的token")
ctx.body = {
message: '登录线上接口失败!请将线上管理员密码改为123456',
code: 10005,
success: false,
data: null
}
}
}
})
// 获取线上的token
const getToken = async (ctx) => {
if (ctx.session.lineToken) {
return ctx.session.lineToken
}
const { success, data, message } = await axios.post('api/sys/login', { mobile: '13800000002', password: '123456' })
if (success) {
ctx.session.lineToken = data
return data
}else {
console.log(message)
return null
}
}
//启动服务器
app.listen(3000, (err) =>{
console.log("人力资源后端接口启动,http://localhost:3000")
// opn('http://localhost:3000/index.html')
});
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/risingsunblog/people.git
git@gitee.com:risingsunblog/people.git
risingsunblog
people
people
master

搜索帮助