import { getServiceUrl } from '../api';
|
import RequestService from '../httpRequest';
|
|
const CALLBACK_RETRY_LIMIT = 10;
|
const CALLBACK_RETRY_DELAY_MS = 2000;
|
const CALLBACK_RETRY_WINDOW_MS = CALLBACK_RETRY_LIMIT * CALLBACK_RETRY_DELAY_MS;
|
|
function retryCallbackRequest(retry, retryCount, onTerminalFailure, error, retryStartedAt) {
|
if (!onTerminalFailure) {
|
RequestService.reAjaxFun(() => retry(retryCount + 1))
|
return
|
}
|
const startedAt = retryStartedAt || Date.now()
|
if (retryCount >= CALLBACK_RETRY_LIMIT || Date.now() - startedAt >= CALLBACK_RETRY_WINDOW_MS) {
|
RequestService.clearRequestTime()
|
if (onTerminalFailure) {
|
onTerminalFailure(error)
|
}
|
return
|
}
|
setTimeout(() => retry(retryCount + 1, startedAt), CALLBACK_RETRY_DELAY_MS)
|
}
|
|
|
export default {
|
// 获取替换词文件列表
|
getFileList(params, callback) {
|
const queryParams = new URLSearchParams({
|
page: params.page,
|
limit: params.pageSize
|
}).toString();
|
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/list?${queryParams}`)
|
.method('GET')
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.networkFail((err) => {
|
console.error('获取替换词文件列表失败:', err)
|
RequestService.reAjaxFun(() => {
|
this.getFileList(params, callback)
|
})
|
}).send()
|
},
|
|
// 获取所有替换词文件(不分页)
|
selectAll(callback, onTerminalFailure, retryCount = 0, retryStartedAt = 0) {
|
const retryWindowStartedAt = retryStartedAt || Date.now()
|
const request = RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/select`)
|
.method('GET')
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.networkFail((err) => {
|
console.error('获取所有替换词文件失败:', err)
|
retryCallbackRequest(
|
(nextRetryCount, nextRetryStartedAt) => this.selectAll(
|
callback,
|
onTerminalFailure,
|
nextRetryCount,
|
nextRetryStartedAt
|
),
|
retryCount,
|
onTerminalFailure,
|
err,
|
retryWindowStartedAt
|
)
|
})
|
if (onTerminalFailure) {
|
request.fail((error) => {
|
RequestService.clearRequestTime()
|
onTerminalFailure(error)
|
})
|
}
|
request.send()
|
},
|
|
// 下载替换词文件
|
downloadFile(id, callback) {
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/download/${id}`)
|
.method('GET')
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.fail((err) => {
|
RequestService.clearRequestTime()
|
callback(err)
|
}).send()
|
},
|
|
// 新增替换词文件
|
addFile(data, callback) {
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file`)
|
.method('POST')
|
.data(data)
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.fail((err) => {
|
RequestService.clearRequestTime()
|
callback(err)
|
}).send()
|
},
|
|
// 更新替换词文件
|
updateFile(data, callback) {
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/${data.id}`)
|
.method('PUT')
|
.data({
|
fileName: data.fileName,
|
content: data.content
|
})
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.fail((err) => {
|
RequestService.clearRequestTime()
|
callback(err)
|
}).send()
|
},
|
|
// 删除替换词文件
|
deleteFile(id, callback) {
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/${id}`)
|
.method('DELETE')
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.networkFail((err) => {
|
console.error('删除替换词文件失败:', err)
|
RequestService.reAjaxFun(() => {
|
this.deleteFile(id, callback)
|
})
|
}).send()
|
},
|
|
// 批量删除替换词文件
|
batchDeleteFile(ids, callback) {
|
RequestService.sendRequest()
|
.url(`${getServiceUrl()}/correct-word/file/batch-delete`)
|
.method('POST')
|
.data(ids)
|
.success((res) => {
|
RequestService.clearRequestTime()
|
callback(res)
|
})
|
.networkFail((err) => {
|
console.error('批量删除替换词文件失败:', err)
|
RequestService.reAjaxFun(() => {
|
this.batchDeleteFile(ids, callback)
|
})
|
}).send()
|
}
|
}
|