| 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 |