154 lines
4.8 KiB
TypeScript
154 lines
4.8 KiB
TypeScript
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[]; // 通告列表
|
||
}
|