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/dto" "joylink.club/bj-rtsts-server/middleware" "joylink.club/bj-rtsts-server/service" ) func InitProjectLinkRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { authed := api.Group("/v1/projectLink").Use(authMiddleware.MiddlewareFunc(), middleware.PermissMiddleware) authed.GET("/info/:id", queryProjectLinkInfo) authed.GET("/mapInfo/trainSize/:id", queryTrainSizeByMapId) authed.GET("/project/trainSize/:id", queryTrainSizeByPId) authed.POST("", saveProjectLinkInfo) } // 查询项目的所有关联信息 // // @Summary 查询项目的所有关联信息 // // @Security JwtAuth // // @Description 查询项目的所有关联信息 // @Tags 项目关联信息Api // @Accept json // @Produce json // @Param id path int true "项目ID" // @Success 200 {object} dto.ProjectLinkRspDto // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/projectLink/info/{id} [get] func queryProjectLinkInfo(c *gin.Context) { id, exist := c.Params.Get("id") if !exist { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: "必要参数id不存在"}) } zap.S().Debug("传入参数id为" + id) int64Id, _ := strconv.ParseInt(id, 10, 64) c.JSON(http.StatusOK, service.QueryProjectLinkInfo(int32(int64Id))) } // 通过项目ID查询项目的关联列车尺寸信息 // // @Summary 通过项目ID查询项目的关联列车尺寸信息 // // @Security JwtAuth // // @Description 通过项目ID查询项目的关联列车尺寸信息 // @Tags 项目关联信息Api // @Accept json // @Produce json // @Param id path int true "地图ID" // @Success 200 {object} dto.TrainSizeDto // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/projectLink/project/trainSize/{id} [get] func queryTrainSizeByMapId(c *gin.Context) { id, exist := c.Params.Get("id") if !exist { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: "必要参数id不存在"}) } zap.S().Debug("传入参数id为" + id) int64Id, _ := strconv.ParseInt(id, 10, 64) c.JSON(http.StatusOK, service.QueryTrainSizeByMapId(int32(int64Id))) } // 通过地图ID查询项目的关联列车尺寸信息 // // @Summary 通过地图ID查询项目的关联列车尺寸信息 // // @Security JwtAuth // // @Description 通过地图ID查询项目的关联列车尺寸信息 // @Tags 项目关联信息Api // @Accept json // @Produce json // @Param id path int true "地图ID" // @Success 200 {object} dto.TrainSizeDto // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/projectLink/mapInfo/trainSize/{id} [get] func queryTrainSizeByPId(c *gin.Context) { id, exist := c.Params.Get("id") if !exist { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: "必要参数id不存在"}) } zap.S().Debug("传入参数id为" + id) int64Id, _ := strconv.ParseInt(id, 10, 64) trainSizeArr := service.QueryProjectTrainSize(int32(int64Id)) c.JSON(http.StatusOK, dto.ConvertFromTrainSizeDto(trainSizeArr)) } // 保存项目的所有关联信息 // // @Summary 保存项目的所有关联信息 // // @Security JwtAuth // // @Description 保存项目的所有关联信息 // @Tags 项目关联信息Api // @Accept json // @Produce json // @Param projectLinkReqDto query dto.ProjectLinkReqDto true "关联关系实体" // @Success 200 {object} bool // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/projectLink [post] func saveProjectLinkInfo(c *gin.Context) { req := dto.ProjectLinkReqDto{} if err := c.ShouldBind(&req); err != nil { panic(dto.ErrorDto{Code: dto.ArgumentParseError, Message: err.Error()}) } service.UpdateProjectLink(&req) c.JSON(http.StatusOK, true) }