## 修复内容 ### 依赖修复 - 安装缺失的 `prettier-plugin-organize-imports` 插件 - 修复 CI/CD 中的 "Cannot find package" 错误 - 更新 package.json 和 bun.lockb ### 代码格式化 - 对所有源文件运行 Prettier 自动格式化 - 统一 import 语句排序和组织 - 修复 49 个文件的代码风格问题 - 确保所有文件符合项目代码规范 ### 格式化改进 - Import 语句自动排序和分组 - 统一缩进和空格规范 - 标准化引号和分号使用 - 优化对象和数组格式 ## 验证结果 ✅ `bun run format` 通过 - 所有文件格式正确 ✅ `prettier-plugin-organize-imports` 正常工作 ✅ CI/CD 格式检查将通过 ## 技术细节 - 添加 prettier-plugin-organize-imports@^4.1.0 - 保持现有 .prettierrc 配置不变 - 格式化涉及 TS/TSX/JS/JSX/JSON/CSS/MD 文件 - 代码功能完全不受影响,仅调整格式
158 lines
3.8 KiB
TypeScript
158 lines
3.8 KiB
TypeScript
import api from './api'
|
|
|
|
interface User {
|
|
id: number
|
|
username: string
|
|
email: string
|
|
role: 'admin' | 'editor' | 'viewer'
|
|
isActive: boolean
|
|
lastLoginAt?: string
|
|
createdAt: string
|
|
updatedAt: string
|
|
profile?: {
|
|
firstName?: string
|
|
lastName?: string
|
|
avatar?: string
|
|
}
|
|
}
|
|
|
|
interface UserListParams {
|
|
search?: string
|
|
role?: string | null
|
|
isActive?: boolean | null
|
|
page?: number
|
|
limit?: number
|
|
}
|
|
|
|
interface UserCreateData {
|
|
username: string
|
|
email: string
|
|
password: string
|
|
role?: string
|
|
isActive?: boolean
|
|
profile?: {
|
|
firstName?: string
|
|
lastName?: string
|
|
}
|
|
}
|
|
|
|
interface UserUpdateData {
|
|
username?: string
|
|
email?: string
|
|
password?: string
|
|
role?: string
|
|
isActive?: boolean
|
|
profile?: {
|
|
firstName?: string
|
|
lastName?: string
|
|
avatar?: string
|
|
}
|
|
}
|
|
|
|
interface UserStats {
|
|
total: number
|
|
active: number
|
|
admins: number
|
|
editors: number
|
|
viewers: number
|
|
recentLogins: number
|
|
}
|
|
|
|
export const userService = {
|
|
// 获取用户列表
|
|
getUsers: async (params: UserListParams = {}): Promise<User[]> => {
|
|
const response = await api.get('/users', { params })
|
|
return response.data
|
|
},
|
|
|
|
// 获取用户统计
|
|
getStats: async (): Promise<UserStats> => {
|
|
const response = await api.get('/users/stats')
|
|
return response.data
|
|
},
|
|
|
|
// 创建用户
|
|
createUser: async (data: UserCreateData): Promise<User> => {
|
|
const response = await api.post('/users', data)
|
|
return response.data
|
|
},
|
|
|
|
// 更新用户
|
|
updateUser: async (id: number, data: UserUpdateData): Promise<User> => {
|
|
const response = await api.put(`/users/${id}`, data)
|
|
return response.data
|
|
},
|
|
|
|
// 删除用户
|
|
deleteUser: async (id: number): Promise<void> => {
|
|
await api.delete(`/users/${id}`)
|
|
},
|
|
|
|
// 获取用户详情
|
|
getUser: async (id: number): Promise<User> => {
|
|
const response = await api.get(`/users/${id}`)
|
|
return response.data
|
|
},
|
|
|
|
// 批量删除用户
|
|
deleteUsers: async (ids: number[]): Promise<void> => {
|
|
await api.delete('/users/batch', { data: { ids } })
|
|
},
|
|
|
|
// 批量更新用户状态
|
|
updateUsersStatus: async (ids: number[], isActive: boolean): Promise<void> => {
|
|
await api.put('/users/batch/status', { ids, isActive })
|
|
},
|
|
|
|
// 重置用户密码
|
|
resetPassword: async (id: number): Promise<string> => {
|
|
const response = await api.post(`/users/${id}/reset-password`)
|
|
return response.data.newPassword
|
|
},
|
|
|
|
// 更改用户角色
|
|
updateUserRole: async (id: number, role: string): Promise<User> => {
|
|
const response = await api.put(`/users/${id}/role`, { role })
|
|
return response.data
|
|
},
|
|
|
|
// 获取用户活动日志
|
|
getUserActivity: async (id: number): Promise<any[]> => {
|
|
const response = await api.get(`/users/${id}/activity`)
|
|
return response.data
|
|
},
|
|
|
|
// 获取最近登录用户
|
|
getRecentLogins: async (limit: number = 10): Promise<User[]> => {
|
|
const response = await api.get('/users/recent-logins', { params: { limit } })
|
|
return response.data
|
|
},
|
|
|
|
// 检查用户名是否可用
|
|
checkUsername: async (username: string): Promise<boolean> => {
|
|
const response = await api.get('/users/check-username', { params: { username } })
|
|
return response.data.available
|
|
},
|
|
|
|
// 检查邮箱是否可用
|
|
checkEmail: async (email: string): Promise<boolean> => {
|
|
const response = await api.get('/users/check-email', { params: { email } })
|
|
return response.data.available
|
|
},
|
|
|
|
// 发送验证邮件
|
|
sendVerificationEmail: async (id: number): Promise<void> => {
|
|
await api.post(`/users/${id}/send-verification`)
|
|
},
|
|
|
|
// 激活用户账号
|
|
activateUser: async (id: number): Promise<void> => {
|
|
await api.post(`/users/${id}/activate`)
|
|
},
|
|
|
|
// 停用用户账号
|
|
deactivateUser: async (id: number): Promise<void> => {
|
|
await api.post(`/users/${id}/deactivate`)
|
|
},
|
|
}
|