Commit 589409305f58ebc2f6b110bd7b31f924ecd06c16

Authored by vben
1 parent 993538de

perf: adjust the return value of the interface to obtain user information in array format #259

CHANGELOG.zh_CN.md
@@ -6,6 +6,10 @@ @@ -6,6 +6,10 @@
6 - 升级 husky 到 5.0 6 - 升级 husky 到 5.0
7 - 新增 `brotli`|`gzip`压缩及相关测试命令 7 - 新增 `brotli`|`gzip`压缩及相关测试命令
8 8
  9 +### ⚡ Performance Improvements
  10 +
  11 +- 调整获取用户信息接口返回值为数组格式
  12 +
9 ### 🐛 Bug Fixes 13 ### 🐛 Bug Fixes
10 14
11 - 修复 Upload 组件 maxNumber 失效问题 15 - 修复 Upload 组件 maxNumber 失效问题
mock/sys/user.ts
@@ -10,10 +10,12 @@ function createFakeUserList() { @@ -10,10 +10,12 @@ function createFakeUserList() {
10 desc: 'manager', 10 desc: 'manager',
11 password: '123456', 11 password: '123456',
12 token: 'fakeToken1', 12 token: 'fakeToken1',
13 - role: {  
14 - roleName: 'Super Admin',  
15 - value: 'super',  
16 - }, 13 + roles: [
  14 + {
  15 + roleName: 'Super Admin',
  16 + value: 'super',
  17 + },
  18 + ],
17 }, 19 },
18 { 20 {
19 userId: '2', 21 userId: '2',
@@ -22,10 +24,12 @@ function createFakeUserList() { @@ -22,10 +24,12 @@ function createFakeUserList() {
22 realName: 'test user', 24 realName: 'test user',
23 desc: 'tester', 25 desc: 'tester',
24 token: 'fakeToken2', 26 token: 'fakeToken2',
25 - role: {  
26 - roleName: 'Tester',  
27 - value: 'test',  
28 - }, 27 + roles: [
  28 + {
  29 + roleName: 'Tester',
  30 + value: 'test',
  31 + },
  32 + ],
29 }, 33 },
30 ]; 34 ];
31 } 35 }
@@ -49,9 +53,9 @@ export default [ @@ -49,9 +53,9 @@ export default [
49 if (!checkUser) { 53 if (!checkUser) {
50 return resultError('Incorrect account or password!'); 54 return resultError('Incorrect account or password!');
51 } 55 }
52 - const { userId, username: _username, token, realName, desc, role } = checkUser; 56 + const { userId, username: _username, token, realName, desc, roles } = checkUser;
53 return resultSuccess({ 57 return resultSuccess({
54 - role, 58 + roles,
55 userId, 59 userId,
56 username: _username, 60 username: _username,
57 token, 61 token,
package.json
@@ -113,7 +113,8 @@ @@ -113,7 +113,8 @@
113 }, 113 },
114 "resolutions": { 114 "resolutions": {
115 "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it", 115 "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it",
116 - "bin-wrapper": "npm:bin-wrapper-china" 116 + "bin-wrapper": "npm:bin-wrapper-china",
  117 + "ecstatic": "4.1.4"
117 }, 118 },
118 "repository": { 119 "repository": {
119 "type": "git", 120 "type": "git",
src/api/sys/model/userModel.ts
@@ -31,7 +31,7 @@ export interface LoginResultModel { @@ -31,7 +31,7 @@ export interface LoginResultModel {
31 * @description: Get user information return value 31 * @description: Get user information return value
32 */ 32 */
33 export interface GetUserInfoByUserIdModel { 33 export interface GetUserInfoByUserIdModel {
34 - role: RoleInfo; 34 + roles: RoleInfo[];
35 // 用户id 35 // 用户id
36 userId: string | number; 36 userId: string | number;
37 // 用户名 37 // 用户名
src/store/modules/user.ts
@@ -113,8 +113,6 @@ class User extends VuexModule { @@ -113,8 +113,6 @@ class User extends VuexModule {
113 // get user info 113 // get user info
114 const userInfo = await this.getUserInfoAction({ userId }); 114 const userInfo = await this.getUserInfoAction({ userId });
115 115
116 - // const name = FULL_PAGE_NOT_FOUND_ROUTE.name;  
117 - // name && router.removeRoute(name);  
118 goHome && (await router.replace(PageEnum.BASE_HOME)); 116 goHome && (await router.replace(PageEnum.BASE_HOME));
119 return userInfo; 117 return userInfo;
120 } catch (error) { 118 } catch (error) {
@@ -125,8 +123,8 @@ class User extends VuexModule { @@ -125,8 +123,8 @@ class User extends VuexModule {
125 @Action 123 @Action
126 async getUserInfoAction({ userId }: GetUserInfoByUserIdParams) { 124 async getUserInfoAction({ userId }: GetUserInfoByUserIdParams) {
127 const userInfo = await getUserInfoById({ userId }); 125 const userInfo = await getUserInfoById({ userId });
128 - const { role } = userInfo;  
129 - const roleList = [role.value] as RoleEnum[]; 126 + const { roles } = userInfo;
  127 + const roleList = roles.map((item) => item.value) as RoleEnum[];
130 this.commitUserInfoState(userInfo); 128 this.commitUserInfoState(userInfo);
131 this.commitRoleListState(roleList); 129 this.commitRoleListState(roleList);
132 return userInfo; 130 return userInfo;
src/utils/http/axios/Axios.ts
@@ -6,14 +6,13 @@ import { isFunction } from '/@/utils/is'; @@ -6,14 +6,13 @@ import { isFunction } from '/@/utils/is';
6 import { cloneDeep } from 'lodash-es'; 6 import { cloneDeep } from 'lodash-es';
7 7
8 import type { RequestOptions, CreateAxiosOptions, Result, UploadFileParams } from './types'; 8 import type { RequestOptions, CreateAxiosOptions, Result, UploadFileParams } from './types';
9 -// import { ContentTypeEnum } from '/@/enums/httpEnum';  
10 import { errorResult } from './const'; 9 import { errorResult } from './const';
11 import { ContentTypeEnum } from '/@/enums/httpEnum'; 10 import { ContentTypeEnum } from '/@/enums/httpEnum';
12 11
13 export * from './axiosTransform'; 12 export * from './axiosTransform';
14 13
15 /** 14 /**
16 - * @description: axios模块 15 + * @description: axios module
17 */ 16 */
18 export class VAxios { 17 export class VAxios {
19 private axiosInstance: AxiosInstance; 18 private axiosInstance: AxiosInstance;
@@ -26,7 +25,7 @@ export class VAxios { @@ -26,7 +25,7 @@ export class VAxios {
26 } 25 }
27 26
28 /** 27 /**
29 - * @description: 创建axios实例 28 + * @description: Create axios instance
30 */ 29 */
31 private createAxios(config: CreateAxiosOptions): void { 30 private createAxios(config: CreateAxiosOptions): void {
32 this.axiosInstance = axios.create(config); 31 this.axiosInstance = axios.create(config);
@@ -42,7 +41,7 @@ export class VAxios { @@ -42,7 +41,7 @@ export class VAxios {
42 } 41 }
43 42
44 /** 43 /**
45 - * @description: 重新配置axios 44 + * @description: Reconfigure axios
46 */ 45 */
47 configAxios(config: CreateAxiosOptions) { 46 configAxios(config: CreateAxiosOptions) {
48 if (!this.axiosInstance) { 47 if (!this.axiosInstance) {
@@ -52,7 +51,7 @@ export class VAxios { @@ -52,7 +51,7 @@ export class VAxios {
52 } 51 }
53 52
54 /** 53 /**
55 - * @description: 设置通用header 54 + * @description: Set general header
56 */ 55 */
57 setHeader(headers: any): void { 56 setHeader(headers: any): void {
58 if (!this.axiosInstance) { 57 if (!this.axiosInstance) {
@@ -62,7 +61,7 @@ export class VAxios { @@ -62,7 +61,7 @@ export class VAxios {
62 } 61 }
63 62
64 /** 63 /**
65 - * @description: 拦截器配置 64 + * @description: Interceptor configuration
66 */ 65 */
67 private setupInterceptors() { 66 private setupInterceptors() {
68 const transform = this.getTransform(); 67 const transform = this.getTransform();
@@ -78,7 +77,7 @@ export class VAxios { @@ -78,7 +77,7 @@ export class VAxios {
78 77
79 const axiosCanceler = new AxiosCanceler(); 78 const axiosCanceler = new AxiosCanceler();
80 79
81 - // 请求拦截器配置处理 80 + // Request interceptor configuration processing
82 this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => { 81 this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => {
83 // If cancel repeat request is turned on, then cancel repeat request is prohibited 82 // If cancel repeat request is turned on, then cancel repeat request is prohibited
84 const { 83 const {
@@ -91,12 +90,12 @@ export class VAxios { @@ -91,12 +90,12 @@ export class VAxios {
91 return config; 90 return config;
92 }, undefined); 91 }, undefined);
93 92
94 - // 请求拦截器错误捕获 93 + // Request interceptor error capture
95 requestInterceptorsCatch && 94 requestInterceptorsCatch &&
96 isFunction(requestInterceptorsCatch) && 95 isFunction(requestInterceptorsCatch) &&
97 this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch); 96 this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch);
98 97
99 - // 响应结果拦截器处理 98 + // Response result interceptor processing
100 this.axiosInstance.interceptors.response.use((res: AxiosResponse<any>) => { 99 this.axiosInstance.interceptors.response.use((res: AxiosResponse<any>) => {
101 res && axiosCanceler.removePending(res.config); 100 res && axiosCanceler.removePending(res.config);
102 if (responseInterceptors && isFunction(responseInterceptors)) { 101 if (responseInterceptors && isFunction(responseInterceptors)) {
@@ -105,14 +104,14 @@ export class VAxios { @@ -105,14 +104,14 @@ export class VAxios {
105 return res; 104 return res;
106 }, undefined); 105 }, undefined);
107 106
108 - // 响应结果拦截器错误捕获 107 + // Response result interceptor error capture
109 responseInterceptorsCatch && 108 responseInterceptorsCatch &&
110 isFunction(responseInterceptorsCatch) && 109 isFunction(responseInterceptorsCatch) &&
111 this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch); 110 this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch);
112 } 111 }
113 112
114 /** 113 /**
115 - * @description: 文件上传 114 + * @description: File Upload
116 */ 115 */
117 uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams) { 116 uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams) {
118 const formData = new window.FormData(); 117 const formData = new window.FormData();
@@ -145,9 +144,6 @@ export class VAxios { @@ -145,9 +144,6 @@ export class VAxios {
145 }); 144 });
146 } 145 }
147 146
148 - /**  
149 - * @description: 请求方法  
150 - */  
151 request<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> { 147 request<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
152 let conf: AxiosRequestConfig = cloneDeep(config); 148 let conf: AxiosRequestConfig = cloneDeep(config);
153 const transform = this.getTransform(); 149 const transform = this.getTransform();
src/utils/http/axios/checkStatus.ts
@@ -10,9 +10,9 @@ export function checkStatus(status: number, msg: string): void { @@ -10,9 +10,9 @@ export function checkStatus(status: number, msg: string): void {
10 case 400: 10 case 400:
11 error(`${msg}`); 11 error(`${msg}`);
12 break; 12 break;
13 - // 401: 未登录  
14 - // 未登录则跳转登录页面,并携带当前页面的路径  
15 - // 在登录成功后返回当前页面,这一步需要在登录页操作。 13 + // 401: Not logged in
  14 + // Jump to the login page if not logged in, and carry the path of the current page
  15 + // Return to the current page after successful login. This step needs to be operated on the login page.
16 case 401: 16 case 401:
17 error(t('sys.api.errMsg401')); 17 error(t('sys.api.errMsg401'));
18 userStore.loginOut(true); 18 userStore.loginOut(true);
yarn.lock
@@ -2807,6 +2807,11 @@ chardet@^0.7.0: @@ -2807,6 +2807,11 @@ chardet@^0.7.0:
2807 resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 2807 resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
2808 integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 2808 integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
2809 2809
  2810 +charset@^1.0.1:
  2811 + version "1.0.1"
  2812 + resolved "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz#8d59546c355be61049a8fa9164747793319852bd"
  2813 + integrity sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==
  2814 +
2810 chokidar@^3.5.1: 2815 chokidar@^3.5.1:
2811 version "3.5.1" 2816 version "3.5.1"
2812 resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 2817 resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
@@ -3811,15 +3816,17 @@ echarts@^4.9.0: @@ -3811,15 +3816,17 @@ echarts@^4.9.0:
3811 dependencies: 3816 dependencies:
3812 zrender "4.3.2" 3817 zrender "4.3.2"
3813 3818
3814 -ecstatic@^3.3.2:  
3815 - version "3.3.2"  
3816 - resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48"  
3817 - integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog== 3819 +ecstatic@4.1.4, ecstatic@^3.3.2:
  3820 + version "4.1.4"
  3821 + resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-4.1.4.tgz#86bf340dabe56c4d0c93d406ac36c040f68e1d79"
  3822 + integrity sha512-8E4ZLK4uRuB9pwywGpy/B9vcz4gCp6IY7u4cMbeCINr/fjb1v+0wf0Ae2XlfSnG8xZYnE4uaJBjFkYI0bqcIdw==
3818 dependencies: 3823 dependencies:
  3824 + charset "^1.0.1"
3819 he "^1.1.1" 3825 he "^1.1.1"
3820 - mime "^1.6.0" 3826 + mime "^2.4.1"
3821 minimist "^1.1.0" 3827 minimist "^1.1.0"
3822 - url-join "^2.0.5" 3828 + on-finished "^2.3.0"
  3829 + url-join "^4.0.0"
3823 3830
3824 ee-first@1.1.1: 3831 ee-first@1.1.1:
3825 version "1.1.1" 3832 version "1.1.1"
@@ -6416,11 +6423,16 @@ mime-types@~2.1.24: @@ -6416,11 +6423,16 @@ mime-types@~2.1.24:
6416 dependencies: 6423 dependencies:
6417 mime-db "1.45.0" 6424 mime-db "1.45.0"
6418 6425
6419 -mime@^1.4.1, mime@^1.6.0: 6426 +mime@^1.4.1:
6420 version "1.6.0" 6427 version "1.6.0"
6421 resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 6428 resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
6422 integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 6429 integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
6423 6430
  6431 +mime@^2.4.1:
  6432 + version "2.5.0"
  6433 + resolved "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1"
  6434 + integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==
  6435 +
6424 mimic-fn@^1.0.0: 6436 mimic-fn@^1.0.0:
6425 version "1.2.0" 6437 version "1.2.0"
6426 resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 6438 resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
@@ -6768,7 +6780,7 @@ omit.js@^2.0.0: @@ -6768,7 +6780,7 @@ omit.js@^2.0.0:
6768 resolved "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" 6780 resolved "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f"
6769 integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== 6781 integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==
6770 6782
6771 -on-finished@~2.3.0: 6783 +on-finished@^2.3.0, on-finished@~2.3.0:
6772 version "2.3.0" 6784 version "2.3.0"
6773 resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 6785 resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
6774 integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 6786 integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
@@ -9166,10 +9178,10 @@ urix@^0.1.0: @@ -9166,10 +9178,10 @@ urix@^0.1.0:
9166 resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 9178 resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
9167 integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 9179 integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
9168 9180
9169 -url-join@^2.0.5:  
9170 - version "2.0.5"  
9171 - resolved "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728"  
9172 - integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= 9181 +url-join@^4.0.0:
  9182 + version "4.0.1"
  9183 + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
  9184 + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
9173 9185
9174 url-parse-lax@^1.0.0: 9186 url-parse-lax@^1.0.0:
9175 version "1.0.0" 9187 version "1.0.0"