2019-01-25 09:11:15 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2019-04-07 04:25:07 +00:00
|
|
|
"background/config"
|
|
|
|
"background/controller"
|
|
|
|
"background/controller/middle"
|
|
|
|
"background/db"
|
2020-06-24 17:15:46 +00:00
|
|
|
_ "background/docs"
|
2019-04-07 04:25:07 +00:00
|
|
|
"background/logs"
|
2020-03-25 16:30:07 +00:00
|
|
|
"background/model"
|
2019-01-25 09:11:15 +00:00
|
|
|
"log"
|
2020-08-23 18:08:26 +00:00
|
|
|
"os"
|
2019-01-25 09:11:15 +00:00
|
|
|
"strconv"
|
2020-08-30 07:14:49 +00:00
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
2020-08-23 18:08:26 +00:00
|
|
|
ginSwagger "github.com/swaggo/gin-swagger" // gin-swagger middleware
|
2020-08-30 10:44:29 +00:00
|
|
|
"github.com/swaggo/gin-swagger/swaggerFiles"
|
2020-08-30 07:14:49 +00:00
|
|
|
sessions "github.com/tommy351/gin-sessions"
|
2019-01-25 09:11:15 +00:00
|
|
|
)
|
|
|
|
|
2020-06-24 17:15:46 +00:00
|
|
|
// @title 大厅功能api
|
|
|
|
// @version 1.0
|
|
|
|
// @host localhost:8080
|
|
|
|
// @BasePath /api/v1
|
|
|
|
|
2019-03-07 06:06:29 +00:00
|
|
|
var (
|
2020-08-30 07:14:49 +00:00
|
|
|
userController = controller.UserController{}
|
|
|
|
mailContoller = controller.MailController{}
|
|
|
|
fileController = controller.FileController{}
|
2019-03-07 06:06:29 +00:00
|
|
|
)
|
|
|
|
|
2020-04-30 09:33:47 +00:00
|
|
|
func CORSMiddleware(c *gin.Context) {
|
|
|
|
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
|
2020-08-30 07:14:49 +00:00
|
|
|
if config.ApiConfig().RunMode == "release" {
|
2020-04-30 09:33:47 +00:00
|
|
|
c.Writer.Header().Set("Access-Control-Allow-Origin", "https://testingcloud.club")
|
|
|
|
|
2020-08-30 07:14:49 +00:00
|
|
|
} else {
|
2020-04-30 09:33:47 +00:00
|
|
|
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",
|
2020-08-30 07:14:49 +00:00
|
|
|
"X-Requested-With,"+
|
|
|
|
" Content-Type, Origin, Authorization,"+
|
|
|
|
"Accept,Client-Security-Token, Accept-Encoding,"+
|
|
|
|
"x-access-token,Access-Control-Request-Method,"+
|
|
|
|
"Access-Control-Request-Headers")
|
2020-04-30 09:33:47 +00:00
|
|
|
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()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-12 06:01:25 +00:00
|
|
|
func InitConfig() {
|
2019-03-07 06:06:29 +00:00
|
|
|
e := config.Init("user.yaml")
|
|
|
|
if nil != e {
|
|
|
|
log.Println(e.Error())
|
|
|
|
}
|
|
|
|
}
|
2020-05-27 14:05:43 +00:00
|
|
|
|
2019-03-07 02:36:09 +00:00
|
|
|
func InitMysql() {
|
2019-01-25 09:11:15 +00:00
|
|
|
c := config.GetMysqlConfig()
|
2019-03-07 02:36:09 +00:00
|
|
|
if c == nil {
|
2019-01-25 09:11:15 +00:00
|
|
|
logs.Error("cannnot connect mysql server")
|
2019-03-07 02:36:09 +00:00
|
|
|
} else {
|
2019-01-25 09:11:15 +00:00
|
|
|
db.Init()
|
|
|
|
}
|
|
|
|
}
|
2020-05-27 14:05:43 +00:00
|
|
|
|
2020-04-30 09:33:47 +00:00
|
|
|
func InitRedisConfig() {
|
2019-03-07 06:06:29 +00:00
|
|
|
e := config.InitRedis()
|
|
|
|
if nil != e {
|
|
|
|
logs.Error(e.Error())
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
2020-05-27 14:05:43 +00:00
|
|
|
|
2020-08-30 07:14:49 +00:00
|
|
|
func InitElasticSearch() {
|
|
|
|
e := db.GetElastic().CreateIndex("hardware", model.HardwareTypeMapping())
|
|
|
|
if nil != e {
|
2020-04-24 14:56:24 +00:00
|
|
|
|
2020-03-25 16:30:07 +00:00
|
|
|
}
|
|
|
|
}
|
2020-05-27 14:05:43 +00:00
|
|
|
|
2019-03-12 06:01:25 +00:00
|
|
|
func InitLogs() {
|
2019-03-07 06:06:29 +00:00
|
|
|
logs.Init(config.GetLogConfig().Dir, config.GetLogConfig().File, config.GetLogConfig().Level, config.GetLogConfig().SaveFile)
|
|
|
|
}
|
2019-03-07 02:36:09 +00:00
|
|
|
func main() {
|
2020-08-23 18:08:26 +00:00
|
|
|
log.Print("gid is", os.Getegid())
|
|
|
|
|
2019-03-07 06:06:29 +00:00
|
|
|
InitConfig()
|
|
|
|
InitLogs()
|
2020-04-30 09:33:47 +00:00
|
|
|
InitRedisConfig()
|
2019-03-07 06:06:29 +00:00
|
|
|
InitMysql()
|
2021-01-12 15:39:31 +00:00
|
|
|
InitElasticSearch()
|
2019-03-07 06:06:29 +00:00
|
|
|
|
2019-01-25 09:11:15 +00:00
|
|
|
r := gin.Default()
|
2019-01-29 13:57:53 +00:00
|
|
|
store := sessions.NewCookieStore([]byte("secret123"))
|
2019-03-07 06:06:29 +00:00
|
|
|
r.Use(sessions.Middleware("sess_store", store))
|
2019-02-23 06:19:29 +00:00
|
|
|
r.Use(CORSMiddleware)
|
2020-06-24 17:15:46 +00:00
|
|
|
|
|
|
|
go func() {
|
|
|
|
// programatically set swagger info
|
|
|
|
r := gin.New()
|
|
|
|
// use ginSwagger middleware to serve the API docs
|
|
|
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
2020-06-26 10:20:36 +00:00
|
|
|
r.Run(":9992")
|
2020-06-24 17:15:46 +00:00
|
|
|
}()
|
2019-03-07 06:06:29 +00:00
|
|
|
api := r.Group("/api")
|
2019-01-25 09:11:15 +00:00
|
|
|
{
|
|
|
|
/** 添加或修改用户 **/
|
2019-03-27 07:03:45 +00:00
|
|
|
api.POST("/user", userController.SetUser)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 删除用户 **/
|
2019-03-27 07:03:45 +00:00
|
|
|
api.DELETE("/user", userController.DelUser)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 获取单独用户详情信息 methods(id) **/
|
2020-06-20 15:15:23 +00:00
|
|
|
api.GET("/user", middle.AuthMiddle, userController.GetUser)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 获取所有用户 **/
|
2020-06-20 15:15:23 +00:00
|
|
|
api.GET("/users", middle.AuthMiddle, userController.Users)
|
|
|
|
api.POST("/search_users", middle.AuthMiddle, userController.SerarchUsers)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 用户登录 **/
|
2019-03-27 07:03:45 +00:00
|
|
|
api.POST("/login", userController.Login)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 用户注册 **/
|
2019-03-27 07:03:45 +00:00
|
|
|
api.POST("/register", userController.Register)
|
2019-01-25 09:11:15 +00:00
|
|
|
/** 用户退出登陆 **/
|
2019-09-06 07:53:04 +00:00
|
|
|
api.GET("/logout/:token", userController.Logout)
|
2019-03-27 07:03:45 +00:00
|
|
|
api.POST("/verify", mailContoller.OnSendEmailCode)
|
2019-04-07 04:25:07 +00:00
|
|
|
/** 修改密码**/
|
2020-06-20 15:15:23 +00:00
|
|
|
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.PUT("/article_search", controller.SearchArticle) // 添加文章
|
2020-08-23 18:08:26 +00:00
|
|
|
api.GET("/article_type", controller.ArticlesType) //获取所有文章分类
|
2020-06-30 15:28:51 +00:00
|
|
|
api.PUT("/article_type", controller.AddArticleType)
|
|
|
|
api.DELETE("/article_type", controller.DeleteArticleType)
|
2020-06-20 15:15:23 +00:00
|
|
|
|
|
|
|
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.OnFileUploadFile) // 上传文件
|
|
|
|
api.GET("/file", fileController.DownloadFile) // 下载 文件
|
|
|
|
api.GET("/filelist", fileController.FileList) // 文件列表
|
|
|
|
api.GET("/fileType", fileController.FileType) // 文件类型
|
2020-03-31 17:07:32 +00:00
|
|
|
|
2020-09-26 04:30:23 +00:00
|
|
|
api.PUT("/memo", controller.CreateMemo) // 备忘录新建
|
|
|
|
api.POST("/memo", controller.UpdateMemo) // 备忘录更新
|
|
|
|
api.POST("/memos", controller.GetMemos) // 备忘录批量
|
|
|
|
api.POST("/delmemo", controller.DeleteMemos) //删除备忘录
|
|
|
|
api.GET("/memo", controller.GetMemo) // 单独读取
|
|
|
|
api.GET("doc_groups", controller.GetDocGroup) // 获取所有的文章分组
|
|
|
|
api.POST("type_group", controller.GetDocTypeGroup) // 获取类所在的组
|
|
|
|
api.POST("group_type", controller.GetDoGroupcType) // 获取类所在的组
|
|
|
|
|
2020-08-23 18:08:26 +00:00
|
|
|
api.GET("templates", controller.GetDocTemplate) // 获取所有文章的模板
|
|
|
|
|
|
|
|
api.GET("doc_versions", nil) // 获取文章的某个版本
|
2021-01-09 14:55:22 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2021-01-12 15:39:31 +00:00
|
|
|
api.PUT("/book", controller.CreateBook) // 备忘录新建
|
|
|
|
api.POST("/book", controller.UpdateBook) // 备忘录更新
|
2021-01-09 14:55:22 +00:00
|
|
|
api.POST("/books", controller.GetMemos) // 备忘录批量
|
|
|
|
api.POST("/delbook", controller.DeleteMemos) //删除备忘录
|
2019-03-07 02:36:09 +00:00
|
|
|
}
|
2020-11-12 04:08:22 +00:00
|
|
|
|
|
|
|
openapi := r.Group("openapi")
|
2020-06-20 15:15:23 +00:00
|
|
|
{
|
2020-11-12 04:08:22 +00:00
|
|
|
openapi.POST("/diff")
|
2020-06-20 15:15:23 +00:00
|
|
|
}
|
2019-03-07 06:06:29 +00:00
|
|
|
e := r.Run(":" + strconv.Itoa(config.GetPort()))
|
|
|
|
if nil != e {
|
2019-03-07 02:36:09 +00:00
|
|
|
log.Print(e.Error())
|
2019-01-25 09:11:15 +00:00
|
|
|
}
|
|
|
|
}
|