diff --git a/gm-server/app/controller/users.ts b/gm-server/app/controller/users.ts index a88ba3f9f..b504acfdb 100644 --- a/gm-server/app/controller/users.ts +++ b/gm-server/app/controller/users.ts @@ -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 } } diff --git a/gm-server/app/middleware/log.ts b/gm-server/app/middleware/log.ts index 53ec4d9e9..241ead778 100644 --- a/gm-server/app/middleware/log.ts +++ b/gm-server/app/middleware/log.ts @@ -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)}`) + } }; }; diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index e2a297f64..40b044d15 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -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); diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 936998f34..bfbcd748d 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -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 = {}) { diff --git a/gm-server/package.json b/gm-server/package.json index a07fb77f8..62ec2903b 100644 --- a/gm-server/package.json +++ b/gm-server/package.json @@ -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",