feat: 用户通过天梯登陆

This commit is contained in:
wangxuefeng 2025-03-07 10:06:58 +08:00
parent 0852dd98f0
commit 9d25cddcb3
3 changed files with 129 additions and 1 deletions

View File

@ -9,3 +9,102 @@ export const logout = async () => {
const response = await instance.post('/logout');
return response.data;
};
/**
*
*/
export interface UserInfo {
/** 用户ID */
UserID: number;
/** 用户名 */
Username: string;
/** 头像URL */
Avatar: string;
/** 用户别名/真实姓名 */
Alias: string;
/** 创建时间 */
CreatedAt: string;
/** 更新时间 */
UpdatedAt: string;
}
/**
*
*
* @returns {Promise<{code: number, data: UserInfo, message: string}>}
*
* @example
* ```typescript
* const userInfo = await getCurrentUser();
* console.log(userInfo.data.Username); // 输出当前用户名
* ```
*/
export const getCurrentUser = async () => {
const response = await instance.get('/api/v1/users/current');
return response.data;
};
/**
*
*
* @param {number|string} id ID
* @returns {Promise<{code: number, data: UserInfo, message: string}>}
*
* @example
* ```typescript
* // 获取ID为2594的用户信息
* const userInfo = await getUserById(2594);
* console.log(userInfo.data.Username); // 输出用户名
* ```
*/
export const getUserById = async (id: number | string) => {
const response = await instance.get(`/api/v1/users/${id}`);
return response.data;
};
/**
*
*/
export interface UserListItem {
/** 用户ID */
user_id: number;
/** 用户名 */
username: string;
/** 头像URL */
avatar: string;
/** 用户别名/真实姓名 */
alias: string;
/** 创建时间 */
created_at: string;
/** 更新时间 */
updated_at: string;
}
/**
*
*/
export interface UserListParams {
/** 页码默认1 */
page?: number | string;
/** 每页数量默认20 */
per_page?: number | string;
}
/**
*
*
* @param {UserListParams} params
* @returns {Promise<{code: number, data: {list: UserListItem[], total: number}, message: string}>}
*
* @example
* ```typescript
* // 获取第1页每页20条记录
* const result = await getUserList({ page: 1, per_page: 20 });
* console.log(`总用户数: ${result.data.total}`);
* console.log(`第一个用户: ${result.data.list[0].username}`);
* ```
*/
export const getUserList = async (params: UserListParams = {}) => {
const response = await instance.get('/api/v1/users', { params });
return response.data;
};

View File

@ -1,4 +1,6 @@
import type { RouteRecordRaw } from 'vue-router';
import { Y_CODE_RENDERER_URL } from '@/constants';
import { LOW_CODE_APPLICATION_ID, LOW_CODE_PROJECT_ID } from '@/constants/low-code';
const moduleName = 'user';
@ -12,6 +14,26 @@ const routes: Array<RouteRecordRaw> = [
icon: 'ant-design:user-outlined',
},
children: [
{
path: 'list',
name: `${moduleName}-list`,
meta: {
title: '项目列表',
keepAlive: true,
icon: 'ant-design:list',
app: {
url: Y_CODE_RENDERER_URL,
name: 'y-code-platform-project-list',
// sync: true,
// alive: true,
// degrade: true,
applicationId: LOW_CODE_APPLICATION_ID,
projectId: LOW_CODE_PROJECT_ID,
fileId: 'b91ra0ej4',
},
},
component: () => import('@/components/renderer-adapter/index.vue'),
},
{
path: 'login',
name: `${moduleName}-login`,

View File

@ -4,6 +4,7 @@ import { useSSEStore } from './sse';
import { store } from '@/store';
import { resetRouter } from '@/router';
import tianti from '@/io/tianti';
import { getCurrentUser } from '@/io/user';
export const useUserStore = defineStore(
'user',
@ -32,7 +33,13 @@ export const useUserStore = defineStore(
tianti.checkQuery();
setTimeout(() => {
const token = localStorage.getItem('y-code-access-token');
setToken(token || '');
if (token) {
setToken(token);
getCurrentUser().then((res) => {
userInfo.value = res.data.data;
console.log('userInfo', userInfo.value);
});
}
}, 0);
};
/** 登出 */