package main import ( "cicv-data-closedloop/amd64/web_server/handler" "cicv-data-closedloop/common/config/c_db" "cicv-data-closedloop/common/config/c_log" "cicv-data-closedloop/common/gin/middleware" _ "embed" "github.com/gin-gonic/gin" "gopkg.in/yaml.v2" _ "gopkg.in/yaml.v3" "os" ) type ApplicationYamlStruct struct { ApplicationName string `yaml:"application"` Web struct { Port string `yaml:"port"` RoutePrefix string `yaml:"route-prefix"` Token string `yaml:"token"` WhiteList []string `yaml:"white-list"` } `yaml:"web"` Log struct { Dir string `yaml:"dir"` Prefix string `yaml:"prefix"` } `yaml:"log"` Mysql struct { Ip string `yaml:"ip"` Port string `yaml:"port"` Username string `yaml:"username"` Password string `yaml:"password"` Dbname string `yaml:"dbname"` Charset string `yaml:"charset"` SqlfileDir string `yaml:"sqlfile-dir"` } `yaml:"mysql"` } var ( //go:embed application.yaml applicationYamlBytes []byte ApplicationYaml ApplicationYamlStruct ) func init() { // 解析YAML内容 _ = yaml.Unmarshal(applicationYamlBytes, &ApplicationYaml) c_log.InitLog( ApplicationYaml.Log.Dir, ApplicationYaml.Log.Prefix, ) c_db.InitSqlxMysql( ApplicationYaml.Mysql.Username, ApplicationYaml.Mysql.Password, ApplicationYaml.Mysql.Ip, ApplicationYaml.Mysql.Port, ApplicationYaml.Mysql.Dbname, ApplicationYaml.Mysql.Charset, ) c_db.InitSqlFilesMap(ApplicationYaml.Mysql.SqlfileDir) } func main() { c_log.GlobalLogger.Info("配置文件为:", ApplicationYaml) // 创建 gin 实例 router := gin.Default() // 使用中间件 router.Use(middleware.Cors()) // 解决cors router.Use(middleware.LogRequest()) // 请求日志打印 router.Use(middleware.ValidateHeaders(ApplicationYaml.Web.WhiteList, ApplicationYaml.Web.Token)) // 全局请求头校验 // 通过路由组设置全局前缀 projectPrefix := router.Group(ApplicationYaml.Web.RoutePrefix) examPrefix := projectPrefix.Group("/exam") examPrefix.POST("/begin", handler.Begin) // 考试开始 examPrefix.POST("/end", handler.End) // 考试结束 examPrefix.POST("/page", handler.Page) // 分页查询 examPrefix.POST("/report", handler.Report) // pdf下载 monitorPrefix := projectPrefix.Group("/monitor") monitorPrefix.POST("/insert", handler.SaveDeviceMonitor) // 端口 err := router.Run(":" + ApplicationYaml.Web.Port) if err != nil { c_log.GlobalLogger.Error("程序崩溃,监听端口 "+ApplicationYaml.Web.Port+" 失败:", err) os.Exit(-1) } }