73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { api } from '@/api/index'
|
||
import type { TbGuestDTO } from '@/types/sys/guest'
|
||
import type { LoginParam, LoginDomain } from '@/types/auth/auth'
|
||
import type { ResultDomain, PageRequest } from '@/types'
|
||
|
||
/**
|
||
* 来客 API
|
||
* 通过 Gateway (8180) 访问 System Service
|
||
* 路由规则:/urban-lifeline/system/** → system-service
|
||
*/
|
||
export const guestAPI = {
|
||
baseUrl: '/urban-lifeline/system/guest',
|
||
|
||
/**
|
||
* 创建来客
|
||
*/
|
||
async createGuest(guest: TbGuestDTO): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.post<TbGuestDTO>(`${this.baseUrl}`, guest)
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 更新来客
|
||
*/
|
||
async updateGuest(guest: TbGuestDTO): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.put<TbGuestDTO>(`${this.baseUrl}`, guest)
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 删除来客
|
||
*/
|
||
async deleteGuest(userId: string): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.delete<TbGuestDTO>(`${this.baseUrl}`, { params: { userId } })
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 根据微信ID查询来客
|
||
*/
|
||
async selectGuestByWechat(wechatId: string): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.get<TbGuestDTO>(`${this.baseUrl}/wechat/${wechatId}`)
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 获取来客列表
|
||
*/
|
||
async listGuest(filter?: TbGuestDTO): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.get<TbGuestDTO>(`${this.baseUrl}/list`, { params: filter })
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 分页查询来客
|
||
*/
|
||
async pageGuest(pageRequest: PageRequest<TbGuestDTO>): Promise<ResultDomain<TbGuestDTO>> {
|
||
const response = await api.post<TbGuestDTO>(`${this.baseUrl}/page`, pageRequest)
|
||
return response.data
|
||
},
|
||
|
||
/**
|
||
* 微信小程序用户识别登录
|
||
* 优先尝试员工登录,失败则自动注册/查询来客
|
||
* @param loginParam 登录参数(wechatId或phone必填)
|
||
* @returns LoginDomain 包含用户信息和token
|
||
*/
|
||
async identify(loginParam: LoginParam): Promise<ResultDomain<LoginDomain>> {
|
||
const response = await api.post<LoginDomain>(`${this.baseUrl}/identify`, loginParam)
|
||
return response.data
|
||
}
|
||
}
|