import { http } from "@/utils/http"; const API_PREFIX = "/api"; export type EmployeeStatus = "ACTIVE" | "INACTIVE"; export type StoreStatus = "ACTIVE" | "INACTIVE"; export interface RoleSummary { id: number; code: string; name: string; } export interface Employee { id: number; storeId: number; storeName: string; name: string; phone: string; status: EmployeeStatus; remark: string | null; roles: RoleSummary[]; createdAt: string; updatedAt: string; } export interface StoreOption { id: number; name: string; address: string | null; phone: string | null; } export interface RoleOption { id: number; code: string; name: string; description: string | null; } export interface Store extends StoreOption { status: StoreStatus; createdAt: string; updatedAt: string; } export interface Role extends RoleOption { createdAt: string; updatedAt: string; } export interface EmployeeListParams { storeId?: number; status?: EmployeeStatus; keyword?: string; page: number; pageSize: number; } export interface StoreListParams { includeInactive?: boolean; } export interface StorePayload { name: string; address?: string | null; phone?: string | null; status: StoreStatus; } export interface RolePayload { code: string; name: string; description?: string | null; } export interface EmployeePayload { storeId: number; name: string; phone: string; status: EmployeeStatus; remark?: string | null; roleIds: number[]; } export interface ApiResult { success: boolean; data: T; } export interface Pagination { page: number; pageSize: number; total: number; totalPages: number; } export interface PaginatedData { items: T[]; pagination: Pagination; } export const listStores = (params?: StoreListParams) => { return http.request>("get", `${API_PREFIX}/stores`, { params }); }; export const listRoles = () => { return http.request>("get", `${API_PREFIX}/roles`); }; export const getStore = (id: number) => { return http.request>("get", `${API_PREFIX}/stores/${id}`); }; export const createStore = (data: StorePayload) => { return http.request>("post", `${API_PREFIX}/stores`, { data }); }; export const updateStore = (id: number, data: Partial) => { return http.request>("patch", `${API_PREFIX}/stores/${id}`, { data }); }; export const deleteStore = (id: number) => { return http.request("delete", `${API_PREFIX}/stores/${id}`); }; export const getRole = (id: number) => { return http.request>("get", `${API_PREFIX}/roles/${id}`); }; export const createRole = (data: RolePayload) => { return http.request>("post", `${API_PREFIX}/roles`, { data }); }; export const updateRole = (id: number, data: Partial) => { return http.request>("patch", `${API_PREFIX}/roles/${id}`, { data }); }; export const deleteRole = (id: number) => { return http.request("delete", `${API_PREFIX}/roles/${id}`); }; export const listEmployees = (params: EmployeeListParams) => { return http.request>>( "get", `${API_PREFIX}/employees`, { params } ); }; export const getEmployee = (id: number) => { return http.request>( "get", `${API_PREFIX}/employees/${id}` ); }; export const createEmployee = (data: EmployeePayload) => { return http.request>("post", `${API_PREFIX}/employees`, { data }); }; export const updateEmployee = (id: number, data: Partial) => { return http.request>( "patch", `${API_PREFIX}/employees/${id}`, { data } ); }; export const updateEmployeeStatus = (id: number, status: EmployeeStatus) => { return http.request>( "patch", `${API_PREFIX}/employees/${id}/status`, { data: { status } } ); }; export const deleteEmployee = (id: number) => { return http.request("delete", `${API_PREFIX}/employees/${id}`); };