135 lines
3.8 KiB
TypeScript
135 lines
3.8 KiB
TypeScript
import { EmployType } from '@/constants/job';
|
||
import { AnchorReadType, AnchorSortType, GenderType, ProfileCreateSource, WorkedYears } from '@/constants/material';
|
||
import { IPaginationRequest, IPaginationResponse } from '@/types/common';
|
||
|
||
export interface MaterialVideoInfo {
|
||
url: string;
|
||
coverUrl: string;
|
||
type: 'image' | 'video';
|
||
title: string;
|
||
isDefault: boolean;
|
||
}
|
||
|
||
export interface MaterialProfile {
|
||
materialVideoInfoList: MaterialVideoInfo[];
|
||
// 基础信息
|
||
id: string;
|
||
userId: string;
|
||
name: string;
|
||
age: number;
|
||
height: number; // cm
|
||
weight: number; // kg
|
||
gender: GenderType;
|
||
shoeSize: number; // 鞋码
|
||
// 求职意向
|
||
employType: EmployType; // 工作类型
|
||
fullTimeMinPrice: number; // 全职期望薪资下限
|
||
fullTimeMaxPrice: number; // 全职期望薪资上限
|
||
partyTimeMinPrice: number; // 兼职期望薪资下限
|
||
partyTimeMaxPrice: number; // 兼职期望薪资上限
|
||
cityCodes: string; // 城市。多个城市用 、分割,如 '110100、141100'
|
||
acceptWorkForSit: boolean; // 是否接受坐班
|
||
// 直播经验
|
||
workedYear: WorkedYears; // 工作年限,单位年,无为0、半年 0.5、1、2、3、4、5年及以上用100表示,默认为1年
|
||
workedAccounts: string; // 直播过的账号
|
||
newAccountExperience: number; // 是否有起号经验,0无 1有
|
||
workedCategory: string; // 直播过的品类
|
||
workedSecCategoryStr: string; // 直播过的二级品类
|
||
style: string; // 风格。多个分割用 、分割
|
||
maxGmv: number; // 最高 GMV,单位 w
|
||
maxOnline: number; // 最高在线人数
|
||
// 自身优势
|
||
advantages: string;
|
||
// 其他
|
||
approveStatus: boolean; // 审核状态:0 待审 ,1 成功 ,2 不通过
|
||
isOpen: boolean; // 是否开放 1开放 0不开放
|
||
userOpen: boolean;
|
||
adminOpen: boolean;
|
||
createType: ProfileCreateSource;
|
||
creator: string; // 创建人id
|
||
progressBar: number; // 进度百分比
|
||
filledItems: number; // 已填资料项数
|
||
created: number; // 时间戳
|
||
updated: number; // 时间戳
|
||
}
|
||
|
||
export interface AnchorInfo {
|
||
// 基础信息
|
||
materialVideoInfoList: MaterialVideoInfo[];
|
||
id: string;
|
||
userId: string;
|
||
cover: string;
|
||
name: string;
|
||
age: number;
|
||
height: number;
|
||
weight: number;
|
||
gender: GenderType;
|
||
shoeSize: number;
|
||
employType: EmployType;
|
||
fullTimeMinPrice: number;
|
||
fullTimeMaxPrice: number;
|
||
partyTimeMinPrice: number;
|
||
partyTimeMaxPrice: number;
|
||
cityCodes: string;
|
||
workedYear: WorkedYears;
|
||
workedCategory: string;
|
||
workedSecCategoryStr: string;
|
||
distance: number;
|
||
isRead: boolean;
|
||
lastOnlineTime: number;
|
||
updated: number;
|
||
created: number;
|
||
sortTime: number;
|
||
}
|
||
|
||
export interface GetVideoInfoRequest {
|
||
sourcePath: string;
|
||
type: 'VIDEO' | 'IMAGE';
|
||
}
|
||
|
||
export interface UploadVideoResult {
|
||
id: string;
|
||
url: string; // 视频地址
|
||
coverUrl: string; // 封面地址
|
||
}
|
||
|
||
export interface IAnchorFilters {
|
||
gender?: GenderType;
|
||
employType?: EmployType;
|
||
lowPriceForFullTime?: number;
|
||
highPriceForFullTime?: number;
|
||
lowPriceForPartyTime?: number;
|
||
highPriceForPartyTime?: number;
|
||
category?: string;
|
||
readType?: AnchorReadType;
|
||
}
|
||
|
||
export interface GetAnchorListRequest extends IAnchorFilters, IPaginationRequest {
|
||
// sortId?: string; // 排序 id,首次调用不传,分页时传上一页的最后记录的id
|
||
jobId?: string;
|
||
cityCode?: string;
|
||
sortType?: AnchorSortType; // 排序规则
|
||
latitude?: number; // 纬度,浮点数,范围为-90~90,负数表示南纬
|
||
longitude?: number; // 经度,范围为-180~180,负数表示西经
|
||
}
|
||
|
||
export interface GetAnchorListResponse extends IPaginationResponse {
|
||
data: AnchorInfo[];
|
||
}
|
||
|
||
export interface GetReadProfileRequest {
|
||
resumeId: string;
|
||
jobId?: string;
|
||
}
|
||
|
||
export interface GetShareProfileRequest {
|
||
shareCode: string;
|
||
resumeId: string;
|
||
}
|
||
|
||
export interface UpdateProfileStatusRequest {
|
||
resumeId: string;
|
||
userId: string;
|
||
userOpen: boolean;
|
||
}
|