From e73920b917634e725a68ee1bb52c089b185f82af Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 26 Apr 2021 15:22:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E9=A2=98?= =?UTF-8?q?=E7=9B=AE=E5=92=8C=E4=B8=8A=E6=8A=A5=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api.server.ts | 2 +- src/api/controllers/puzzle.controller.ts | 48 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/api/controllers/puzzle.controller.ts diff --git a/src/api.server.ts b/src/api.server.ts index d852621..5b02566 100644 --- a/src/api.server.ts +++ b/src/api.server.ts @@ -137,7 +137,7 @@ export class ApiServer { self.registerRouter(); self.setErrHandler(); // self.setFormatSend(); - this.server.listen({port: config.api.port, host: config.api.host}, (err: any, address: any) => { + this.server.listen({port: config.api.port}, (err: any, address: any) => { if (err) { logger.log(err) process.exit(0) diff --git a/src/api/controllers/puzzle.controller.ts b/src/api/controllers/puzzle.controller.ts new file mode 100644 index 0000000..2bcff03 --- /dev/null +++ b/src/api/controllers/puzzle.controller.ts @@ -0,0 +1,48 @@ +import BaseController from '../../common/base.controller' +import { role, router } from '../../decorators/router' +import { Puzzle } from '../../models/content/Puzzle' +import { ZError } from '../../common/ZError' + +class PuzzleController extends BaseController { + @role('anon') + @router('post /puzzle/list') + async list(req, res) { + let { shop, level } = req.params + let count = 10 + let records = await Puzzle.aggregate([ + { $match: { status: 1, is_hide: 0, deleted: 0 } }, + { $sample: { size: count } } + ]).exec() + return records.map(o => { + let answers = [] + for (let i = 1; i <=4; i++) { + if (o[`a${i}`]) { + answers.push(o[`a${i}`]) + } + } + answers.randomSort() + return { + id: o._id, + title: o.question, + answers, + type: 1 + } + }) + } + + @role('anon') + @router('post /puzzle/answer') + async report(req, res) { + let { id, answer } = req.params + if (!id || !answer) { + throw new ZError(11, 'param mismatch') + } + let record = await Puzzle.findById(id) + if (!record) { + throw new ZError(12, 'question not found') + } + let result = record.a1 == answer ? 1 : 0 + + return {result} + } +}