import { axios } from "timi-web-api"; import type { LoginResponse, Page, PageResult, Role } from "timi-web-api"; import type { ManagedUser } from "@/types/ManagedUser"; import { withCurrentStoreId, withCurrentStorePage } from "@/utils/store"; const BASE_URI = "/gao/user"; type ListOptions = { allStores?: boolean; storeId?: string; }; export type InviteRequest = { storeId?: string; roleId: string; }; export type InviteResult = { code: string; expireAt: number; }; export type InviteValidateResult = { valid: boolean; expireAt: number; }; export type InviteRegisterData = { code: string; phoneNo: string; name: string; password: string; }; export type InviteRegisterRequest = { detailId: string; captcha: string; data: InviteRegisterData; }; async function list(page: Page, options?: ListOptions): Promise> { if (options?.allStores) { return await axios.post(`${BASE_URI}/list`, page); } if (options?.storeId) { return await axios.post(`${BASE_URI}/list`, { ...page, equalsExample: { ...(page.equalsExample || {}), storeId: options.storeId } }); } return await axios.post(`${BASE_URI}/list`, withCurrentStorePage(page)); } async function detail(id: string): Promise { return await axios.post(`${BASE_URI}/detail`, undefined, { params: { id } }); } async function create(user: ManagedUser): Promise { return await axios.post(`${BASE_URI}/create`, withCurrentStoreId(user)); } async function update(user: ManagedUser): Promise { return await axios.post(`${BASE_URI}/update`, withCurrentStoreId(user)); } async function transferStore(user: ManagedUser): Promise { return await axios.post(`${BASE_URI}/transfer/store`, user); } async function remove(id: string): Promise { return await axios.post(`${BASE_URI}/delete`, undefined, { params: { id } }); } async function roleList(): Promise { return await axios.post(`${BASE_URI}/role/list`); } async function invite(request: InviteRequest): Promise { return await axios.post(`${BASE_URI}/invite`, request); } async function validateInvite(code: string): Promise { return await axios.post(`${BASE_URI}/invite/validate`, { code }); } async function registerByInvite(request: InviteRegisterRequest): Promise { return await axios.post(`${BASE_URI}/invite/register`, request); } export default { list, detail, create, update, transferStore, remove, roleList, invite, validateInvite, registerByInvite };