返回 AiToEarn
task.ts
1 /*
2 * @Author: nevin
3 * @Date: 2025-03-01 19:27:35
4 * @LastEditTime: 2025-03-24 14:10:43
5 * @LastEditors: nevin
6 * @Description:
7 */
8 import { Task, TaskDataInfo, TaskType } from 'commont/types/task';
9 import { ApiCorrectQuery } from '.';
10 import { PlatType } from '@@/AccountEnum';
11
12 export enum UserTaskStatus {
13 DODING = 'doing', // 进行中
14 PENDING = 'pending', // 待审核
15 APPROVED = 'approved', // 已通过
16 REJECTED = 'rejected', // 已拒绝
17 COMPLETED = 'completed', // 已完成
18 CANCELLED = 'cancelled', // 已取消
19 // PENDING_REWARD = 'pending_reward', // 待发放奖励
20 REWARDED = 'rewarded', // 已发放奖励
21 }
22
23 export interface TaskListParams extends ApiCorrectQuery {
24 type?: TaskType;
25 keyword?: string;
26 productLevel?: string;
27 requiresShoppingCart?: boolean;
28 }
29
30 export interface MineTaskListParams extends ApiCorrectQuery {
31 type?: TaskType;
32 keyword?: string;
33 status?: UserTaskStatus;
34 }
35
36 export interface UserTask<T extends Task<TaskDataInfo> | string> {
37 _id: string;
38 id: string;
39 userId: string;
40 taskId: T;
41 status: UserTaskStatus;
42 submissionUrl?: string; // 提交的视频、文章或截图URL
43 screenshotUrls?: string[]; // 任务完成截图
44 qrCodeScanResult?: string; // 二维码扫描结果
45 submissionTime?: string; // 提交时间
46 completionTime?: string; // 完成时间
47 rejectionReason?: string; // 拒绝原因
48 metadata?: Record<string, any>; // 额外信息,如审核反馈等
49 isFirstTimeSubmission: boolean; // 是否首次提交,用于确定是否给予首次奖励
50 verificationNote?: string; // 人工核查备注
51 reward: number; // 佣金金额
52 rewardTime?: string; // 奖励发放时间
53 keyword?: string;
54 productLevel?: string;
55 verifiedBy?: string; // 核查人员ID
56 createTime: string;
57 updateTime: string;
58 }
59
60 export interface ApplyTask {
61 account: string;
62 uid: string;
63 accountType: PlatType;
64 taskMaterialId?: string; // 任务素材ID
65 }
66
67 export interface TaskArticleImg {
68 content: string;
69 imageUrl: string;
70 }
71
72 export interface TaskMaterial {
73 id: string;
74 taskId: string;
75 type: TaskType;
76 title?: string; // 标题
77 coverUrl?: string; // 封面图
78 temp?: string; // 模板字符
79 desc?: string;
80 imageList: TaskArticleImg[];
81 usedCount: number;
82 createTime: string;
83 updateTime: string;
84 }
85
85 lines TYPESCRIPT