forked from 77media/video-flow
40 lines
950 B
TypeScript
40 lines
950 B
TypeScript
import { get, post } from './request'
|
|
import { ApiResponse } from './common'
|
|
|
|
/**
|
|
* 签到数据接口
|
|
*/
|
|
export interface CheckinData {
|
|
hasCheckedInToday: boolean
|
|
points: number
|
|
lastCheckinDate: string | null
|
|
pointsHistory: Array<{ date: string; points: number; expiryDate: string }>
|
|
}
|
|
|
|
/**
|
|
* 签到响应接口
|
|
*/
|
|
export interface CheckinResponse {
|
|
success: boolean
|
|
points: number
|
|
message: string
|
|
}
|
|
|
|
/**
|
|
* 获取用户签到状态和积分信息
|
|
* @returns Promise<CheckinData>
|
|
*/
|
|
export const getCheckinStatus = async (): Promise<CheckinData> => {
|
|
const response = await get<ApiResponse<CheckinData>>('/api/user/checkin/status')
|
|
return response.data
|
|
}
|
|
|
|
/**
|
|
* 执行签到操作
|
|
* @returns Promise<CheckinResponse>
|
|
*/
|
|
export const performCheckin = async (): Promise<CheckinResponse> => {
|
|
const response = await post<ApiResponse<CheckinResponse>>('/api/user/checkin', {})
|
|
return response.data
|
|
}
|