Files
photography/backend/init_database.sql
iriver 4c7fcc3f3b feat: 实现管理后台与后端 API 对接基础功能
## 🎯 主要功能

###  管理后台对接启动
- 分析管理后台架构和技术栈 (React + TypeScript + Vite + Bun)
- 配置 API 服务地址 (http://localhost:8080/api/v1)
- 创建开发和生产环境配置文件

### 🔐 用户认证模块对接
- 修复前后端类型定义不匹配问题
- 更新 LoginResponse 接口匹配后端响应格式
- 实现登录数据格式转换 (后端→前端)
- 配置 JWT Token 认证流程

### 🗄️ 数据库初始化
- 创建用户、分类、照片表结构
- 添加默认管理员账户 (admin/admin123)
- 插入默认分类数据 (风景、人像、建筑、街拍)
- 实现密码哈希生成工具

###  API 接口验证
- 测试登录接口:  成功返回 JWT Token
- 测试受保护接口:  分类列表获取成功
- 验证 JWT 认证中间件:  Bearer Token 验证通过
- 确认前后端数据格式兼容性

## 📁 新增文件
- admin/.env.development - 开发环境配置
- admin/.env.production - 生产环境配置
- backend/init_database.sql - 数据库初始化脚本
- backend/hash_password.go - 密码哈希工具
- 更新 .gitignore 忽略 bun.lock

## 🎉 里程碑达成
-  后端 API 服务完全就绪
-  用户认证流程打通
-  数据库初始化完成
-  API 接口验证通过
2025-07-10 23:36:08 +08:00

48 lines
1.6 KiB
SQL

-- 用户表
CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
avatar VARCHAR(255) DEFAULT '',
status INTEGER DEFAULT 1, -- 1:启用 0:禁用
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 分类表
CREATE TABLE IF NOT EXISTS category (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(100) NOT NULL,
description TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 照片表
CREATE TABLE IF NOT EXISTS photo (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT,
file_path VARCHAR(500) NOT NULL,
thumbnail_path VARCHAR(500),
user_id INTEGER NOT NULL,
category_id INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (category_id) REFERENCES category(id)
);
-- 插入默认管理员用户
INSERT OR IGNORE INTO user (username, password, email, avatar, status)
VALUES ('admin', '$2a$10$K8H7YjN5hOcE0zWTz1YuAuYqFyQ9cqUdFHJgJdKxA5wGv3LUQHgKq', 'admin@example.com', '', 1);
-- 密码是 admin123 的 bcrypt 哈希
-- 插入默认分类
INSERT OR IGNORE INTO category (name, description)
VALUES
('风景', '自然风景摄影作品'),
('人像', '人物肖像摄影作品'),
('建筑', '建筑摄影作品'),
('街拍', '街头摄影作品');