diff --git a/docs/api.md b/docs/api.md index a78b53f..8058eed 100644 --- a/docs/api.md +++ b/docs/api.md @@ -301,6 +301,7 @@ body: { "address": "钱包地址", "boost": 1, // 正常值为1 + "boostExpire": 0, // 计算得分时, 如果boost过期, 即使boost大于1, 也不计算boost "twitterId": "", "twitterName": "", "discordId": "", diff --git a/src/controllers/sign.controller.ts b/src/controllers/sign.controller.ts index 934d576..74008eb 100644 --- a/src/controllers/sign.controller.ts +++ b/src/controllers/sign.controller.ts @@ -96,6 +96,7 @@ class SignController extends BaseController { let result = { address: user.address, boost: user.boost || 1, + boostExpire: user.boostExpire, twitterId: user.twitterId, twitterName: user.twitterName, discordId: user.discordId, diff --git a/src/models/ActivityUser.ts b/src/models/ActivityUser.ts index b31ce53..94019e6 100644 --- a/src/models/ActivityUser.ts +++ b/src/models/ActivityUser.ts @@ -90,6 +90,12 @@ class ActivityUserClass extends BaseModule { @prop({default: 1}) public boost: number + /** + * boost过期时间 + * 计算得分时, 如果boost过期, 则不计算boost + */ + @prop() + public boostExpire?: Date @prop() public lastLogin?: Date diff --git a/src/tasks/ShareCode.ts b/src/tasks/ShareCode.ts index 956768a..583a5ec 100644 --- a/src/tasks/ShareCode.ts +++ b/src/tasks/ShareCode.ts @@ -39,6 +39,7 @@ export default class ShareCode extends ITask { // According to configuration, add score to user who invite current user if (cfg.autoclaim) { try { + await super.claimReward(task); await updateInviteScore(this.params.user, scores, 0, task.task) } catch(err) { console.log(err) @@ -48,6 +49,7 @@ export default class ShareCode extends ITask { } public async claimReward(task: TaskStatus) { + await super.claimReward(task); let cfg = this.params.activity.tasks.find((t: TaskCfg) => t.id === task.id) let scores = cfg.params.score; await updateInviteScore(this.params.user, scores, 0, task.task) diff --git a/src/tasks/base/ITask.ts b/src/tasks/base/ITask.ts index 6a20fb4..466cf37 100644 --- a/src/tasks/base/ITask.ts +++ b/src/tasks/base/ITask.ts @@ -21,9 +21,13 @@ export abstract class ITask { if (!cfg.score) { return; } + let score = cfg.score + if (user.boost > 1 && Date.now() < user.boostExpire) { + score = Math.floor(score * user.boost) + } await updateRankScore({ user: user.id, - score: cfg.score, + score: score, activity: user.activity, scoreType: cfg.task, scoreParams: { diff --git a/src/utils/date.util.ts b/src/utils/date.util.ts index 76b98ee..68184fc 100644 --- a/src/utils/date.util.ts +++ b/src/utils/date.util.ts @@ -7,8 +7,14 @@ export const formatDate = (date: Date): string => { }; // get formated datestring of yesterday -export const yesterday = () => { - const date = new Date(); +export const yesterday = (date?: Date) => { + date = date || new Date(); date.setDate(date.getDate() - 1); return date; -}; \ No newline at end of file +}; + +export const nextday = (date?: Date) => { + date = date || new Date(); + date.setDate(date.getDate() + 1); + return date; +} \ No newline at end of file