更新
This commit is contained in:
+44
-6
@@ -275,14 +275,52 @@ export function generateOrderQrcode(params: any) {
|
||||
|
||||
// ========== IM / 企业微信聊天记录 ==========
|
||||
|
||||
/** 腾讯云 IM 单聊漫游消息(诊单维度:患者 patient_* 与医生 doctor_*) */
|
||||
export function getImChatMessages(params: { diagnosis_id: number; only_archived?: 0 | 1 }) {
|
||||
return request.get({ url: '/tcm.diagnosis/getImChatMessages', params })
|
||||
export interface ImChatMessagesResponse {
|
||||
lists: any[]
|
||||
patient_im_id?: string
|
||||
patient_name?: string
|
||||
sync_error?: string
|
||||
}
|
||||
|
||||
/** 触发后台异步同步:从腾讯云 IM 拉取诊单聊天记录入归档表,请求即返回 */
|
||||
export function triggerImChatSync(data: { diagnosis_id: number }) {
|
||||
return request.post({ url: '/tcm.diagnosis/triggerImChatSync', data })
|
||||
export interface ImChatSyncProgress {
|
||||
sync_token?: string
|
||||
completed: boolean
|
||||
phase?: 'checking_accounts' | 'syncing' | 'completed'
|
||||
checked_accounts?: number
|
||||
candidate_accounts?: number
|
||||
skipped_accounts?: number
|
||||
inserted: number
|
||||
processed_peers: number
|
||||
total_peers: number
|
||||
error?: string
|
||||
errors?: string[]
|
||||
}
|
||||
|
||||
/** 保留接口错误原因,并由面板决定何时提示同步完成。 */
|
||||
function unwrapImChatResponse<T>(response: { code: number; data: T; msg?: string }): T {
|
||||
if (Number(response?.code) !== 1) {
|
||||
const detail = response?.data as any
|
||||
throw new Error(response?.msg || detail?.error || detail?.message || '聊天记录请求失败')
|
||||
}
|
||||
return response.data
|
||||
}
|
||||
|
||||
/** 当前患者所有诊单的 IM 归档消息。 */
|
||||
export async function getImChatMessages(params: { diagnosis_id: number; only_archived?: 0 | 1 }): Promise<ImChatMessagesResponse> {
|
||||
const response = await request.get(
|
||||
{ url: '/tcm.diagnosis/getImChatMessages', params, timeout: 30000 },
|
||||
{ isTransformResponse: false, ignoreCancelToken: true, isOpenRetry: false, retryCount: 0 }
|
||||
)
|
||||
return unwrapImChatResponse<ImChatMessagesResponse>(response)
|
||||
}
|
||||
|
||||
/** 同步一页云端消息,继续传入返回的 token,直到 completed 为 true。 */
|
||||
export async function triggerImChatSync(data: { diagnosis_id: number; sync_token?: string; scope?: 'current' }): Promise<ImChatSyncProgress> {
|
||||
const response = await request.post(
|
||||
{ url: '/tcm.diagnosis/triggerImChatSync', data, timeout: 30000 },
|
||||
{ isTransformResponse: false, ignoreCancelToken: true, isOpenRetry: false, retryCount: 0 }
|
||||
)
|
||||
return unwrapImChatResponse<ImChatSyncProgress>(response)
|
||||
}
|
||||
|
||||
// 获取企业微信聊天记录
|
||||
|
||||
Reference in New Issue
Block a user