user
Yann authored at 2025-07-01 13:49:14
4.51 KiB
cube-front
/**
 * API 服务示例
 * 展示如何使用新的响应处理工具
 */
import { request } from '@/core/utils/request';
import {
  createApiWrapper,
  createPageApiWrapper,
  type ApiResponse,
  type PageParams
} from '@/core/utils/response';

// 用户信息接口
export interface UserInfo {
  id: number;
  username: string;
  email: string;
  departmentName?: string;
  lastLoginAddress?: string;
}

// 用户列表查询参数
export interface UserListParams extends PageParams {
  keyword?: string;
  departmentId?: number;
  status?: number;
}

// 部门信息接口
export interface Department {
  id: number;
  name: string;
  parentId?: number;
}

/**
 * 获取用户信息
 */
export const getUserInfo = createApiWrapper(
  async (userId: number): Promise<ApiResponse<UserInfo>> => {
    const response = await request.get(`/Admin/User/${userId}`);
    return response.data;
  },
  {
    showSuccessMessage: false, // 查询操作通常不显示成功提示
    showErrorMessage: true,
  }
);

/**
 * 更新用户信息
 */
export const updateUserInfo = createApiWrapper(
  async (userId: number, data: Partial<UserInfo>): Promise<ApiResponse<UserInfo>> => {
    const response = await request.put(`/Admin/User/${userId}`, data);
    return response.data;
  },
  {
    showSuccessMessage: true, // 更新操作显示成功提示
    showErrorMessage: true,
    successMessage: '用户信息更新成功',
  }
);

/**
 * 删除用户
 */
export const deleteUser = createApiWrapper(
  async (userId: number): Promise<ApiResponse<boolean>> => {
    const response = await request.delete(`/Admin/User/${userId}`);
    return response.data;
  },
  {
    showSuccessMessage: true,
    showErrorMessage: true,
    successMessage: '用户删除成功',
  }
);

/**
 * 获取用户列表(分页)
 */
export const getUserList = createPageApiWrapper(
  async (params: UserListParams & Required<PageParams>): Promise<ApiResponse<UserInfo[]>> => {
    const response = await request.get('/Admin/User/List', { params });
    return response.data;
  },
  {
    showSuccessMessage: false,
    showErrorMessage: true,
  }
);

/**
 * 获取部门列表
 */
export const getDepartmentList = createApiWrapper(
  async (): Promise<ApiResponse<Department[]>> => {
    const response = await request.get('/Admin/Department/List');
    return response.data;
  },
  {
    showSuccessMessage: false,
    showErrorMessage: true,
  }
);

/**
 * 创建新用户
 */
export const createUser = createApiWrapper(
  async (userData: Omit<UserInfo, 'id'>): Promise<ApiResponse<UserInfo>> => {
    const response = await request.post('/Admin/User', userData);
    return response.data;
  },
  {
    showSuccessMessage: true,
    showErrorMessage: true,
    successMessage: '用户创建成功',
  }
);

/**
 * 批量删除用户
 */
export const batchDeleteUsers = createApiWrapper(
  async (userIds: number[]): Promise<ApiResponse<boolean>> => {
    const response = await request.post('/Admin/User/BatchDelete', { ids: userIds });
    return response.data;
  },
  {
    showSuccessMessage: true,
    showErrorMessage: true,
    successMessage: '批量删除成功',
  }
);

// 使用示例
export class UserService {
  /**
   * 加载用户列表
   */
  static async loadUserList(params: UserListParams = {}) {
    const result = await getUserList(params);

    if (result.success) {
      return {
        data: result.data || [],
        total: result.page?.totalCount || 0,
        pageIndex: result.page?.pageIndex || 1,
        pageSize: result.page?.pageSize || 10,
        stat: result.stat,
      };
    }

    return {
      data: [],
      total: 0,
      pageIndex: 1,
      pageSize: 10,
      stat: null,
    };
  }

  /**
   * 加载用户详情
   */
  static async loadUserDetail(userId: number) {
    const result = await getUserInfo(userId);
    return result.success ? result.data : null;
  }

  /**
   * 保存用户信息
   */
  static async saveUser(user: UserInfo) {
    if (user.id) {
      // 更新现有用户
      const result = await updateUserInfo(user.id, user);
      return result.success;
    } else {
      // 创建新用户
      const { id: _id, ...userData } = user;
      const result = await createUser(userData);
      return result.success ? result.data : null;
    }
  }

  /**
   * 删除用户
   */
  static async removeUser(userId: number) {
    const result = await deleteUser(userId);
    return result.success;
  }

  /**
   * 批量删除用户
   */
  static async removeUsers(userIds: number[]) {
    const result = await batchDeleteUsers(userIds);
    return result.success;
  }
}