整改API接口错误码的返回

This commit is contained in:
Sun 2024-01-15 15:09:53 +08:00
parent 0e414cabf4
commit cc62f3cb60
9 changed files with 104 additions and 215 deletions

View File

@ -1,191 +1,5 @@
import type { AxiosProgressEvent, GenericAbortSignal } from 'axios'
import { post } from '@/utils/request'
export function fetchChatAPI<T = any>(
prompt: string,
options?: { conversationId?: string; parentMessageId?: string },
signal?: GenericAbortSignal,
) {
return post<T>({
url: '/chat',
data: { prompt, options },
signal,
})
}
export function fetchChatConfig<T = any>() {
return post<T>({
url: '/config',
})
}
export function fetchChatAPIProcess<T = any>(
params: {
aiChatDialogId: number
prompt: string
options?: { conversationId?: string; parentMessageId?: string }
signal?: GenericAbortSignal
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void },
) {
// const settingStore = useSettingStore()
// const authStore = useAuthStore()
const data: Record<string, any> = {
prompt: params.prompt,
options: params.options,
aiChatDialogId: params.aiChatDialogId,
}
// if (authStore.isChatGPTAPI) {
// data = {
// ...data,
// systemMessage: settingStore.systemMessage,
// temperature: settingStore.temperature,
// top_p: settingStore.top_p,
// }
// }
return post<T>({
url: '/chatGpt/chatCompletion',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
export function againFetchChatAPIProcess<T = any>(
params: {
aiChatDialogId: number
prompt?: string
options?: { conversationId?: string; parentMessageId?: string }
signal?: GenericAbortSignal
id?: number // 记录id
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void },
) {
const data: Record<string, any> = {
prompt: params.prompt,
options: params.options,
aiChatDialogId: params.aiChatDialogId,
id: params.id,
}
return post<T>({
url: '/chatGpt/againChatCompletion',
data,
signal: params.signal,
onDownloadProgress: params.onDownloadProgress,
})
}
export function fetchSession<T>() {
return post<T>({
url: '/chatGpt/session',
})
}
export function fetchVerify<T>(token: string) {
return post<T>({
url: '/verify',
data: { token },
})
}
// 获取对话列表
export function chatDialogGetList<T>(page: number, limit: number, keyword?: string) {
return post<T>({
url: '/aiChatDialog/getList',
data: { page, limit, keyword },
})
}
// 新建对话
export function chatDialogAdd<T>(title: string, aiRoleId: number) {
return post<T>({
url: '/aiChatDialog/add',
data: { title, aiRoleId },
})
}
// 修改
export function chatDialogUpdate<T>(aiChatDialogId: number, title: string) {
return post<T>({
url: '/aiChatDialog/update',
data: { aiChatDialogId, title },
})
}
// 删除对话
export function chatDialogDelete<T>(aiChatDialogId: number) {
return post<T>({
url: '/aiChatDialog/delete',
data: { aiChatDialogId },
})
}
export function chatDialogGetInfo<T>(aiChatDialogId: number) {
return post<T>({
url: '/aiChatDialog/getInfo',
data: { aiChatDialogId },
})
}
// 获取某对话框聊天记录
export function chatRecordGetList<T>(aiChatDialogId: number) {
return post<T>({
url: '/aiChatRecord/getList',
data: { aiChatDialogId },
})
}
// export function chatRecordAddOne<T>(data: ChatRecord.AddOneRequest) {
// return post<T>({
// url: '/aiChatRecord/addOne',
// data,
// })
// }
export function chatRecordDelete<T>(aiChatDialogId: number, recordId: number) {
return post<T>({
url: '/aiChatRecord/delete',
data: { aiChatDialogId, id: recordId },
})
}
export function chatRoleGetSystemList<T>(data: Common.ListRequest) {
return post<T>({
url: '/aiChatRole/getSystemList',
data,
})
}
export function chatRoleGetMyCreateList<T>(data: Common.ListRequest) {
return post<T>({
url: '/aiChatRole/getMyCreateList',
data,
})
}
export function chatRoleGetInfo<T>(aiRoleId: number) {
return post<T>({
url: '/aiChatRole/getInfo',
data: { aiRoleId },
})
}
// export function chatRoleEdit<T>(roleInfo: ChatRole.RoleInfo) {
// return post<T>({
// url: '/aiChatRole/edit',
// data: roleInfo,
// })
// }
export function chatRoleEditDeletes<T>(aiRoleIds: number[]) {
return post<T>({
url: '/aiChatRole/deletes',
data: { aiRoleIds },
})
}
// 登录相关
export function login<T>(data: Login.LoginReqest) {

View File

@ -97,8 +97,6 @@ const createColumns = ({
setPublicVisitUser(row.id as number).then(({ code }) => {
if (code === 0)
publicVisitUserId.value = row.id as number
else if (code === 1111)
message.error('用户不存在,请刷新后再试')
})
}
break

View File

@ -19,6 +19,19 @@
"api": {
"loginExpires": "Login status has expired, please login again"
},
"apiErrorCode": {
"1000": "Not logged in",
"1003": "wrong user name or password",
"1004": "Account has been deactivated or inactivated",
"1005": "Currently no permission to operate",
"1006": "Account does not exist",
"1200": "database error",
"1201": "Please keep at least one",
"1202": "Data record not found",
"1300": "Upload failed",
"1301": "Unsupported file format",
"1400": "Parameter format error"
},
"appLauncher": {
"title": "System Applications & Settings"
},
@ -140,6 +153,7 @@
"inputPlaceholderByText": "Please enter {text}",
"language": "Language",
"leastOne": "Please keep at least one",
"networkError": "Network error, please try again later",
"nikeName": "Nickname",
"no": "No",
"noData": "No data available",

View File

@ -19,6 +19,19 @@
"api": {
"loginExpires": "登录状态已过期,请重新登录"
},
"apiErrorCode": {
"1000": "未登录",
"1003": "用户名或密码错误",
"1004": "账号已停用或未激活",
"1005": "当前无权限操作",
"1006": "账号不存在",
"1200": "数据库出错",
"1201": "请至少保留一个",
"1202": "未找到数据记录",
"1300": "上传失败",
"1301": "不被支持的文件格式",
"1400": "参数格式错误"
},
"appLauncher": {
"title": "系统应用 & 设置"
},
@ -140,6 +153,7 @@
"inputPlaceholderByText": "请输入{text}",
"language": "语言",
"leastOne": "请至少保留一项",
"networkError": "网络错误,请稍后重试",
"nikeName": "昵称",
"no": "否",
"noData": "暂无数据",

View File

@ -2,6 +2,7 @@ import { defineStore } from 'pinia'
import type { AppState, Language, Theme } from './helper'
import { defaultSetting, getLocalSetting, removeLocalState, setLocalSetting } from './helper'
import { store } from '@/store'
import { useTheme } from '@/hooks/useTheme'
export const useAppStore = defineStore('app-store', {
state: (): AppState => getLocalSetting(),
@ -23,6 +24,22 @@ export const useAppStore = defineStore('app-store', {
}
},
getTheme() {
const { theme } = useTheme()
return theme
// const appStore = useAppStore()
// console.log('主题', appStore.theme)
// if (appStore.theme === 'auto')
// return (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? darkTheme : lightTheme
// else if (appStore.theme === 'light')
// return lightTheme
// else
// return darkTheme
},
recordState() {
setLocalSetting(this.$state)
},

View File

@ -11,8 +11,7 @@ const noticeStore = useNoticeStore()
const userStore = useUserStore()
const authStore = useAuthStore()
const { notification } = createDiscreteApi(['notification'])
const { notification, message } = createDiscreteApi(['notification', 'message'])
/**
*
* @param format 'YYYY-MM-DD HH:mm:ss'

View File

@ -0,0 +1,31 @@
import type { ConfigProviderProps } from 'naive-ui'
import { createDiscreteApi, darkTheme, lightTheme, useOsTheme } from 'naive-ui'
import { computed, ref } from 'vue'
import type { Response } from './index'
import { t } from '@/locales'
import { useAppStore } from '@/store'
const themeRef = ref<'light' | 'dark'>('light')
const configProviderPropsRef = computed<ConfigProviderProps>(() => ({
theme: themeRef.value === 'light' ? lightTheme : darkTheme,
}))
const { message } = createDiscreteApi(['message'], { configProviderProps: configProviderPropsRef })
export function apiRespErrMsg(res: Response): boolean {
const appStore = useAppStore()
const osTheme = useOsTheme()
if (appStore.theme === 'auto')
themeRef.value = osTheme.value as 'dark' | 'light'
else
themeRef.value = appStore.theme as 'dark' | 'light'
const apiErrorCodeName = `apiErrorCode.${res.code}`
const getI18nValue = t(apiErrorCodeName)
if (apiErrorCodeName === getI18nValue) {
return false
}
else {
message.error(t(`apiErrorCode.${res.code}`))
return true
}
}

View File

@ -1,11 +1,10 @@
import type { AxiosProgressEvent, AxiosResponse, GenericAbortSignal } from 'axios'
import { createDiscreteApi } from 'naive-ui'
import request from './axios'
import { apiRespErrMsg } from './apiMessage'
import { t } from '@/locales'
import { useAppStore, useAuthStore } from '@/store'
import { router } from '@/router'
const { message } = createDiscreteApi(['message'])
let loginMessageShow = false
export interface HttpOption {
url: string
@ -32,7 +31,7 @@ function http<T = any>(
const authStore = useAuthStore()
const appStore = useAppStore()
const successHandler = (res: AxiosResponse<Response<T>>) => {
if (res.data.code === 0 || typeof res.data === 'string')
if (res.data.code === 0)
return res.data
if (res.data.code === 1001) {
@ -64,25 +63,24 @@ function http<T = any>(
}
if (res.data.code === -1) {
message.warning(res.data.msg)
// message.warning(res.data.msg)
// router.push({ path: '/login' })
// authStore.removeToken()
return res.data
}
// 验证码相关错误
if (res.data.code > 1100 && res.data.code < 1200)
if (!apiRespErrMsg(res.data))
return Promise.reject(res.data)
else
return res.data
return Promise.reject(res.data)
}
const failHandler = (error: Response<Error>) => {
afterRequest?.()
// message.error('网络错误,请稍后重试', {
// duration: 50000,
// closable: true,
// })
message.error(t('common.networkError'), {
duration: 50000,
closable: true,
})
throw new Error(error?.msg || 'Error')
}

View File

@ -19,8 +19,6 @@ const languageValue = ref<Language>(appStore.language)
// const isShowCaptcha = ref<boolean>(false)
// const isShowRegister = ref<boolean>(false)
const captchaRef = ref()
const form = ref<Login.LoginReqest>({
username: '',
password: '',
@ -28,21 +26,27 @@ const form = ref<Login.LoginReqest>({
const loginPost = async () => {
loading.value = true
const res = await login<Login.LoginResponse>(form.value)
try {
const res = await login<Login.LoginResponse>(form.value)
if (res.code === 0) {
authStore.setToken(res.data.token)
authStore.setUserInfo(res.data)
if (res.code === 0) {
authStore.setToken(res.data.token)
authStore.setUserInfo(res.data)
setTimeout(() => {
ms.success(`Hi ${res.data.name},${t('login.welcomeMessage')}`)
setTimeout(() => {
ms.success(`Hi ${res.data.name},${t('login.welcomeMessage')}`)
loading.value = false
router.push({ path: '/' })
}, 500)
}
else {
loading.value = false
router.push({ path: '/' })
}, 500)
// captchaRef.value.refresh()
}
}
else {
catch (error) {
loading.value = false
captchaRef.value.refresh()
//
console.log(error)
}
}