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

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

View File

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

View File

@ -122,13 +122,21 @@ class SignController extends BaseController {
return { boost: user.boost, boostExpire: user.boostExpire };
}
@router('get /api/user/state/checkin_list')
@router('get /api/user/checkin/list/:tag')
async checkInList(req){
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
}
/**
* regist user by token from wallet-svr
* TODO::

View File

@ -1,8 +1,9 @@
import { ITask } from "./base/ITask";
import { ZError } from "common/ZError";
import { TaskStatusEnum } from "models/ActivityUser";
import { TaskStatus, TaskStatusEnum } from "models/ActivityUser";
import { TaskCfg } from "models/ActivityInfo";
import { queryCheckInList } from "services/chain.svr";
import { updateRankScore } from "services/rank.svr";
// TODO:: test
/**
@ -46,4 +47,34 @@ export default class DailyCheckIn extends ITask {
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,
scoreParams: {
date: dateTag,
taskId: task.id
taskId: task.id,
boost: user.boost
}
})
task.status = TaskStatusEnum.CLAIMED