package admin import ( "net/http" "bindbox-game/internal/code" "bindbox-game/internal/pkg/core" "bindbox-game/internal/pkg/validation" guildsvc "bindbox-game/internal/service/guild" ) type createGuildRequest struct { Name string `json:"name" binding:"required"` OwnerID int64 `json:"owner_id" binding:"required"` Description string `json:"description"` JoinMode int32 `json:"join_mode"` ConsumeLimit int64 `json:"consume_limit"` AvatarURL string `json:"avatar_url"` IsOpen int32 `json:"is_open"` } type createGuildResponse struct { Message string `json:"message"` } // CreateGuild 创建工会 // @Summary 创建工会 // @Description 创建工会并将首位成员设为会长 // @Tags 管理端.工会 // @Accept json // @Produce json // @Param RequestBody body createGuildRequest true "请求参数" // @Success 200 {object} createGuildResponse // @Failure 400 {object} code.Failure // @Router /api/admin/guilds [post] // @Security LoginVerifyToken func (h *handler) CreateGuild() core.HandlerFunc { return func(ctx core.Context) { req := new(createGuildRequest) res := new(createGuildResponse) if err := ctx.ShouldBindJSON(req); err != nil { ctx.AbortWithError(core.Error(http.StatusBadRequest, code.ParamBindError, validation.Error(err))) return } if ctx.SessionUserInfo().IsSuper != 1 { ctx.AbortWithError(core.Error(http.StatusBadRequest, code.CreateGuildError, "禁止操作")) return } _, err := h.guild.CreateGuild(ctx.RequestContext(), guildsvc.CreateGuildInput{ Name: req.Name, OwnerID: req.OwnerID, Description: req.Description, JoinMode: req.JoinMode, ConsumeLimit: req.ConsumeLimit, AvatarURL: req.AvatarURL, IsOpen: req.IsOpen, }) if err != nil { ctx.AbortWithError(core.Error(http.StatusBadRequest, code.CreateGuildError, err.Error())) return } res.Message = "操作成功" ctx.Payload(res) } }