207 lines
4.0 KiB
TypeScript
207 lines
4.0 KiB
TypeScript
/**
|
||
* API 示例代码
|
||
* 展示项目中 API 的编写规范和最佳实践
|
||
*/
|
||
|
||
import { http } from '@/http/http';
|
||
import type { PageParam, PageResult } from '@/api';
|
||
|
||
/**
|
||
* 用户相关类型定义
|
||
*/
|
||
export interface User {
|
||
/** 用户ID */
|
||
id: number;
|
||
/** 用户名 */
|
||
username: string;
|
||
/** 昵称 */
|
||
nickname: string;
|
||
/** 头像 */
|
||
avatar?: string;
|
||
/** 邮箱 */
|
||
email?: string;
|
||
/** 手机号 */
|
||
phone?: string;
|
||
/** 状态(0正常 1禁用) */
|
||
status: number;
|
||
/** 创建时间 */
|
||
createTime: string;
|
||
}
|
||
|
||
/**
|
||
* 用户搜索参数
|
||
*/
|
||
export interface UserParams extends PageParam {
|
||
/** 搜索关键词 */
|
||
keyword?: string;
|
||
/** 状态 */
|
||
status?: number;
|
||
/** 开始时间 */
|
||
startTime?: string;
|
||
/** 结束时间 */
|
||
endTime?: string;
|
||
}
|
||
|
||
/**
|
||
* 创建用户参数
|
||
*/
|
||
export interface CreateUserParams {
|
||
/** 用户名 */
|
||
username: string;
|
||
/** 密码 */
|
||
password: string;
|
||
/** 昵称 */
|
||
nickname: string;
|
||
/** 邮箱 */
|
||
email?: string;
|
||
/** 手机号 */
|
||
phone?: string;
|
||
}
|
||
|
||
/**
|
||
* 更新用户参数
|
||
*/
|
||
export interface UpdateUserParams extends Partial<CreateUserParams> {
|
||
/** 用户ID */
|
||
id: number;
|
||
/** 状态 */
|
||
status?: number;
|
||
}
|
||
|
||
/**
|
||
* 用户相关 API
|
||
*/
|
||
|
||
// ✅ 正确示例:获取用户列表(分页)
|
||
/**
|
||
* 获取用户列表
|
||
* @param params 搜索参数
|
||
* @param params.page 当前页码(默认1)
|
||
* @param params.size 每页数量(默认10)
|
||
* @param params.keyword 搜索关键词(可选)
|
||
* @param params.status 状态筛选(可选)
|
||
* @returns 用户列表
|
||
*/
|
||
export function getUserList(params?: UserParams) {
|
||
return http.get<PageResult<User[]>>('/api/users', params);
|
||
}
|
||
|
||
// ✅ 正确示例:获取用户详情
|
||
/**
|
||
* 获取用户详情
|
||
* @param id 用户ID
|
||
* @returns 用户详情
|
||
*/
|
||
export function getUserById(id: number) {
|
||
return http.get<User>(`/api/users/${id}`);
|
||
}
|
||
|
||
// ✅ 正确示例:创建用户
|
||
/**
|
||
* 创建用户
|
||
* @param data 用户信息
|
||
* @returns 创建结果
|
||
*/
|
||
export function createUser(data: CreateUserParams) {
|
||
return http.post<User>('/api/users', data);
|
||
}
|
||
|
||
// ✅ 正确示例:更新用户
|
||
/**
|
||
* 更新用户信息
|
||
* @param data 用户信息
|
||
* @returns 更新结果
|
||
*/
|
||
export function updateUser(data: UpdateUserParams) {
|
||
return http.put<User>(`/api/users/${data.id}`, data);
|
||
}
|
||
|
||
// ✅ 正确示例:删除用户
|
||
/**
|
||
* 删除用户
|
||
* @param id 用户ID
|
||
* @returns 删除结果
|
||
*/
|
||
export function deleteUser(id: number) {
|
||
return http.delete(`/api/users/${id}`);
|
||
}
|
||
|
||
// ✅ 正确示例:批量删除用户
|
||
/**
|
||
* 批量删除用户
|
||
* @param ids 用户ID列表
|
||
* @returns 删除结果
|
||
*/
|
||
export function batchDeleteUsers(ids: number[]) {
|
||
return http.post('/api/users/batch-delete', { ids });
|
||
}
|
||
|
||
// ✅ 正确示例:重置用户密码
|
||
/**
|
||
* 重置用户密码
|
||
* @param id 用户ID
|
||
* @returns 操作结果
|
||
*/
|
||
export function resetUserPassword(id: number) {
|
||
return http.post(`/api/users/${id}/reset-password`);
|
||
}
|
||
|
||
// ❌ 错误示例:没有中文注释
|
||
export function getUsers(params?: any) {
|
||
return http.get('/api/users', params);
|
||
}
|
||
|
||
// ❌ 错误示例:命名不规范
|
||
export function users_list() {
|
||
return http.get('/api/users');
|
||
}
|
||
|
||
// ❌ 错误示例:没有类型约束
|
||
export function createNewUser(data: any) {
|
||
return http.post('/api/users', data);
|
||
}
|
||
|
||
/**
|
||
* 其他业务模块 API 示例
|
||
*/
|
||
|
||
// 角色相关 API
|
||
export interface Role {
|
||
id: number;
|
||
name: string;
|
||
code: string;
|
||
description?: string;
|
||
status: number;
|
||
}
|
||
|
||
export function getRoleList() {
|
||
return http.get<Role[]>('/api/roles');
|
||
}
|
||
|
||
// 权限相关 API
|
||
export interface Permission {
|
||
id: number;
|
||
name: string;
|
||
code: string;
|
||
type: number;
|
||
parentId?: number;
|
||
}
|
||
|
||
export function getPermissionTree() {
|
||
return http.get<Permission[]>('/api/permissions/tree');
|
||
}
|
||
|
||
// 部门相关 API
|
||
export interface Department {
|
||
id: number;
|
||
name: string;
|
||
parentId?: number;
|
||
sort: number;
|
||
status: number;
|
||
children?: Department[];
|
||
}
|
||
|
||
export function getDepartmentTree() {
|
||
return http.get<Department[]>('/api/departments/tree');
|
||
}
|