This commit is contained in:
COOL 2022-03-27 19:41:20 +08:00
parent ca038a4141
commit 7b9affde5c
6 changed files with 70 additions and 19 deletions

View File

@ -6,7 +6,7 @@
"dependencies": {
"@cool-midway/core": "^5.0.6",
"@cool-midway/es": "^5.0.2",
"@cool-midway/file": "^5.0.2",
"@cool-midway/file": "^5.0.3",
"@cool-midway/pay": "^5.0.0",
"@cool-midway/rpc": "^5.0.1",
"@cool-midway/task": "^5.0.1",
@ -21,6 +21,7 @@
"@midwayjs/static-file": "^3.2.0",
"@midwayjs/validate": "^3.2.0",
"@midwayjs/view-ejs": "^3.2.0",
"cfork": "^1.8.0",
"ipip-ipdb": "^0.6.0",
"jsonwebtoken": "^8.5.1",
"mini-svg-data-uri": "^1.4.4",
@ -45,7 +46,8 @@
"node": ">=12.0.0"
},
"scripts": {
"start": "NODE_ENV=prod node ./bootstrap.js",
"start_single": "NODE_ENV=prod node ./bootstrap.js",
"start": "NODE_ENV=prod node ./server.js",
"dev": "cross-env && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts",
"test": "midway-bin test --ts",
"cov": "midway-bin cov --ts",

51
server.js Normal file
View File

@ -0,0 +1,51 @@
'use strict';
const cfork = require('cfork');
const util = require('util');
const path = require('path');
const os = require('os');
// 获取 cpu 核数
const cpuNumbers = os.cpus().length;
cfork({
exec: path.join(__dirname, './bootstrap.js'),
count: cpuNumbers,
})
.on('fork', worker => {
console.warn(
'[%s] [worker:%d] new worker start',
Date(),
worker.process.pid
);
})
.on('disconnect', worker => {
console.warn(
'[%s] [master:%s] wroker:%s disconnect, exitedAfterDisconnect: %s, state: %s.',
Date(),
process.pid,
worker.process.pid,
worker.exitedAfterDisconnect,
worker.state
);
})
.on('exit', (worker, code, signal) => {
const exitCode = worker.process.exitCode;
const err = new Error(
util.format(
'worker %s died (code: %s, signal: %s, exitedAfterDisconnect: %s, state: %s)',
worker.process.pid,
exitCode,
signal,
worker.exitedAfterDisconnect,
worker.state
)
);
err.name = 'WorkerDiedError';
console.error(
'[%s] [master:%s] wroker exit: %s',
Date(),
process.pid,
err.stack
);
});

View File

@ -8,6 +8,10 @@ export default {
koa: {
port: 8001,
},
// 文件上传
upload: {
fileSize: '200mb',
},
// 模板渲染
view: {
mapping: {

View File

@ -1,9 +1,10 @@
import { App, Config, Middleware } from '@midwayjs/decorator';
import { App, Config, Inject, Middleware } from '@midwayjs/decorator';
import * as _ from 'lodash';
import { RESCODE } from '@cool-midway/core';
import * as jwt from 'jsonwebtoken';
import { NextFunction, Context } from '@midwayjs/koa';
import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
import { CacheManager } from '@midwayjs/cache';
/**
*
@ -18,7 +19,8 @@ export class BaseAuthorityMiddleware
@Config('module.base')
jwtConfig;
coolCache;
@Inject()
cacheManager: CacheManager;
@App()
app: IMidwayApplication;
@ -60,10 +62,8 @@ export class BaseAuthorityMiddleware
};
return;
}
// 需要动态获得缓存
this.coolCache = await ctx.requestContext.getAsync('cool:cache');
// 判断密码版本是否正确
const passwordV = await this.coolCache.get(
const passwordV = await this.cacheManager.get(
`admin:passwordVersion:${ctx.admin.userId}`
);
if (passwordV != ctx.admin.passwordVersion) {
@ -74,7 +74,7 @@ export class BaseAuthorityMiddleware
};
return;
}
const rToken = await this.coolCache.get(
const rToken = await this.cacheManager.get(
`admin:token:${ctx.admin.userId}`
);
if (!rToken) {
@ -88,11 +88,11 @@ export class BaseAuthorityMiddleware
if (rToken !== token && this.jwtConfig.sso) {
statusCode = 401;
} else {
let perms = await this.coolCache.get(
let perms: string[] = await this.cacheManager.get(
`admin:perms:${ctx.admin.userId}`
);
if (!_.isEmpty(perms)) {
perms = JSON.parse(perms).map(e => {
perms = perms.map(e => {
return e.replace(/:/g, '/');
});
if (!perms.includes(url.split('?')[0].replace('/admin/', ''))) {

View File

@ -87,14 +87,8 @@ export class BaseSysLoginService extends BaseService {
roleIds,
user.username === 'admin'
);
await this.cacheManager.set(
`admin:department:${user.id}`,
JSON.stringify(departments)
);
await this.cacheManager.set(
`admin:perms:${user.id}`,
JSON.stringify(perms)
);
await this.cacheManager.set(`admin:department:${user.id}`, departments);
await this.cacheManager.set(`admin:perms:${user.id}`, perms);
await this.cacheManager.set(`admin:token:${user.id}`, result.token);
await this.cacheManager.set(
`admin:token:refresh:${user.id}`,

View File

@ -68,7 +68,7 @@ export class BaseSysPermsService extends BaseService {
`admin:department:${userId}`
);
if (department) {
return JSON.parse(department);
return department;
} else {
return [];
}