后台:上传资源

This commit is contained in:
luying
2021-12-17 19:17:05 +08:00
parent 8c966aaed7
commit 07e12ccf9e
10 changed files with 110 additions and 24 deletions
+6
View File
@@ -208,4 +208,10 @@ export default class GameController extends Controller {
ctx.body = await ctx.service.game.getDicTaskType();
return
}
public async getServerName() {
const { ctx } = this;
ctx.body = await ctx.service.game.getServerName();
return
}
}
+19 -5
View File
@@ -14,9 +14,9 @@ const hotUpdateAddr = `/root/${folderName}`;
const publishPath = '/root/hot_update_backup';
import {exec} from 'child_process'
import { reloadResources } from '@pubUtils/data';
import { decodeArrayStr } from '@pubUtils/util';
const sendToWormhole = require('stream-wormhole');
export default class UploadController extends Controller {
private deleteFolder (path) {
@@ -148,7 +148,7 @@ export default class UploadController extends Controller {
// 解压上传文件的stream
var unzipExtractor = unzip.Extract({ path: dirPath });
unzipExtractor.on('close', function() {
resolve();
resolve(null);
});
unzipExtractor.on('close', function(e) {
@@ -170,26 +170,30 @@ export default class UploadController extends Controller {
public async uploadJson() {
const { ctx } = this;
const parts = ctx.multipart({ });
const files = [];
try {
let stream;
let writeStream;
while ((stream = await parts()) != null) {
console.log('******', stream);
const filename = stream.filename;
let filenameWithoutEx = filename?filename.split('.')[0]:'';
if (stream.mimeType == 'application/json') {
if (filenameWithoutEx.match(/^\d{1,}$/)) {
let target1 = path.join(this.config.baseDir, this.warjsonFolder, filename);
let target2 = path.join(this.config.baseDir, this.distWarjsonFolder, filename);
const writeStream = fs.createWriteStream(target1);
writeStream = fs.createWriteStream(target1);
await pump(stream, writeStream);
fs.copyFileSync(target1, target2);
files.push(filename);
} else {
let target1 = path.join(this.config.baseDir, this.jsonFolder, filename);
let target2 = path.join(this.config.baseDir, this.distJsonFolder, filename);
const writeStream = fs.createWriteStream(target1);
writeStream = fs.createWriteStream(target1);
await pump(stream, writeStream);
fs.copyFileSync(target1, target2);
files.push(filename);
@@ -197,13 +201,23 @@ export default class UploadController extends Controller {
} else if (stream.mimeType == 'application/octet-stream') {
let target1 = path.join(this.config.baseDir, this.tsFolder, 'dicParam.js');
let target2 = path.join(this.config.baseDir, this.distTsFolder, filename);
const writeStream = fs.createWriteStream(target1);
writeStream = fs.createWriteStream(target1);
await pump(stream, writeStream);
fs.copyFileSync(target1, target2);
files.push(filename);
}
let envs = decodeArrayStr(ctx.request.headers.env||'', ',');
if(envs.length > 0) { // 转发
for(let env of envs) {
if(env == ctx.app.config.realEnv) continue;
await ctx.service.utils.transmit(env, ctx.request.url, writeStream);
}
}
sendToWormhole(stream);
}
}catch(e) {
console.error(e);
}
+2 -1
View File
@@ -8,7 +8,7 @@ export default (app: Application) => {
router.post('/api/login/account', controller.login.login);
router.post('/api/login/changeMyPass', tokenParser, controller.login.changeMyPass);
router.post('/api/get_route', controller.login.getMenu);
router.get('/api/currentUser', tokenParser, controller.login.currentUser);
router.post('/api/currentUser', tokenParser, controller.login.currentUser);
router.post('/api/upload/hotupdate', tokenParser, controller.upload.upload);
router.post('/api/upload/uploadjson', tokenParser, controller.upload.uploadJson);
router.post('/api/upload/reloadresource', tokenParser, controller.upload.reloadResource);
@@ -73,6 +73,7 @@ export default (app: Application) => {
router.post('/api/game/getdicrmb', tokenParser, controller.game.getDicRMB);
router.post('/api/game/getdicactivitytype', tokenParser, controller.game.getDicActivityType);
router.post('/api/game/getdictasktype', tokenParser, controller.game.getDicTaskType);
router.post('/api/game/getservername', controller.game.getServerName)
// router.post('/api/game/getserverstategylist', controller.game.getServerStategyList);
// router.post('/api/game/updateserverstategy', controller.game.updateServerStategy);
+11
View File
@@ -16,6 +16,7 @@ import { nowSeconds } from '@pubUtils/timeUtil';
import { WhiteListModel } from '@db/RegionWhiteList';
import { RoleModel } from '@db/Role';
import { SearchMarqueeParam } from '@domain/backEndField/search';
import { DicServerName } from '@pubUtils/dictionary/DicServerName';
/**
* Test Service
@@ -278,6 +279,16 @@ export default class Game extends Service {
})
}
public async getServerName() {
let list: DicServerName[] = [];
for(let [_, serverName] of gameData.serverNames) {
list.push(serverName);
}
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
list
})
}
public async getNoticeList(page: number, pageSize: number, sortField: string, sortOrder: string, form: { content?: string }) {
const { ctx } = this;
const list = await NoticeModel.findByCondition(page, pageSize, sortField, sortOrder, form);
+14
View File
@@ -72,4 +72,18 @@ export default class Utils extends Service {
log.error(`${message}`);
}
}
public async transmit(env: string, route: string, stream: any) {
const { ctx } = this;
console.log('****transmit', stream);
const result = await ctx.curl(`http://127.0.0.1:7002${route}`, {
method: 'POST',
files: stream,
headers: {
token: ctx.request.headers.token
}
});
console.log(env, result)
}
}