feat: first commit
This commit is contained in:
153
src/types/job.ts
Normal file
153
src/types/job.ts
Normal file
@ -0,0 +1,153 @@
|
||||
import { JobType, EmployType, SortType, UserJobType, JobManageStatus } from '@/constants/job';
|
||||
import { DeclarationType } from '@/constants/product';
|
||||
import type { IPaginationRequest, IPaginationResponse } from '@/types/common';
|
||||
import { LocationInfo } from '@/types/location';
|
||||
|
||||
export interface JobInfo {
|
||||
id: string; // 通告ID
|
||||
title: string; // 通告标题
|
||||
tags: string[]; // 关键字
|
||||
employType: EmployType; // 工作类型 (全职/兼职/不限)
|
||||
salary: string; // 工资
|
||||
jobDescription: string; // 简述
|
||||
publisher: string; // 发布者
|
||||
publisherAvatar: string; // 发布者头像
|
||||
sourceText?: string; // 详细描述(原始信息)
|
||||
jobLocation: LocationInfo; // 地址信息
|
||||
distance?: number; // 距离。一期没有
|
||||
isAuthed?: boolean; // 是否认证
|
||||
companyName?: string;
|
||||
}
|
||||
|
||||
export interface CreateJobInfo extends Pick<JobInfo, 'title' | 'employType' | 'jobDescription'> {
|
||||
category: JobType;
|
||||
provinceCode: string;
|
||||
cityCode: string;
|
||||
countyCode: string;
|
||||
address: string;
|
||||
lowPriceForFullTime: number;
|
||||
highPriceForFullTime: number;
|
||||
lowPriceForPartyTime: number;
|
||||
highPriceForPartyTime: number;
|
||||
tags?: string[];
|
||||
responsibilities?: string;
|
||||
jobId?: string;
|
||||
}
|
||||
|
||||
// 通告详细信息接口
|
||||
export type JobDetails = JobInfo &
|
||||
CreateJobInfo & {
|
||||
imGroupId: string; // 来源于哪个群ID
|
||||
imGroupNick: string; // 群名称
|
||||
blGroupId: string; // 内部群 Id
|
||||
isGroupMember: string; // 是否是群成员
|
||||
isFollow: boolean; // 用户是否关注该群
|
||||
sourceText: string; // 详细描述(原始信息)
|
||||
created: number; // 更新时间
|
||||
updated: number; // 更新时间
|
||||
relateGroupCount?: number; // 关联群数量
|
||||
declarationType: DeclarationType; // 报单类型
|
||||
userId: string; // 发布人的 userId
|
||||
verifyFailReason?: string; // 审核不通过的原因
|
||||
};
|
||||
|
||||
export interface JobManageInfo {
|
||||
id: string;
|
||||
title: string;
|
||||
jobLocation: string;
|
||||
provinceCode: string;
|
||||
cityCode: string;
|
||||
countyCode: string;
|
||||
status: JobManageStatus;
|
||||
created: number;
|
||||
updated: number;
|
||||
}
|
||||
|
||||
// 获取通告分类响应接口
|
||||
export interface GetJobTypesResponse {
|
||||
types: JobType[]; // 通告分类列表
|
||||
}
|
||||
|
||||
// 获取通告列表请求接口
|
||||
export interface GetJobsRequest extends IPaginationRequest {
|
||||
category?: JobType; // 可选参数,通告类型,默认为全部类型
|
||||
cityCode?: string; // 可选参数,城市代码
|
||||
isFollow?: boolean; // 可选参数,是否查询用户关注的通告
|
||||
isOwner?: boolean; // 可选参数,是否查询用户创建的通告
|
||||
employType?: EmployType; // 可选,兼职/全职,默认 both
|
||||
keyWord?: string; // 可选参数,关键字搜索
|
||||
sortType?: SortType; // 排序规则
|
||||
latitude?: number; // 纬度,浮点数,范围为-90~90,负数表示南纬
|
||||
longitude?: number; // 经度,范围为-180~180,负数表示西经
|
||||
minSalary?: number;
|
||||
maxSalary?: number;
|
||||
blGroupId?: string; // 播络群 id
|
||||
}
|
||||
|
||||
// 获取通告列表响应接口
|
||||
export interface GetJobsResponse extends IPaginationResponse {
|
||||
jobResults: JobInfo[]; // 通告列表
|
||||
}
|
||||
|
||||
// 获取通告详情请求接口
|
||||
export interface GetJobsDetailsRequest {
|
||||
jobId: string; // 通告ID
|
||||
latitude?: number; // 用户当前位置的纬度,浮点数,范围为-90~90,负数表示南纬。一期没有
|
||||
longitude?: number; // 用户当前位置的经度,范围为-180~180,负数表示西经。一期没有
|
||||
}
|
||||
|
||||
export interface SalaryRange {
|
||||
minSalary: number;
|
||||
maxSalary: number;
|
||||
}
|
||||
|
||||
export interface MyBrowsedJobInfo extends JobInfo {
|
||||
browseId: string;
|
||||
browDate: string;
|
||||
browTime: string;
|
||||
}
|
||||
|
||||
export interface MyDeclaredJobInfo extends JobInfo {
|
||||
declaredId: string;
|
||||
/**
|
||||
* 报单类型
|
||||
* 0 用户自行报单获取微信号
|
||||
* 1 用户联系客服
|
||||
*/
|
||||
type: number;
|
||||
// 解锁时间 yyyy-MM-dd
|
||||
useDate: string;
|
||||
// 报单时间
|
||||
declarationDate: string;
|
||||
// 报单处理状态
|
||||
declaredStatus: number;
|
||||
// 报单处理时间
|
||||
declaredDate: string;
|
||||
// 备注
|
||||
declaredMark?: string;
|
||||
}
|
||||
|
||||
export interface GetUserJobRequest extends IPaginationRequest {
|
||||
type: UserJobType; // 类型:0 为我的报单记录, 1 为我的通告浏览记录
|
||||
keyWord?: string; // 可选参数,关键字搜索
|
||||
}
|
||||
|
||||
export interface GetUserJobResponse<T extends JobInfo> {
|
||||
page: number; // 当前页码
|
||||
pageSize: number; // 每页的通告数量
|
||||
hasMore: boolean; // 是否有更多数据
|
||||
data: {
|
||||
[key in string]: T[]; // key 为日期, value 为通告列表
|
||||
};
|
||||
dataMap: Map<string, T[]>; // 前端获取到接口数据后将 data 转成 Map 结构
|
||||
}
|
||||
|
||||
export interface GetMyRecommendJobRequest extends IPaginationRequest {}
|
||||
|
||||
export interface GetJobManagesRequest extends IPaginationRequest {
|
||||
status?: JobManageStatus;
|
||||
}
|
||||
|
||||
export interface GetJobManagesResponse extends IPaginationResponse {
|
||||
jobResults: JobManageInfo[]; // 通告列表
|
||||
}
|
Reference in New Issue
Block a user