Files
qitongxue-wx/src/api/user.ts

100 lines
2.4 KiB
TypeScript
Raw Normal View History

2026-09-17 14:39:15 +08:00
import { get, post, put } from '@/api/request'
export interface UserInfo {
id: number
nickname: string
avatar_url: string
}
export interface LevelInfo {
level_key: string
name: string
modules: string[]
}
export interface LoginResult {
token: string
user: UserInfo
level: LevelInfo
}
export interface ModuleOut {
module_key: string
name: string
icon: string
locked: boolean
enabled_tools_count: number
}
export interface ToolOut {
tool_key: string
module_key: string
name: string
icon: string
description: string
is_hot: boolean
locked: boolean
}
export interface ToolsListResult {
modules: ModuleOut[]
list: ToolOut[]
}
export function apiWxLogin(code: string) {
return post<LoginResult>('/user/wx-login', { code })
}
export function apiDevLogin() {
return post<LoginResult>('/user/dev-login')
}
/** H5 账号注册(注册即登录) */
export function apiRegister(username: string, password: string, nickname = '') {
return post<LoginResult>('/user/register', { username, password, nickname })
}
/** H5 账号密码登录 */
export function apiAccountLogin(username: string, password: string) {
return post<LoginResult>('/user/login', { username, password })
}
/** 把 H5 独立账号合并进当前登录账号(工作台随迁) */
export function apiBindAccount(username: string, password: string) {
return post<{ username: string }>('/user/bind-account', { username, password })
}
/** 更新个人信息(昵称 / 头像) */
export function apiUpdateProfile(nickname: string, avatarUrl: string) {
return put<{ nickname: string, avatar_url: string }>('/user/profile', { nickname, avatar_url: avatarUrl })
}
export function apiGetLevel() {
return get<LevelInfo>('/user/level')
}
/** 当前登录用户信息(token 校验后恢复 user) */
export function apiGetUserInfo() {
return get<UserInfo>('/user/info')
}
export function apiToolsList() {
return get<ToolsListResult>('/tools/list')
}
export function apiToolsUsed(toolKey: string) {
return post('/tools/used', { tool_key: toolKey })
}
export function apiWorkbenchGet() {
return get<{ tool_keys: string[] }>('/workbench/get')
}
export function apiWorkbenchSave(toolKeys: string[]) {
return post('/workbench/save', { tool_keys: toolKeys })
}
export function apiFeedbackSubmit(content: string, contact = '') {
return post('/feedback/submit', { content, contact })
}