feat(活动): 添加关注豪礼

This commit is contained in:
luying
2023-03-31 17:35:24 +08:00
parent 07b75c1510
commit 94b6dca4cc
15 changed files with 382 additions and 27 deletions

View File

@@ -251,4 +251,25 @@ export default class GameController extends Controller {
ctx.body = await ctx.service.game.getGVGConfig();
return
}
public async getLinks() {
const { ctx } = this;
const { types } = ctx.request.body;
ctx.body = await ctx.service.game.getLinks(types);
return
}
public async updateWXLink() {
const { ctx } = this;
const { serverId, link, qrCodeLink } = ctx.request.body;
ctx.body = await ctx.service.game.updateWXLink(serverId, link, qrCodeLink);
return
}
public async updateOtherLink() {
const { ctx } = this;
const { wxPublicAccountQrCode, bbsLink, customerLink } = ctx.request.body;
ctx.body = await ctx.service.game.updateOtherLink(wxPublicAccountQrCode, bbsLink, customerLink);
return
}
}

View File

@@ -15,6 +15,7 @@ const publishPath = '/root/hot_update_backup';
import {exec} from 'child_process'
import { reloadResources } from '@pubUtils/data';
import { decodeArrayStr } from '@pubUtils/util';
import { getLocalQrCodeUrl, getRemoteQrCodeUrl } from '@pubUtils/battleUtils';
const sendToWormhole = require('stream-wormhole');
export default class UploadController extends Controller {
@@ -276,6 +277,49 @@ export default class UploadController extends Controller {
return;
}
}
public async uploadQrCode() {
const { ctx } = this;
try {
const { ctx } = this;
const parts = ctx.multipart();
let part, env = ctx.request.headers.env, fileName = '';
while ((part = await parts()) != null) {
if (part.length) {
console.log('kv: ', `${part[0]}: ${part[1]}`);
} else {
if (!part.filename) continue;
let filenames = part.filename.split('.');
let ext = filenames[filenames.length - 1];
let writePath = getLocalQrCodeUrl(this.app.config.realEnv, env);
fileName = `QR${moment().valueOf()}.${ext}`;
let fullPath = `${writePath}/${fileName}`;
try {
fs.accessSync(writePath);
} catch (err) {
if (err) {
fs.mkdirSync(writePath, { recursive: true });
}
}
if (!fs.existsSync(fullPath)) {
fs.writeFileSync(fullPath, '');
}
const writeStream = fs.createWriteStream(fullPath);
await pump(part, writeStream);
// remoteUrl = `${getRemoteRplUrl(ctx.app.config.realEnv, roleId, warType, battleCode)}/${battleCode}.bin`;
}
await sendToWormhole(part);
}
ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { isOK: true, url: getRemoteQrCodeUrl(env, fileName) });
return;
} catch(e) {
ctx.body = ctx.service.utils.resResult(STATUS.SUCCESS, { isOK: false, err: e.stack });
return;
}
}
}
export function childExec(commond: string) {

View File

@@ -12,6 +12,7 @@ export default (app: Application) => {
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);
router.post('/api/upload/uploadqrcode', tokenParser, controller.upload.uploadQrCode);
router.post('/api/gmaccount/getgmlist', tokenParser, controller.gmaccount.getGmList);
router.post('/api/gmaccount/createaccount', tokenParser,controller.gmaccount.createGmAccount);
@@ -65,6 +66,9 @@ export default (app: Application) => {
router.post('/api/game/getexisthiddendata', controller.game.getExistHiddenData);
router.post('/api/game/getgvgservergroup', controller.game.getGVGServerGroup);
router.post('/api/game/getgvgconfig', controller.game.getGVGConfig);
router.post('/api/game/getlinks', tokenParser, controller.game.getLinks);
router.post('/api/game/updatewxlink', tokenParser, controller.game.updateWXLink);
router.post('/api/game/updateotherlink', tokenParser, controller.game.updateOtherLink);
router.post('/api/dic/getdicgoods', tokenParser, controller.game.getDicGoods);
router.post('/api/dic/getdichero', tokenParser, controller.game.getDicHero);

View File

@@ -1,6 +1,6 @@
import { PackageModel } from '@db/Package';
import { Service } from 'egg';
import { REDIS_KEY, STATUS } from '@consts';
import { REDIS_KEY, SNS_LINK_TYPE, STATUS } from '@consts';
import { ServerlistModel } from '@db/Serverlist';
import { gameData } from '@pubUtils/data';
import { DicHero } from '@pubUtils/dictionary/DicHero';
@@ -26,6 +26,7 @@ import { HiddenDataByIdModel } from '@db/HiddenDataById';
import { isNumber } from 'util';
import { ServerGroupModel } from '@db/ServerGroup';
import { GVGConfigModel } from '@db/GVGConfig';
import { LinkModel } from '@db/Link';
/**
* Test Service
@@ -420,4 +421,31 @@ export default class Game extends Service {
list: gvgconfig?[{...gvgconfig, env: this.app.config.realEnv }]: []
});
}
public async getLinks(types: number[]) {
const { ctx } = this;
const links = await LinkModel.findByTypes(types);
return ctx.service.utils.resResult(STATUS.SUCCESS, {
list: links.map(cur => ({...cur, env: this.app.config.realEnv }))
});
}
public async updateWXLink(serverId: number, link: string, qrCodeLink: string ) {
const { ctx } = this;
await LinkModel.updateByServerAndType(serverId, SNS_LINK_TYPE.WX_GROUP, { link, qrCodeLink }, ctx.user?.uid);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async updateOtherLink(wxPublicAccountQrCode: string, bbsLink: string, customerLink: string ) {
const { ctx } = this;
let updateArr: { type: number, link?: string, qrCodeLink?: string }[] = [];
if(wxPublicAccountQrCode) updateArr.push({ type: SNS_LINK_TYPE.WX_PUBLIC_ACCOUNT, qrCodeLink: wxPublicAccountQrCode });
if(bbsLink) updateArr.push({ type: SNS_LINK_TYPE.BBS, link: bbsLink });
if(customerLink) updateArr.push({ type: SNS_LINK_TYPE.CUSTOMER, link: customerLink });
await LinkModel.updateLinks(updateArr, ctx.user?.uid);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
}

View File

@@ -47,7 +47,7 @@ export default (appInfo: EggAppInfo) => {
fileSize: '100mb',
mode: 'stream',
whitelist: [
'.json', '.ts', '.zip'
'.json', '.ts', '.zip', '.jpg', '.png', '.jpeg'
],
fileExtensions: ['.json', '.ts', '.zip', '.tar.gz'], // 扩展几种上传的文件格式
autoFields: true