From 7d79d7b2b6d57d0fb42e4e2ef4772c95c5732ba8 Mon Sep 17 00:00:00 2001 From: zhl Date: Fri, 22 Jan 2021 11:05:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E5=BC=80=E5=A7=8B=E5=8C=B9=E9=85=8D=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/api.md | 23 +++++++++++++++++++++ src/controllers/AccountController.ts | 3 ++- src/controllers/MatchController.ts | 31 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/controllers/MatchController.ts diff --git a/docs/api.md b/docs/api.md index 228342c..8513c59 100644 --- a/docs/api.md +++ b/docs/api.md @@ -478,6 +478,29 @@ ``` +### 18. 开始比赛 +1. Method: POST +2. URI: /api/:accountid/beginmatch + +| 字段 | 说明 | +| -------- | -------------------------------------- | +| accountid | 帐号id | + +> POST参数 + + +| 字段 | 说明 | +| -------- | -------------------------------------- | +| matchid |10_match.xlsx里的id | + + +3. Response: JSON + +```js + + +``` + diff --git a/src/controllers/AccountController.ts b/src/controllers/AccountController.ts index 7fd1c80..4d4e82e 100644 --- a/src/controllers/AccountController.ts +++ b/src/controllers/AccountController.ts @@ -111,6 +111,7 @@ export default class AccountController extends BaseController { return items.map(o => o.toJson()) } + @router('post /svr/:accountid/useitem') @router('post /api/:accountid/useitem') async userItem(req: any) { let { accountid, itemid, count } = req.params @@ -169,7 +170,7 @@ export default class AccountController extends BaseController { } } - @router('post /api/:accountid/additem') + @router('post /svr/:accountid/additem') async addItem(req: any) { let { itemid, count, accountid } = req.params let itemInfo = ItemCtrl.findItem(itemid) diff --git a/src/controllers/MatchController.ts b/src/controllers/MatchController.ts new file mode 100644 index 0000000..0cb7778 --- /dev/null +++ b/src/controllers/MatchController.ts @@ -0,0 +1,31 @@ +import BaseController from '../common/base.controller' +import { router } from '../decorators/router' +import { BaseConst } from '../constants/BaseConst' +import { ZError } from '../common/ZError' +import { MatchCfg } from '../cfg/parsers/MatchCfg' +import { BagItem } from '../models/BagItem' + +export default class MatchController extends BaseController { + + @router('post /api/:accountid/beginmatch') + async beginMatch(req: any) { + let {accountid, matchid} = req.params + let cfg: MatchCfg = global.$cfg.get(BaseConst.MATCH).get(matchid << 0) + if (!cfg || !cfg.consume) { + throw new ZError(10, 'match not found') + } + let itemObj = cfg.consume.split(':') + let itemid: number = parseInt(itemObj[0]) + let count: number = parseInt(itemObj[1]) + let record = await BagItem.findOne({ + accountid, + itemid + }) + if (!record || record.count < count) { + throw new ZError(11, 'not enough ticket') + } + record.count -= count + await record.save() + return {} + } +}