-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmain.go
105 lines (88 loc) · 2.15 KB
/
main.go
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package main
import (
"github.com/ChangSZ/golib/log"
"github.com/ChangSZ/golib/shutdown"
"github.com/ChangSZ/mall-go/configs"
"github.com/ChangSZ/mall-go/internal/repository/cron"
"github.com/ChangSZ/mall-go/internal/repository/mysql"
"github.com/ChangSZ/mall-go/internal/repository/redis"
"github.com/ChangSZ/mall-go/internal/router"
"github.com/ChangSZ/mall-go/pkg/browser"
"github.com/ChangSZ/mall-go/pkg/file"
)
// @title swagger 接口文档
// @version 2.0
// @description
// @contact.name
// @contact.url
// @contact.email
// @license.name MIT
// @license.url https://github.com/ChangSZ/mall-go/blob/master/LICENSE
// @securityDefinitions.apikey LoginToken
// @in header
// @name token
// @BasePath /
func main() {
// 初始化logger
logCfg := log.Config{
FilePath: configs.ProjectLogFile,
MaxDays: configs.ProjectLogRotateMaxDays,
LogLevel: configs.ProjectLogLevel,
}
log.Init(logCfg)
var cronServer cron.Server
var err error
openBrowserUri := configs.ProjectDomain + configs.ProjectPort + "/render"
_, ok := file.IsExists(configs.ProjectInstallMark)
if !ok { // 未安装
openBrowserUri += "/install"
}
// 初始化 DB
mysql.Init()
// 初始化 Cache
redis.Init()
// 初始化 CRON Server
cronServer, err = cron.New()
if err != nil {
log.Fatal("new cron err: ", err)
}
cronServer.Start()
// 初始化路由
eng := router.RoutersInit(cronServer)
log.Info("app Run...")
if err := eng.Run(configs.ProjectPort); err != nil {
panic(err)
}
// 自动打开浏览器
if openBrowserUri != "" {
_ = browser.Open(openBrowserUri)
}
// 优雅关闭
shutdown.NewHook().Close(
// 关闭 db
func() {
if mysql.DB() != nil {
if err := mysql.DB().DbWClose(); err != nil {
log.Error("dbw close err: ", err)
}
if err := mysql.DB().DbRClose(); err != nil {
log.Error("dbr close err: ", err)
}
}
},
// 关闭 cache
func() {
if redis.Cache() != nil {
if err := redis.Cache().Close(); err != nil {
log.Error("cache close err: ", err)
}
}
},
// 关闭 cron Server
func() {
if cronServer != nil {
cronServer.Stop()
}
},
)
}