🚀 AI 近视防控系统 - 生产环境上线版本 v1.0

 已完成功能:
- 后端 Go 服务 (认证/授权/检测)
- JWT 认证 + RBAC 权限控制
- 登录速率限制 (5 次失败锁定 15 分钟)
- 密码强度校验
- 敏感数据脱敏
- Vue3 管理后台
- 路由守卫
- 删除二次确认

📦 部署配置:
- Docker Compose 生产环境配置
- MySQL/Redis/MongoDB 数据库
- Nginx 前端服务
- 强密码安全配置

⚠️ P2 待办 (下次迭代):
- 学生/检测/预警等业务模块实现
- 错误处理统一化
- 缓存策略优化
- 日志分级

📍 生产环境:
- 服务器:192.168.15.222
- 管理后台:http://192.168.15.222:8081
- API 服务:http://192.168.15.222:8080

2026-03-29 上线部署完成
This commit is contained in:
虾司令
2026-03-29 18:16:41 +08:00
commit 881144269c
38 changed files with 4967 additions and 0 deletions

View File

@@ -0,0 +1,94 @@
package main
import (
"fmt"
"log"
"golang.org/x/crypto/bcrypt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// UserAccount 用户账号模型
type UserAccount struct {
ID uint `gorm:"primaryKey"`
Username string `gorm:"type:varchar(64);uniqueIndex"`
PasswordHash string `gorm:"type:varchar(255)"`
Name string `gorm:"type:varchar(64)"`
Phone string `gorm:"type:varchar(20);uniqueIndex"`
UserType string `gorm:"type:varchar(16)"`
Status int `gorm:"default:1"`
LastLoginAt *string
LastLoginIP string
CreatedAt string
UpdatedAt string
}
func main() {
fmt.Println("AI近视防控系统 - 管理员账号创建工具")
// 数据库连接信息 - 从环境变量或配置文件读取
// 使用与主应用相同的数据库连接信息
dsn := "root:MyopiaTest2026!@tcp(localhost:3306)/ai_myopia_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("连接数据库失败:", err)
}
// 加密管理员密码
adminPassword := "Admin123!@#" // 强密码,包含大小写字母、数字、特殊字符
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(adminPassword), bcrypt.DefaultCost)
if err != nil {
log.Fatal("密码加密失败:", err)
}
// 创建管理员账号
adminAccount := UserAccount{
Username: "admin",
PasswordHash: string(hashedPassword),
Name: "系统管理员",
Phone: "13800138000",
UserType: "admin",
Status: 1,
}
result := db.Table("user_accounts").Where("username = ?", "admin").First(&UserAccount{})
if result.Error != nil {
// 管理员账号不存在,创建新账号
result = db.Table("user_accounts").Create(&adminAccount)
if result.Error != nil {
log.Fatal("创建管理员账号失败:", result.Error)
}
fmt.Println("✅ 管理员账号创建成功")
} else {
// 管理员账号已存在,更新密码
result = db.Table("user_accounts").
Where("username = ?", "admin").
Updates(map[string]interface{}{
"password_hash": string(hashedPassword),
"name": "系统管理员",
"phone": "13800138000",
"user_type": "admin",
"status": 1,
})
if result.Error != nil {
log.Fatal("更新管理员账号失败:", result.Error)
}
fmt.Println("✅ 管理员账号更新成功")
}
fmt.Println("\n📋 测试账号信息:")
fmt.Println("用户名: admin")
fmt.Println("密码: Admin123!@#")
fmt.Println("角色: admin")
fmt.Println("手机号: 13800138000")
fmt.Println("\n🔧 功能测试:")
fmt.Println("- 用户认证功能: 待验证")
fmt.Println("- 学生管理功能: 待验证")
fmt.Println("- 检测功能: 待验证")
fmt.Println("- 预警功能: 待验证")
fmt.Println("\n💡 提示: 可使用此账号登录系统进行功能测试")
}