修改每日签到规则,修改获取签到列表接口规则

This commit is contained in:
CounterFire2023 2024-01-08 19:32:07 +08:00
parent 27e08d7d40
commit 970f004dad
5 changed files with 55 additions and 10 deletions

View File

@ -337,20 +337,25 @@ body:
#### Request #### Request
- URL`/api/user/state/checkin_list` - URL`/api/user/checkin/list?tag=`
- 方法:`GET` - 方法:`GET`
- 头部: - 头部:
- Authorization: Bearer JWT_token - Authorization: Bearer JWT_token
query param
| Name | Type | Desc |
| ------- | ------ | -------- |
| tag | string | last: 最新, 前一天+今天, 1month: 当月 |
#### Response #### Response
```json ```json
[
[ [
{ {
"address": "钱包地址", "address": "钱包地址",
"day": "20240105", // 格式化后签到日期, 时区按SG(UTC+8) "day": "20240105", // 格式化后签到日期, 时区按SG(UTC+8)
"time": 1704436745 // 具体的签到时间 "time": 1704436745, // 具体的签到时间
"count": 0 //连签天数
}, },
] ]
``` ```

View File

@ -105,11 +105,11 @@
"type": 1, "type": 1,
"desc": "", "desc": "",
"category": "Special Quests", "category": "Special Quests",
"score": 100, "score": 20,
"autoclaim": false, "autoclaim": false,
"pretasks": [], "pretasks": [],
"cfg": {}, "cfg": {"score": [0, 15, 20, 20, 40, 40, 60]},
"params": {"days": 1} "params": {"days": 1, "score": [0, 15, 20, 20, 40, 40, 60]}
}, { }, {
"id": "e2f7t4lj30vwcpe0ldr", "id": "e2f7t4lj30vwcpe0ldr",
"task": "ShareCode", "task": "ShareCode",

View File

@ -122,13 +122,21 @@ class SignController extends BaseController {
return { boost: user.boost, boostExpire: user.boostExpire }; return { boost: user.boost, boostExpire: user.boostExpire };
} }
@router('get /api/user/state/checkin_list') @router('get /api/user/checkin/list/:tag')
async checkInList(req){ async checkInList(req){
const user = req.user; const user = req.user;
const res = await queryCheckInList(user.address, '1month', 0) const {tag} = req.params;
let days: any = 1;
if (tag === '1month') {
days = '1month'
} else if (tag === 'last') {
days = '1'
}
const res = await queryCheckInList(user.address, days, 0)
return res.data return res.data
} }
/** /**
* regist user by token from wallet-svr * regist user by token from wallet-svr
* TODO:: * TODO::

View File

@ -1,8 +1,9 @@
import { ITask } from "./base/ITask"; import { ITask } from "./base/ITask";
import { ZError } from "common/ZError"; import { ZError } from "common/ZError";
import { TaskStatusEnum } from "models/ActivityUser"; import { TaskStatus, TaskStatusEnum } from "models/ActivityUser";
import { TaskCfg } from "models/ActivityInfo"; import { TaskCfg } from "models/ActivityInfo";
import { queryCheckInList } from "services/chain.svr"; import { queryCheckInList } from "services/chain.svr";
import { updateRankScore } from "services/rank.svr";
// TODO:: test // TODO:: test
/** /**
@ -46,4 +47,34 @@ export default class DailyCheckIn extends ITask {
return true return true
} }
public async claimReward(task: TaskStatus) {
// await super.claimReward(task);
// 增加连续签到奖励分
// 请求前7天的签到记录, 往前查找连续签到的记录,
const res = await queryCheckInList(this.params.user.address, 1, 0)
const [taskId, dateTag] = task.id.split(':');
let list: { day: string, time: number, count: number }[] = res.data;
let cfg = this.params.activity.tasks.find((t: TaskCfg) => t.id === task.id)
const countCfg = cfg.params.score.length;
let count = list.length > 0 ? list[0].count : 0;
let seq = count % countCfg;
let score = cfg.params.score[seq] + cfg.score;
const user = this.params.user
if (user.boost > 1 && Date.now() < user.boostExpire) {
score = Math.floor(score * user.boost)
}
await updateRankScore({
user: this.params.user.id,
score: score,
activity: this.params.user.activity,
scoreType: cfg.task,
scoreParams: {
taskId: task.id,
date: dateTag,
bouns: score,
boost: user.boost,
}
})
}
} }

View File

@ -32,7 +32,8 @@ export abstract class ITask {
scoreType: cfg.task, scoreType: cfg.task,
scoreParams: { scoreParams: {
date: dateTag, date: dateTag,
taskId: task.id taskId: task.id,
boost: user.boost
} }
}) })
task.status = TaskStatusEnum.CLAIMED task.status = TaskStatusEnum.CLAIMED