package main import ( "background/config" "background/controller" "background/controller/middle" "background/db" "background/logs" "background/model" "github.com/gin-gonic/gin" "github.com/tommy351/gin-sessions" "log" "strconv" ) var ( userController = controller.UserController{} mailContoller = controller.MailController{} fileController = controller.FileController{} ) func InitConfig() { e := config.Init("user.yaml") if nil != e { log.Println(e.Error()) } } func InitMysql() { c := config.GetMysqlConfig() if c == nil { logs.Error("cannnot connect mysql server") } else { db.Init() } } func InitRedis() { e := config.InitRedis() if nil != e { logs.Error(e.Error()) return } } func InitElasticSearch(){ e := db.GetElastic().CreateIndex("hardware",model.HardwareTypeMapping()) if nil != e{ } } func InitLogs() { logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile) } func CORSMiddleware(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") if config.ApiConfig().RunMode == "release"{ c.Writer.Header().Set("Access-Control-Allow-Origin", "https://testingcloud.club") }else{ c.Writer.Header().Set("Access-Control-Allow-Origin", "http://localhost:8080") } c.Writer.Header().Set("Access-Control-Max-Age", "86400") c.Writer.Header().Set("Access-Control-Allow-Headers", "X-Requested-With," + " Content-Type, Origin, Authorization," + "Accept,Client-Security-Token, Accept-Encoding," + "x-access-token,Access-Control-Request-Method," + "Access-Control-Request-Headers") c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Length") c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") if c.Request.Method == "OPTIONS" { log.Println("OPTIONS") c.AbortWithStatus(200) } else { c.Next() } } func main() { InitConfig() InitLogs() InitRedis() InitMysql() InitElasticSearch() //o := db.GetMongoDb() //mgo = mgo //config.GetMongoDBConfig() r := gin.Default() store := sessions.NewCookieStore([]byte("secret123")) r.Use(sessions.Middleware("sess_store", store)) r.Use(CORSMiddleware) api := r.Group("/api") { /** 添加或修改用户 **/ api.POST("/user", userController.SetUser) /** 删除用户 **/ api.DELETE("/user", userController.DelUser) /** 获取单独用户详情信息 methods(id) **/ api.GET("/user", middle.AuthMiddle,userController.GetUser) /** 获取所有用户 **/ api.GET("/users", middle.AuthMiddle,userController.Users) api.POST("/search_users",middle.AuthMiddle,userController.SerarchUsers) /** 用户登录 **/ api.POST("/login", userController.Login) /** 用户注册 **/ api.POST("/register", userController.Register) /** 用户退出登陆 **/ api.GET("/logout/:token", userController.Logout) api.POST("/verify", mailContoller.OnSendEmailCode) /** 修改密码**/ api.POST("modify_pass",middle.AuthMiddle,userController.ModifyPasswd) api.GET("/article/:id",controller.GetArticle) //获取文章 api.POST("/articles",controller.GetArticles) // 获取所有文章 api.PUT("/article",controller.AddArticle) // 添加文章 api.GET("article_type",controller.ArticlesType) //获取所有文章分类 api.PUT("article_type",controller.AddArticleType) api.DELETE("article_type",controller.DeleteArticleType) api.POST("/article_update",controller.UpdateArtilce) //更新文章 api.GET("/articleCount",controller.GetArticleCount) //获取所有文章个数 api.DELETE("/article/:id",controller.DeleteArticle) ////删除文章 api.POST("/image_upload",fileController.OnUpload) // 上传图片 api.GET("/image_download/:file",fileController.OnDownLoad) // 下载图片 api.GET("/image_thumbnail/:file",fileController.OnThumbnail) // 下载图片 api.GET("/doc_types",controller.ArticlesTypes) // 获取所有的文章类型 api.POST("/hardware",controller.AddHardware) // 新增硬件 api.GET("/hardware",controller.ReadHardWare) // 读取硬件 api.DELETE("/hardware",controller.DeleteHardWare) // 读取硬件 api.PUT("file",fileController.OnUploadFile) // 上传文件 api.GET("file",fileController.DownloadFile) // 下载 文件 api.GET("filelist",fileController.FileList) // 文件列表 api.GET("fileType",fileController.FileType) // 文件类型 } e := r.Run(":" + strconv.Itoa(config.GetPort())) if nil != e { log.Print(e.Error()) } }