-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.go
More file actions
86 lines (69 loc) · 2.25 KB
/
main.go
File metadata and controls
86 lines (69 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
import (
"embed"
"flag"
"log"
"os"
"github.com/W1ndys/easy-qfnu-api-go/common/logger"
"github.com/W1ndys/easy-qfnu-api-go/common/notify"
"github.com/W1ndys/easy-qfnu-api-go/common/stats"
"github.com/W1ndys/easy-qfnu-api-go/internal/config"
"github.com/W1ndys/easy-qfnu-api-go/router"
"github.com/fatih/color"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
)
// ---------------------------------------------------------
// 1. 嵌入 web 目录下的静态资源和模板
// ---------------------------------------------------------
// 只嵌入运行时需要的文件,排除构建工具和源文件
//
//go:embed web/templates web/static/css/tailwind.css web/static/js web/static/favico.ico
var webFS embed.FS
func main() {
// 定义命令行参数
resetPwd := flag.String("reset-password", "", "重置管理员密码")
flag.Parse()
// 处理重置密码逻辑
if *resetPwd != "" {
if err := config.SetAdminPassword(*resetPwd); err != nil {
log.Fatalf("重置密码失败: %v", err)
}
log.Printf("管理员密码已成功重置为: %s", *resetPwd)
return
}
// 尝试加载 .env 文件,忽略错误(因为环境变量可能已经存在)
_ = godotenv.Load()
// 设置 Gin 为 Release 模式
gin.SetMode(gin.ReleaseMode)
// 初始化日志
logger.InitLogger("./logs", "easy-qfnu-api", "info")
// 初始化统计模块
stats.InitCollector()
stats.RecordStartTime()
// 初始化飞书通知
notify.InitFeishu()
// 初始化路由 (注入 webFS)
r := router.InitRouter(webFS)
// 获取端口
port := os.Getenv("PORT")
if port == "" {
port = "8141"
}
// ---------------------------------------------------------
// 启动提示
// ---------------------------------------------------------
printBanner(port)
// 发送启动通知
notify.NotifyStartup(port)
r.Run("0.0.0.0:" + port)
}
func printBanner(port string) {
green := color.New(color.FgGreen).SprintFunc()
red := color.New(color.FgRed).SprintFunc()
cyan := color.New(color.FgCyan).SprintFunc()
log.Println(green("√ 服务器启动成功!"))
log.Println(cyan("➜ 网页首页: http://127.0.0.1:" + port + "/"))
log.Println(cyan("➜ 后台地址: http://127.0.0.1:" + port + "/admin"))
log.Println(red("! 注意: 请勿关闭此窗口"))
}