diff --git a/docs/api.md b/docs/api.md index 7c5fb8f..d28352f 100644 --- a/docs/api.md +++ b/docs/api.md @@ -630,7 +630,25 @@ ``` +### 24. 视频广告上报 +1. Method: POST +2. URI: /api/:accountid/adresult + +| 字段 | 说明 | +| -------- | -------------------------------------- | +| accountid | 帐号id | + +3. Response: JSON + +```js +[ //物品列表 + { + "id": 0, //道具id + "count": 0, //道具数量 + }, +] +``` diff --git a/src/controllers/AccountController.ts b/src/controllers/AccountController.ts index 5ffa6d7..5e07b51 100644 --- a/src/controllers/AccountController.ts +++ b/src/controllers/AccountController.ts @@ -121,7 +121,6 @@ export default class AccountController extends BaseController { async cardlist(req: any) { let account = req.user let result: Card[] = [...account.cardMap.values()].map(o => o.toJson()) - //TODO:: 添加限免英雄和免费英雄 return result } diff --git a/src/controllers/AdController.ts b/src/controllers/AdController.ts new file mode 100644 index 0000000..a2c1501 --- /dev/null +++ b/src/controllers/AdController.ts @@ -0,0 +1,21 @@ +import BaseController from '../common/base.controller' +import { router } from '../decorators/router' +import { AdRecord } from '../models/AdRecord' + +export default class AdController extends BaseController { + /** + * 观看视频广告后的上报, 添加奖励物品 + * @param req + * @return {Promise<{}>} + */ + @router('post /api/:accountid/adresult') + async drawCard(req: any) { + let { accountid } = req.params + let day = (new Date()).format('yyyy-MM-dd', true) + let record = (await AdRecord.findOrCreate({accountid, day})).doc + record.count += 1 + //TODO:: 读取配置, 查看次数是否达到上限, 添加物品 + await record.save() + return {} + } +} diff --git a/src/controllers/CardController.ts b/src/controllers/CardController.ts index 9da9f14..258401e 100644 --- a/src/controllers/CardController.ts +++ b/src/controllers/CardController.ts @@ -96,7 +96,6 @@ export default class CardController extends BaseController { } if (cards) { let datas: Card[] = [] - //TODO:: 设置真实的卡牌信息 for (let cardid of cards) { let card = new Card() card.cardid = cardid diff --git a/src/controllers/HeroController.ts b/src/controllers/HeroController.ts index 2f8399e..7320add 100644 --- a/src/controllers/HeroController.ts +++ b/src/controllers/HeroController.ts @@ -17,7 +17,6 @@ export default class HeroController extends BaseController { for (let [, hero] of account.heros) { heros.push(hero.toJson()) } - //TODO:: 添加限免英雄和免费英雄 return heros } diff --git a/src/models/AdRecord.ts b/src/models/AdRecord.ts new file mode 100644 index 0000000..21cc1fd --- /dev/null +++ b/src/models/AdRecord.ts @@ -0,0 +1,42 @@ +import { dbconn } from '../decorators/dbconn' +import { + getModelForClass, + index, + modelOptions, + plugin, + prop +} from '@typegoose/typegoose' +import { + Base, + FindOrCreate, + TimeStamps +} from '@typegoose/typegoose/lib/defaultClasses' +// @ts-ignore +import findOrCreate from 'mongoose-findorcreate' + + +interface AdRecordClass extends Base, TimeStamps { +} + +@dbconn() +@index({ 'accountid': 1 , 'day': 1}, { unique: true }) +@plugin(findOrCreate) +@modelOptions({ + schemaOptions: + { collection: 'ad_record', timestamps: true } +}) +class AdRecordClass extends FindOrCreate { + @prop() + public accountid: string + + @prop() + public day: string + + @prop({ default: 0 }) + public count: number + +} + +export const AdRecord = getModelForClass(AdRecordClass, +// @ts-ignore + { existingConnection: AdRecordClass['db'] })