feat: 完成后端-管理后台集成及部署配置

🚀 主要功能:
- 完善后端API服务层,实现完整的CRUD操作
- 开发管理后台所有核心页面 (仪表板、照片、分类、标签、用户、设置)
- 完成前后端完全集成,所有API接口正常对接
- 配置完整的CI/CD流水线,支持自动化部署

🎯 后端完善:
- 实现PhotoService, CategoryService, TagService, UserService
- 添加完整的API处理器和路由配置
- 支持Docker容器化部署
- 添加数据库迁移和健康检查

🎨 管理后台完成:
- 仪表板: 实时统计数据展示
- 照片管理: 完整的CRUD操作,支持批量处理
- 分类管理: 树形结构展示和管理
- 标签管理: 颜色标签和统计信息
- 用户管理: 角色权限控制
- 系统设置: 多标签配置界面
- 添加pre-commit代码质量检查

🔧 部署配置:
- Docker Compose完整配置
- 后端CI/CD流水线 (Docker部署)
- 管理后台CI/CD流水线 (静态文件部署)
- 前端CI/CD流水线优化
- 自动化脚本: 部署、备份、监控
- 完整的部署文档和运维指南

 集成完成:
- 所有API接口正常连接
- 认证系统完整集成
- 数据获取和状态管理
- 错误处理和用户反馈
- 响应式设计优化
This commit is contained in:
xujiang
2025-07-09 16:23:18 +08:00
parent c57ec3aa82
commit 72414d0979
62 changed files with 12416 additions and 262 deletions

View File

@ -0,0 +1,157 @@
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`)
}
}