Adapt to fatweb-api #29

Merged
FatttSnake merged 1 commits from FatttSnake into dev 2023-10-10 16:39:15 +08:00
5 changed files with 66 additions and 93 deletions

View File

@@ -11,36 +11,27 @@ const SIZE_ICON_MD = '24px'
const SIZE_ICON_LG = '32px'
const SIZE_ICON_XL = '64px'
// Response Code
const SYSTEM_OK = 20000
const LOGIN_SUCCESS = 20010
const LOGIN_USERNAME_PASSWORD_ERROR = 20011
const OLD_PASSWORD_NOT_MATCH = 20012
const LOGOUT_SUCCESS = 20015
const LOGOUT_FAILED = 20016
const TOKEN_IS_ILLEGAL = 20017
const TOKEN_HAS_EXPIRED = 20018
const TOKEN_RENEW_SUCCESS = 20019
const DATABASE_SELECT_OK = 20021
const DATABASE_SAVE_OK = 20022
const DATABASE_UPDATE_OK = 20023
const DATABASE_DELETE_OK = 20024
const DATABASE_SELECT_ERROR = 20031
const DATABASE_SAVE_ERROR = 20032
const DATABASE_UPDATE_ERROR = 20033
const DATABASE_DELETE_ERROR = 20034
const DATABASE_TIMEOUT_ERROR = 20035
const DATABASE_CONNECT_ERROR = 20036
const DATABASE_DATA_TO_LONG = 20037
const DATABASE_DATA_VALIDATION_FAILED = 20038
const DATABASE_EXECUTE_ERROR = 20039
const UNAUTHORIZED = 30010
const ACCESS_DENIED = 30030
const USER_DISABLE = 30031
const SYSTEM_ERROR = 50001
const SYSTEM_TIMEOUT = 50002
/**
* Response code
*/
const SYSTEM_OK = 10000
const SYSTEM_LOGIN_SUCCESS = 10020
const SYSTEM_PASSWORD_CHANGE_SUCCESS = 10021
const SYSTEM_LOGOUT_SUCCESS = 10022
const SYSTEM_TOKEN_RENEW_SUCCESS = 10023
const SYSTEM_UNAUTHORIZED = 10030
const SYSTEM_USERNAME_NOT_FOUND = 10031
const SYSTEM_ACCESS_DENIED = 10032
const SYSTEM_USER_DISABLE = 10033
const SYSTEM_LOGIN_USERNAME_PASSWORD_ERROR = 10034
const SYSTEM_OLD_PASSWORD_NOT_MATCH = 10035
const SYSTEM_LOGOUT_FAILED = 10036
const SYSTEM_TOKEN_ILLEGAL = 10037
const SYSTEM_TOKEN_HAS_EXPIRED = 10038
const SYSTEM_REQUEST_ILLEGAL = 10040
const SYSTEM_ARGUMENT_NOT_VALID = 10041
const SYSTEM_ERROR = 10050
const SYSTEM_TIMEOUT = 10051
export {
PRODUCTION_NAME,
@@ -56,30 +47,21 @@ export {
SIZE_ICON_LG,
SIZE_ICON_XL,
SYSTEM_OK,
LOGIN_SUCCESS,
LOGIN_USERNAME_PASSWORD_ERROR,
OLD_PASSWORD_NOT_MATCH,
LOGOUT_SUCCESS,
LOGOUT_FAILED,
TOKEN_IS_ILLEGAL,
TOKEN_HAS_EXPIRED,
TOKEN_RENEW_SUCCESS,
DATABASE_SELECT_OK,
DATABASE_SAVE_OK,
DATABASE_UPDATE_OK,
DATABASE_DELETE_OK,
DATABASE_SELECT_ERROR,
DATABASE_SAVE_ERROR,
DATABASE_UPDATE_ERROR,
DATABASE_DELETE_ERROR,
DATABASE_TIMEOUT_ERROR,
DATABASE_CONNECT_ERROR,
DATABASE_DATA_TO_LONG,
DATABASE_DATA_VALIDATION_FAILED,
DATABASE_EXECUTE_ERROR,
UNAUTHORIZED,
ACCESS_DENIED,
USER_DISABLE,
SYSTEM_LOGIN_SUCCESS,
SYSTEM_PASSWORD_CHANGE_SUCCESS,
SYSTEM_LOGOUT_SUCCESS,
SYSTEM_TOKEN_RENEW_SUCCESS,
SYSTEM_UNAUTHORIZED,
SYSTEM_USERNAME_NOT_FOUND,
SYSTEM_ACCESS_DENIED,
SYSTEM_USER_DISABLE,
SYSTEM_LOGIN_USERNAME_PASSWORD_ERROR,
SYSTEM_OLD_PASSWORD_NOT_MATCH,
SYSTEM_LOGOUT_FAILED,
SYSTEM_TOKEN_ILLEGAL,
SYSTEM_TOKEN_HAS_EXPIRED,
SYSTEM_REQUEST_ILLEGAL,
SYSTEM_ARGUMENT_NOT_VALID,
SYSTEM_ERROR,
SYSTEM_TIMEOUT
}

View File

@@ -1,6 +1,11 @@
import React from 'react'
import { login } from '@/utils/auth.ts'
import { LOGIN_SUCCESS, LOGIN_USERNAME_PASSWORD_ERROR } from '@/constants/Common.constants.ts'
import {
SYSTEM_LOGIN_SUCCESS,
SYSTEM_LOGIN_USERNAME_PASSWORD_ERROR,
SYSTEM_USER_DISABLE,
SYSTEM_USERNAME_NOT_FOUND
} from '@/constants/Common.constants.ts'
import { setToken } from '@/utils/common.ts'
import '@/assets/css/pages/login.scss'
@@ -15,14 +20,15 @@ const Login: React.FC = () => {
const res = value.data
const { code, data } = res
switch (code) {
case LOGIN_SUCCESS:
case SYSTEM_LOGIN_SUCCESS:
setToken(data?.token ?? '')
void messageApi.success('登录成功')
setTimeout(() => {
navigate('/')
}, 1500)
break
case LOGIN_USERNAME_PASSWORD_ERROR:
case SYSTEM_USERNAME_NOT_FOUND:
case SYSTEM_LOGIN_USERNAME_PASSWORD_ERROR:
void messageApi.error(
<>
<strong></strong><strong></strong>
@@ -30,6 +36,14 @@ const Login: React.FC = () => {
)
setIsLoggingIn(false)
break
case SYSTEM_USER_DISABLE:
void messageApi.error(
<>
<strong></strong>
</>
)
setIsLoggingIn(false)
break
default:
void messageApi.error(
<>

View File

@@ -2,14 +2,11 @@ import axios, { type AxiosError, AxiosInstance, AxiosRequestConfig, AxiosRespons
import jwtDecode, { JwtPayload } from 'jwt-decode'
import { clearLocalStorage, getToken, setToken } from '@/utils/common'
import {
ACCESS_DENIED,
DATABASE_DATA_TO_LONG,
DATABASE_DATA_VALIDATION_FAILED,
DATABASE_EXECUTE_ERROR,
TOKEN_HAS_EXPIRED,
TOKEN_IS_ILLEGAL,
TOKEN_RENEW_SUCCESS,
UNAUTHORIZED
SYSTEM_ACCESS_DENIED,
SYSTEM_TOKEN_HAS_EXPIRED,
SYSTEM_TOKEN_ILLEGAL,
SYSTEM_TOKEN_RENEW_SUCCESS,
SYSTEM_UNAUTHORIZED
} from '@/constants/Common.constants'
import { message } from 'antd'
@@ -49,7 +46,7 @@ service.interceptors.request.use(
})
.then((value: AxiosResponse<_Response<Token>>) => {
const response = value.data
if (response.code === TOKEN_RENEW_SUCCESS) {
if (response.code === SYSTEM_TOKEN_RENEW_SUCCESS) {
setToken(response.data?.token ?? '')
}
})
@@ -68,9 +65,9 @@ service.interceptors.request.use(
service.interceptors.response.use(
(response: AxiosResponse<_Response<never>>) => {
switch (response.data.code) {
case UNAUTHORIZED:
case TOKEN_IS_ILLEGAL:
case TOKEN_HAS_EXPIRED:
case SYSTEM_UNAUTHORIZED:
case SYSTEM_TOKEN_ILLEGAL:
case SYSTEM_TOKEN_HAS_EXPIRED:
clearLocalStorage()
void message.error(
<>
@@ -81,34 +78,13 @@ service.interceptors.response.use(
location.reload()
}, 1500)
throw response?.data
case ACCESS_DENIED:
case SYSTEM_ACCESS_DENIED:
void message.error(
<>
<strong></strong>
</>
)
throw response?.data
case DATABASE_DATA_TO_LONG:
void message.error(
<>
<strong></strong>
</>
)
throw response?.data
case DATABASE_DATA_VALIDATION_FAILED:
void message.error(
<>
<strong></strong>
</>
)
throw response?.data
case DATABASE_EXECUTE_ERROR:
void message.error(
<>
<strong></strong>
</>
)
throw response?.data
}
return response
},

View File

@@ -1,5 +1,5 @@
import { clearLocalStorage, getCaptcha, getLocalStorage, setLocalStorage } from './common'
import { DATABASE_SELECT_OK, TOKEN_NAME } from '@/constants/Common.constants'
import { SYSTEM_OK, TOKEN_NAME } from '@/constants/Common.constants'
import request from '@/services'
let captcha: Captcha
@@ -35,7 +35,7 @@ export async function requestUser(): Promise<User> {
await request.get<User>('/user/info').then((value) => {
const response = value.data
if (response.code === DATABASE_SELECT_OK) {
if (response.code === SYSTEM_OK) {
user = response.data
setLocalStorage('userInfo', JSON.stringify(user))
}

1
src/vite-env.d.ts vendored
View File

@@ -17,6 +17,7 @@ type RouteHandle = {
type _Response<T> = {
code: number
success: boolean
msg: string
data: T | null
}