picgo/cmd/picgo.go
2024-07-12 20:32:33 +08:00

112 lines
2.4 KiB
Go

package cmd
import (
"fmt"
"github.com/spf13/cobra"
"log"
"net/http"
"os"
"picgo/configs"
"picgo/corelib"
"picgo/model"
"picgo/router"
"strings"
)
var rootCmd = &cobra.Command{
Use: "root",
PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) {
fmt.Println("args:")
fmt.Println(strings.Join(args, " "))
if len(os.Args) < 1 {
log.Panic("请指定配置文件路径")
return
}
configFile := args[0]
fmt.Println("配置文件路径: ", configFile)
// 初始化配置文件
configs.NewConfig(configFile)
// 初始化日志
corelib.NewLogger()
// 初始化redis
corelib.NewRedis()
// 初始化mysql
corelib.NewMysql()
// 初始化session store
corelib.NewSessionStore()
return
},
}
var picgoCmd = &cobra.Command{
Use: "picgo",
Run: func(cmd *cobra.Command, args []string) {
// 创建路由
r := router.InitRouter()
// 启动HTTP服务器
log.Println("Serving on http://localhost:8082")
err := http.ListenAndServe(":8082", r)
if err != nil {
log.Fatalf("Failed to start server: %v", err)
}
},
}
var MigrateCmd = &cobra.Command{
Use: "migrate",
Run: func(cmd *cobra.Command, args []string) {
var err error
// 自动迁移数据库
if err = corelib.DbMysql.AutoMigrate(&model.SysUser{}); err != nil {
panic("SysUser 迁移数据库失败")
}
if err = corelib.DbMysql.AutoMigrate(&model.Domain{}); err != nil {
panic("Domain 迁移数据库失败")
}
if err = corelib.DbMysql.AutoMigrate(&model.Upload{}); err != nil {
panic("Upload 迁移数据库失败")
}
// 初始化管理员用户
err = initSysUser()
if err != nil {
fmt.Println("初始化管理员用户失败", err)
}
},
}
func init() {
rootCmd.AddCommand(picgoCmd)
rootCmd.AddCommand(MigrateCmd)
}
func Execute() {
err := rootCmd.Execute()
if err != nil {
return
}
}
// 初始化超级管理员
func initSysUser() error {
var (
hashPassword string
err error
)
userName := "admin001"
password := "Admin#123456"
salt := corelib.GenerateSalt()
if hashPassword, err = corelib.HashPassword(password, salt); err != nil {
corelib.Logger.Errorln("initSystem 生成密码失败: ", err)
return err
}
user := model.SysUser{Username: userName, Password: hashPassword, Salt: salt, IsSuper: 1}
if err = corelib.DbMysql.Create(&user).Error; err != nil {
corelib.Logger.Errorln("initSystem 初始化管理员用户失败: ", err)
return err
}
return nil
}