feat(profile): add daily free chat and private message quotas to user profile response
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
告诉前端这次只改了 GET /api/user/profile 的响应,新增每日免费额度信息,原有字段不变。
|
||||
接口:GET https://api.cozsweet.com/api/user/profile
|
||||
新增字段:
|
||||
{
|
||||
"dailyFreeChatLimit": 10,
|
||||
"dailyFreeChatUsed": 0,
|
||||
"dailyFreeChatRemaining": 10,
|
||||
"dailyFreePrivateLimit": 0,
|
||||
"dailyFreePrivateUsed": 0,
|
||||
"dailyFreePrivateRemaining": 0,
|
||||
"dailyQuotas": {
|
||||
"chat": {
|
||||
"limit": 10,
|
||||
"used": 0,
|
||||
"remaining": 10
|
||||
},
|
||||
"privateMessage": {
|
||||
"limit": 0,
|
||||
"used": 0,
|
||||
"remaining": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
含义:
|
||||
dailyFreeChatLimit:今天免费聊天总次数
|
||||
dailyFreeChatUsed:今天已用免费聊天次数
|
||||
dailyFreeChatRemaining:今天剩余免费聊天次数
|
||||
dailyFreePrivateLimit:今天免费私密消息总次数
|
||||
dailyFreePrivateUsed:今天已用免费私密消息次数
|
||||
dailyFreePrivateRemaining:今天剩余免费私密消息次数
|
||||
dailyQuotas:同样数据的结构化版本,前端想用对象也可以直接用它
|
||||
当前额度规则:
|
||||
游客/未注册:聊天 10,私密 0
|
||||
注册用户:聊天 30,私密 2
|
||||
注意:
|
||||
聊天优先消耗 dailyFreeChatRemaining
|
||||
私密消息优先消耗 dailyFreePrivateRemaining
|
||||
聊天剩余为 0 时,前端应阻止继续聊天或展示后端返回的额度用完提示
|
||||
私密剩余为 0 时,前端不要展示私密内容,按锁定私密消息处理。
|
||||
16:19
|
||||
profile完整字段发给前端
|
||||
16:20
|
||||
发给前端这版:
|
||||
GET https://api.cozsweet.com/api/user/profile
|
||||
Authorization: Bearer <token>
|
||||
完整响应结构:
|
||||
interface ProfileResponse {
|
||||
code: number;
|
||||
message: string;
|
||||
success: boolean;
|
||||
data: UserProfile;
|
||||
}
|
||||
|
||||
interface UserProfile {
|
||||
id: string;
|
||||
username: string;
|
||||
email: string | null;
|
||||
platform: string;
|
||||
|
||||
intimacy: number;
|
||||
dolBalance: number;
|
||||
creditBalance: number;
|
||||
|
||||
isTestAccount: boolean;
|
||||
|
||||
personalityTraits: Record<string, number> | null;
|
||||
preferredLanguage: string | null;
|
||||
|
||||
createdAt: string | null;
|
||||
lastMessageAt: string | null;
|
||||
|
||||
country: string | null;
|
||||
countryCode: string | null;
|
||||
|
||||
dailyFreeChatLimit: number;
|
||||
dailyFreeChatUsed: number;
|
||||
dailyFreeChatRemaining: number;
|
||||
|
||||
dailyFreePrivateLimit: number;
|
||||
dailyFreePrivateUsed: number;
|
||||
dailyFreePrivateRemaining: number;
|
||||
|
||||
dailyQuotas: {
|
||||
chat: {
|
||||
limit: number;
|
||||
used: number;
|
||||
remaining: number;
|
||||
};
|
||||
privateMessage: {
|
||||
limit: number;
|
||||
used: number;
|
||||
remaining: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
示例:
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "user-id",
|
||||
"username": "guest_codex",
|
||||
"email": "device_xxx@guest.local",
|
||||
"platform": "web",
|
||||
"intimacy": 0,
|
||||
"dolBalance": 0,
|
||||
"creditBalance": 0,
|
||||
"isTestAccount": false,
|
||||
"personalityTraits": {
|
||||
"caring": 0.5,
|
||||
"playful": 0.5,
|
||||
"serious": 0.5,
|
||||
"cheerful": 0.5,
|
||||
"romantic": 0.5
|
||||
},
|
||||
"preferredLanguage": "ja",
|
||||
"createdAt": "2026-07-03T16:12:01.591264+08:00",
|
||||
"lastMessageAt": null,
|
||||
"country": "Japan",
|
||||
"countryCode": "JP",
|
||||
"dailyFreeChatLimit": 10,
|
||||
"dailyFreeChatUsed": 0,
|
||||
"dailyFreeChatRemaining": 10,
|
||||
"dailyFreePrivateLimit": 0,
|
||||
"dailyFreePrivateUsed": 0,
|
||||
"dailyFreePrivateRemaining": 0,
|
||||
"dailyQuotas": {
|
||||
"chat": {
|
||||
"limit": 10,
|
||||
"used": 0,
|
||||
"remaining": 10
|
||||
},
|
||||
"privateMessage": {
|
||||
"limit": 0,
|
||||
"used": 0,
|
||||
"remaining": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
额度规则:
|
||||
游客:dailyFreeChatLimit = 10,dailyFreePrivateLimit = 0
|
||||
注册用户:dailyFreeChatLimit = 30,dailyFreePrivateLimit = 2
|
||||
Reference in New Issue
Block a user