package api import ( "log/slog" "net/http" "strconv" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" "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) authed.GET("/name", getPublishedGiByName) } // 分页查询发布的图形数据 // // @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) slog.Debug("分页查询发布的图形数据", user) req := publishedGi.PublishedGiReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } slog.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) slog.Debug("列表查询发布的图形数据", user) req := publishedGi.PublishedGiListReqDto{} if err := c.ShouldBindQuery(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } slog.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) slog.Debug("id查询发布的图形数据", user) idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } slog.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) slog.Debug("发布图形数据", user) req := publishedGi.PublishReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } //todo slog.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) slog.Debug("id删除发布的图形数据", user) idStr := c.Param("id") id, err := strconv.Atoi(idStr) if err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } slog.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") slog.Debug("用户拉取发布图形数据", "userId", user, "发布图数据id", 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) } // 根据Code查询发布地图数据 // // @Summary 根据Code查询发布地图数据 // // @Security JwtAuth // // @Description 可以通过名称过滤 // @Tags 发布的图形数据Api // @Accept json // @Produce json // @Param PublishedGiSingleQueryDto query publishedGi.PublishedGiSingleQueryDto true "查询参数" // @Success 200 {object} []model.PublishedGi // @Failure 401 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/publishedGi/name [get] func getPublishedGiByName(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) slog.Debug("name查询发布的图形数据", user) param := &publishedGi.PublishedGiSingleQueryDto{} if err := c.ShouldBind(param); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } slog.Debug("name查询发布的图形数据", param.Name) entity, err := service.GetPublishedGiByName(param) if err != nil { panic(dto.ErrorDto{Code: dto.DataOperationError, Message: err.Error()}) } c.JSON(http.StatusOK, entity) }