礼包码:导出excel
This commit is contained in:
@@ -142,8 +142,8 @@ export default class UserController extends Controller {
|
|||||||
|
|
||||||
public async getGiftCodeDetailFile() {
|
public async getGiftCodeDetailFile() {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
const { id } = ctx.params;
|
const { id, fileType } = ctx.params;
|
||||||
ctx.body = await ctx.service.users.getGiftCodeDetailFile(parseInt(id));
|
ctx.body = await ctx.service.users.getGiftCodeDetailFile(parseInt(id), fileType);
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ module.exports = () => {
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
const resBody = ctx.body;
|
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)}`)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default (app: Application) => {
|
|||||||
router.post('/api/users/generategiftcode', tokenParser, controller.users.generateGiftCode);
|
router.post('/api/users/generategiftcode', tokenParser, controller.users.generateGiftCode);
|
||||||
router.post('/api/users/cancelgiftCode', tokenParser, controller.users.cancelGiftCode);
|
router.post('/api/users/cancelgiftCode', tokenParser, controller.users.cancelGiftCode);
|
||||||
router.post('/api/users/getgiftcodedetaillist', tokenParser, controller.users.getGiftCodeDetailList);
|
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/getregions', tokenParser, controller.game.getRegions);
|
||||||
router.post('/api/game/createregion', tokenParser, controller.game.createRegion);
|
router.post('/api/game/createregion', tokenParser, controller.game.createRegion);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { gameData } from '@pubUtils/data';
|
|||||||
import { smsModel } from '@db/Sms';
|
import { smsModel } from '@db/Sms';
|
||||||
import { isString } from 'underscore';
|
import { isString } from 'underscore';
|
||||||
import { GiftCodeModel } from '@db/GiftCode';
|
import { GiftCodeModel } from '@db/GiftCode';
|
||||||
import { GiftCodeDetailModel } from '@db/GiftCodeDetail';
|
import GiftCodeDetail, { GiftCodeDetailModel } from '@db/GiftCodeDetail';
|
||||||
import { deletRole } from '@pubUtils/roleUtil';
|
import { deletRole } from '@pubUtils/roleUtil';
|
||||||
import { RScriptRecordModel } from '@db/RScriptRecord';
|
import { RScriptRecordModel } from '@db/RScriptRecord';
|
||||||
import { DicWar } from '@pubUtils/dictionary/DicWar';
|
import { DicWar } from '@pubUtils/dictionary/DicWar';
|
||||||
@@ -23,6 +23,7 @@ import { TowerRecordModel } from '@db/TowerRecord';
|
|||||||
import { nowSeconds } from '@pubUtils/timeUtil';
|
import { nowSeconds } from '@pubUtils/timeUtil';
|
||||||
import { RoleCeModel, RoleCeType } from '@db/RoleCe';
|
import { RoleCeModel, RoleCeType } from '@db/RoleCe';
|
||||||
import { HangUpRecordModel } from '@db/HangUpRecord';
|
import { HangUpRecordModel } from '@db/HangUpRecord';
|
||||||
|
const Excel = require('exceljs');
|
||||||
|
|
||||||
// import { resResult } from '@pubUtils/util';
|
// import { resResult } from '@pubUtils/util';
|
||||||
|
|
||||||
@@ -530,21 +531,41 @@ export default class GMUsers extends Service {
|
|||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, giftCode);
|
return ctx.service.utils.resResult(STATUS.SUCCESS, giftCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getGiftCodeDetailFile(id: number) {
|
public async getGiftCodeDetailFile(id: number, fileType: string) {
|
||||||
const { ctx } = this;
|
const { ctx } = this;
|
||||||
|
|
||||||
let giftCode = await GiftCodeModel.findByGiftId(id);
|
let giftCode = await GiftCodeModel.findByGiftId(id);
|
||||||
if(!giftCode) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
if(!giftCode) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||||
let codes: string[] = [];
|
|
||||||
let giftCodeDetails = await GiftCodeDetailModel.findAllCodeByGiftId(giftCode.id, giftCode.generateCnt);
|
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');
|
private async generateExcelFromGiftCode(giftCodeDetails: GiftCodeDetail[]) {
|
||||||
|
let workBook = new Excel.Workbook();
|
||||||
return Buffer.from(codes.join('\n'));
|
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 = {}) {
|
public async getGiftCodeDetailList(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchGiftCodeDetailParam = {}) {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
"egg-cors": "^2.2.3",
|
"egg-cors": "^2.2.3",
|
||||||
"egg-http-proxy-middleware": "^1.0.3",
|
"egg-http-proxy-middleware": "^1.0.3",
|
||||||
"egg-scripts": "^2.6.0",
|
"egg-scripts": "^2.6.0",
|
||||||
|
"exceljs": "^4.3.0",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"formstream": "^1.1.1",
|
"formstream": "^1.1.1",
|
||||||
"moment": "^2.29.0",
|
"moment": "^2.29.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user