礼包码:导出excel

This commit is contained in:
luying
2022-09-14 17:41:05 +08:00
parent 2d6f59ff57
commit 5fd7fa73fb
5 changed files with 37 additions and 13 deletions

View File

@@ -142,8 +142,8 @@ export default class UserController extends Controller {
public async getGiftCodeDetailFile() {
const { ctx } = this;
const { id } = ctx.params;
ctx.body = await ctx.service.users.getGiftCodeDetailFile(parseInt(id));
const { id, fileType } = ctx.params;
ctx.body = await ctx.service.users.getGiftCodeDetailFile(parseInt(id), fileType);
return
}
}

View File

@@ -14,7 +14,9 @@ module.exports = () => {
throw e;
}
const resBody = ctx.body;
ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] res: ${JSON.stringify(resBody)}`)
if(ctx.request.url.indexOf('/api/users/getgiftcodedetailfile') == -1 ) {
ctx.service.utils.log('INFO', `[${ctx.request.url}] [${ctx.logcode}] res: ${JSON.stringify(resBody)}`)
}
};
};

View File

@@ -39,7 +39,7 @@ export default (app: Application) => {
router.post('/api/users/generategiftcode', tokenParser, controller.users.generateGiftCode);
router.post('/api/users/cancelgiftCode', tokenParser, controller.users.cancelGiftCode);
router.post('/api/users/getgiftcodedetaillist', tokenParser, controller.users.getGiftCodeDetailList);
router.get('/api/users/getgiftcodedetailfile/:id/:filename', controller.users.getGiftCodeDetailFile);
router.get('/api/users/getgiftcodedetailfile/:id/:fileType/:filename', controller.users.getGiftCodeDetailFile);
router.post('/api/game/getregions', tokenParser, controller.game.getRegions);
router.post('/api/game/createregion', tokenParser, controller.game.createRegion);

View File

@@ -9,7 +9,7 @@ import { gameData } from '@pubUtils/data';
import { smsModel } from '@db/Sms';
import { isString } from 'underscore';
import { GiftCodeModel } from '@db/GiftCode';
import { GiftCodeDetailModel } from '@db/GiftCodeDetail';
import GiftCodeDetail, { GiftCodeDetailModel } from '@db/GiftCodeDetail';
import { deletRole } from '@pubUtils/roleUtil';
import { RScriptRecordModel } from '@db/RScriptRecord';
import { DicWar } from '@pubUtils/dictionary/DicWar';
@@ -23,6 +23,7 @@ import { TowerRecordModel } from '@db/TowerRecord';
import { nowSeconds } from '@pubUtils/timeUtil';
import { RoleCeModel, RoleCeType } from '@db/RoleCe';
import { HangUpRecordModel } from '@db/HangUpRecord';
const Excel = require('exceljs');
// import { resResult } from '@pubUtils/util';
@@ -530,21 +531,41 @@ export default class GMUsers extends Service {
return ctx.service.utils.resResult(STATUS.SUCCESS, giftCode);
}
public async getGiftCodeDetailFile(id: number) {
public async getGiftCodeDetailFile(id: number, fileType: string) {
const { ctx } = this;
let giftCode = await GiftCodeModel.findByGiftId(id);
if(!giftCode) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
let codes: string[] = [];
let giftCodeDetails = await GiftCodeDetailModel.findAllCodeByGiftId(giftCode.id, giftCode.generateCnt);
for(let {code} of giftCodeDetails) {
codes.push(code);
if(fileType == 'txt') {
let codes: string[] = [];
for(let {code} of giftCodeDetails) {
codes.push(code);
}
console.log(id, codes.join())
ctx.set('Content-Type', 'application/octet-stream');
return Buffer.from(codes.join('\n'));
} else if(fileType == 'xls'){
ctx.set('Content-Type', 'application/vnd.openxmlformats');
return await this.generateExcelFromGiftCode(giftCodeDetails);
}
console.log(id, codes.join())
}
ctx.set('Content-Type', 'application/octet-stream');
return Buffer.from(codes.join('\n'));
private async generateExcelFromGiftCode(giftCodeDetails: GiftCodeDetail[]) {
let workBook = new Excel.Workbook();
let worksheet = workBook.addWorksheet('sheet1');
let rows = giftCodeDetails.map(cur => [cur.code]);
worksheet.addTable({
name: 'table1',
ref: 'A1',
columns: [
{name: '礼包码', filterButton: false},
],
rows,
});
return await workBook.xlsx.writeBuffer();
}
public async getGiftCodeDetailList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchGiftCodeDetailParam = {}) {

View File

@@ -36,6 +36,7 @@
"egg-cors": "^2.2.3",
"egg-http-proxy-middleware": "^1.0.3",
"egg-scripts": "^2.6.0",
"exceljs": "^4.3.0",
"form-data": "^4.0.0",
"formstream": "^1.1.1",
"moment": "^2.29.0",