package router import ( "fmt" "git.hpds.cc/Component/logging" ginzap "github.com/gin-contrib/zap" "github.com/gin-gonic/gin" "hpds-iot-web/config" "hpds-iot-web/internal/handler" "hpds-iot-web/internal/middleware" "hpds-iot-web/mq" "net/http" "xorm.io/xorm" e "hpds-iot-web/pkg/err" ) func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engine) *gin.Engine { hs := handler.NewHandlerService(cfg, engine, logger) gin.SetMode(gin.ReleaseMode) root := gin.New() root.Use(ginzap.Ginzap(logger.Logger, "2006-01-02 15:04:05.000", true)) root.Use(middleware.Cors()) r := root.Group("/api") { user := r.Group("/user") { user.Use(middleware.JwtAuthMiddleware(logger.Logger)) user.POST("/login", e.ErrorWrapper(hs.Login)) user.POST("/add", e.ErrorWrapper(hs.AddUser)) user.POST("/edit", e.ErrorWrapper(hs.EditUser)) user.POST("/list", e.ErrorWrapper(hs.GetUserList)) user.GET("/getUserInfo", e.ErrorWrapper(hs.GetUserInfo)) menu := user.Group("/menu") { menu.GET("/list", e.ErrorWrapper(hs.MenuList)) } } manage := r.Group("/manage") { manage.Use(middleware.JwtAuthMiddleware(logger.Logger)) owner := manage.Group("/owner") { owner.POST("/list", e.ErrorWrapper(hs.OwnerList)) owner.GET("/info", e.ErrorWrapper(hs.OwnerInfo)) owner.POST("/add", e.ErrorWrapper(hs.AddOwner)) owner.POST("/edit", e.ErrorWrapper(hs.EditOwner)) owner.POST("/delete", e.ErrorWrapper(hs.DelOwner)) } project := manage.Group("/project") { project.POST("/list", e.ErrorWrapper(hs.ProjectList)) project.POST("/info", e.ErrorWrapper(hs.ProjectInfo)) project.POST("/add", e.ErrorWrapper(hs.AddProject)) project.POST("/edit", e.ErrorWrapper(hs.EditProject)) project.POST("/delete", e.ErrorWrapper(hs.DelProject)) } product := manage.Group("/product") { product.POST("/list", e.ErrorWrapper(hs.ProductList)) product.POST("/info", e.ErrorWrapper(hs.GetProductInfo)) product.POST("/add", e.ErrorWrapper(hs.AddProduct)) product.POST("/edit", e.ErrorWrapper(hs.EditProduct)) product.POST("/delete", e.ErrorWrapper(hs.DelProduct)) category := product.Group("/category") { category.POST("/list", e.ErrorWrapper(hs.CategoryList)) category.POST("/add", e.ErrorWrapper(hs.AddCategory)) category.POST("/edit", e.ErrorWrapper(hs.EditCategory)) category.POST("/delete", e.ErrorWrapper(hs.DelCategory)) } attribute := product.Group("/attribute") { attribute.POST("/list", e.ErrorWrapper(hs.AttributeList)) attribute.POST("/add", e.ErrorWrapper(hs.AddAttribute)) attribute.POST("/edit", e.ErrorWrapper(hs.EditAttribute)) attribute.POST("/delete", e.ErrorWrapper(hs.DelAttribute)) } event := product.Group("/event") { event.POST("/list", e.ErrorWrapper(hs.EventList)) event.POST("/add", e.ErrorWrapper(hs.AddEvent)) event.POST("/edit", e.ErrorWrapper(hs.EditEvent)) event.POST("/delete", e.ErrorWrapper(hs.DelEvent)) params := event.Group("/params") { params.POST("/list", e.ErrorWrapper(hs.EventParamsList)) params.POST("/add", e.ErrorWrapper(hs.AddEventParams)) params.POST("/edit", e.ErrorWrapper(hs.EditEventParams)) params.POST("/delete", e.ErrorWrapper(hs.DelEventParams)) } } service := product.Group("/service") { service.POST("/list", e.ErrorWrapper(hs.ServiceList)) service.POST("/add", e.ErrorWrapper(hs.AddService)) service.POST("/edit", e.ErrorWrapper(hs.EditService)) service.POST("/delete", e.ErrorWrapper(hs.DelService)) params := service.Group("/params") { params.POST("/list", e.ErrorWrapper(hs.ServiceParamsList)) params.POST("/add", e.ErrorWrapper(hs.AddServiceParams)) params.POST("/edit", e.ErrorWrapper(hs.EditServiceParams)) params.POST("/delete", e.ErrorWrapper(hs.DelServiceParams)) } } device := product.Group("/device") { device.POST("/list", e.ErrorWrapper(hs.DeviceList)) device.POST("/info", e.ErrorWrapper(hs.DeviceInfo)) device.POST("/add", e.ErrorWrapper(hs.AddDevice)) device.POST("/edit", e.ErrorWrapper(hs.EditDevice)) device.POST("/delete", e.ErrorWrapper(hs.DeleteDevice)) } } //detection := manage.Group("/detection") //{ // //} } model := r.Group("/model") { model.Use(middleware.JwtAuthMiddleware(logger.Logger)) model.POST("/list", e.ErrorWrapper(hs.ModelList)) model.POST("/add", e.ErrorWrapper(hs.AddModel)) model.POST("/edit", e.ErrorWrapper(hs.EditModel)) model.POST("/delete", e.ErrorWrapper(hs.DelModel)) model.POST("/issue", e.ErrorWrapper(hs.ModelIssue)) model.POST("/workflow", e.ErrorWrapper(hs.GetModelWorkflow)) } file := r.Group("/file") { file.Use(middleware.JwtAuthMiddleware(logger.Logger)) file.POST("/upload", e.ErrorWrapper(hs.UploadFile)) file.POST("/list", e.ErrorWrapper(hs.FileList)) } system := r.Group("/system") { system.Use(middleware.JwtAuthMiddleware(logger.Logger)) brand := system.Group("/brand") { brand.POST("/list", e.ErrorWrapper(hs.BrandList)) brand.POST("/info", e.ErrorWrapper(hs.BrandInfo)) brand.POST("/add", e.ErrorWrapper(hs.AddBrand)) brand.POST("/edit", e.ErrorWrapper(hs.EditBrand)) brand.POST("/delete", e.ErrorWrapper(hs.DeleteBrand)) } node := system.Group("/node") { node.POST("/list", e.ErrorWrapper(hs.NodeList)) node.POST("/info", e.ErrorWrapper(hs.NodeInfo)) node.POST("/edit", e.ErrorWrapper(hs.EditNode)) node.POST("/state", e.ErrorWrapper(hs.NodeState)) node.POST("/last", e.ErrorWrapper(hs.NodeLastState)) } } task := r.Group("/task") { task.Use(middleware.JwtAuthMiddleware(logger.Logger)) task.POST("/list", e.ErrorWrapper(hs.TaskList)) task.POST("/add", e.ErrorWrapper(hs.AddTask)) task.POST("/reRun", e.ErrorWrapper(hs.ReRunTask)) task.POST("/info", e.ErrorWrapper(hs.TaskInfo)) task.POST("/result", e.ErrorWrapper(hs.TaskResult)) task.POST("/log", e.ErrorWrapper(hs.TaskLog)) task.GET("/event", func(c *gin.Context) { //us, _ := c.Get("operatorUser") //userInfo := us.(*m.SystemUser) mq.AddChannel(fmt.Sprintf("%d", 1)) c.Writer.Header().Set("Content-Type", "text/event-stream") c.Writer.Header().Set("Cache-Control", "no-cache") c.Writer.Header().Set("Connection", "keep-alive") w := c.Writer flusher, _ := w.(http.Flusher) closeNotify := c.Request.Context().Done() go func() { <-closeNotify delete(mq.ChannelsMap, fmt.Sprintf("%d", 1)) logging.L().Info("SSE close for user = " + fmt.Sprintf("%d", 1)) return }() _, _ = fmt.Fprintf(w, "data: %s\n\n", "--ping--") flusher.Flush() for msg := range mq.ChannelsMap[fmt.Sprintf("%d", 1)] { _, _ = fmt.Fprintf(w, "data: %s\n\n", msg) flusher.Flush() } }) } disease := r.Group("/disease") { disease.Use(middleware.JwtAuthMiddleware(logger.Logger)) disease.POST("/list", e.ErrorWrapper(hs.DiseaseList)) diseaseType := disease.Group("/type") { diseaseType.POST("/list", e.ErrorWrapper(hs.DiseaseTypeList)) diseaseType.POST("/add", e.ErrorWrapper(hs.AddDiseaseType)) diseaseType.POST("/edit", e.ErrorWrapper(hs.EditDiseaseType)) diseaseType.POST("/delete", e.ErrorWrapper(hs.DeleteDiseaseType)) } } dataset := r.Group("/dataset") { dataset.Use(middleware.JwtAuthMiddleware(logger.Logger)) dataset.POST("/ownerList", e.ErrorWrapper(hs.GetOwnerProjectList)) dataset.POST("/list", e.ErrorWrapper(hs.DatasetList)) dataset.POST("/import", e.ErrorWrapper(hs.ImportDataset)) dataset.POST("/info", e.ErrorWrapper(hs.DatasetInfo)) } report := r.Group("/report") { report.Use(middleware.JwtAuthMiddleware(logger.Logger)) report.POST("/list", e.ErrorWrapper(hs.ReportList)) report.POST("/generate", e.ErrorWrapper(hs.GenerateReport)) //report.POST("/view", e.ErrorWrapper(hs.ViewReport)) } } return root }