package api import ( "net/http" "strconv" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" "go.uber.org/zap" "joylink.club/bj-rtsts-server/db/model" "joylink.club/bj-rtsts-server/dto" "joylink.club/bj-rtsts-server/dto/publishedGi" "joylink.club/bj-rtsts-server/middleware" "joylink.club/bj-rtsts-server/service" ) func InitPublishedGiRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { authed := api.Group("/v1/publishedGi").Use(authMiddleware.MiddlewareFunc(), middleware.PermissMiddleware) authed.GET("/paging", pageQueryPublishedGi) authed.GET("/list", listQueryPublishedGi) authed.GET("/:id", getPublishedGiById) authed.POST("/publish", publishFromDraft) authed.DELETE("/:id", deletePublishedGiById) authed.POST("/saveAsDrafting/:id", saveAsDraftingFromPublish) } // 分页查询发布的图形数据 // // @Summary 分页查询发布的图形数据 // // @Security JwtAuth // // @Description 可以通过名称过滤 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param pagePublishedGiReqDto query publishedGi.PublishedGiReqDto true "分页查询参数" // @Success 200 {object} dto.PageDto // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/paging [get] func pageQueryPublishedGi(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) zap.S().Debug("分页查询发布的图形数据", user) req := publishedGi.PublishedGiReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } zap.S().Debug("分页查询发布的图形数据", req) page := service.PageQueryPublishedGi(&req) c.JSON(http.StatusOK, page) } // 列表查询发布的图形数据 // // @Summary 列表查询发布的图形数据 // // @Security JwtAuth // // @Description 可以通过名称过滤 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param publishedGiListReqDto query publishedGi.PublishedGiListReqDto true "查询参数" // @Success 200 {object} []model.PublishedGi // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/list [get] func listQueryPublishedGi(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) zap.S().Debug("列表查询发布的图形数据", user) req := publishedGi.PublishedGiListReqDto{} if err := c.ShouldBindQuery(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } zap.S().Debug("列表查询发布的图形数据", req) list := service.ListQueryPublishedGi(&req) c.JSON(http.StatusOK, list) } // id 查询发布的图形数据 // // @Summary id查询发布的图形数据 // // @Security JwtAuth // // @Description 可以通过名称过滤 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param id path int true "id" // @Success 200 {object} model.PublishedGi // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/{id} [get] func getPublishedGiById(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) zap.S().Debug("id查询发布的图形数据", user) idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } zap.S().Debug("id查询发布的图形数据", id) entity, err := service.GetPublishedGiById(id) if err != nil { panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err.Error()}) } c.JSON(http.StatusOK, entity) } // 从草稿发布数据 // // @Summary 从草稿发布数据 // // @Security JwtAuth // // @Description // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param PublishReqDto query publishedGi.PublishReqDto true "查询参数" // @Success 200 // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/publish [post] func publishFromDraft(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) zap.S().Debug("发布图形数据", user) req := publishedGi.PublishReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } //todo zap.S().Debug("发布图形数据请求参数", req) service.PublishFormDraft(&req, user.(*model.User)) } // id 删除发布的图形数据 // // @Summary id删除发布的图形数据 // // @Security JwtAuth // // @Description 可以通过名称过滤 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param id path int true "id" // @Success 200 {object} nil // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/{id} [delete] func deletePublishedGiById(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) zap.S().Debug("id删除发布的图形数据", user) idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } zap.S().Debug("id查询发布的图形数据", id) service.DeletePublishedGiById(id) } // id 从发布数据拉取信息到草稿 // // @Summary 从发布数据拉取信息到草稿 // // @Security JwtAuth // // @Description 从发布数据拉取信息到草稿 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param id path int true "id" // @Param PublishReqDto query publishedGi.PublishReqDto true "要保存的名称" // @Success 200 {object} nil // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/saveAsDrafting/{id} [post] func saveAsDraftingFromPublish(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) idStr := c.Param("id") zap.S().Debugf("用户【%v】拉取发布图形数据【%s】", user, idStr) id, err := strconv.Atoi(idStr) if err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } req := publishedGi.PublishReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } service.SaveAsDraftingFromPublish(int32(id), user.(*model.User), req.Name) }