Files
qitongxue-wx/src/api/user.ts
2026-09-17 14:39:15 +08:00

100 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 })
}