// Code generated by hertz generator. package space import ( "cn/oneao/base-go/biz/router/middleware" "cn/oneao/base-go/db" "cn/oneao/base-go/db/repo" "cn/oneao/base-go/utils" "cn/oneao/base-go/utils/errorx" "cn/oneao/base-go/utils/idgen" "cn/oneao/base-go/utils/response" "context" space "cn/oneao/base-go/biz/model/space" "github.com/cloudwego/hertz/pkg/app" "github.com/cloudwego/hertz/pkg/protocol/consts" ) // InsertSpace . // @router /space/insert [POST] func InsertSpace(ctx context.Context, c *app.RequestContext) { var err error var req space.InsertSpaceParams err = c.BindAndValidate(&req) if err != nil { c.String(consts.StatusBadRequest, err.Error()) return } userID := middleware.GetUserID(ctx) // 检查该用户是否已经加入空间了 _, err = db.Queries.GetSpaceByUserId(ctx, userID) if err != nil { if errorx.IsNotFound(err) { // 忽略 } else { errorx.AddError(c, err) return } } else { response.Fail(c).Message("请先退出已加入的空间").Send() return } // 生成邀请码 var inviteCode string for { // 生成邀请码 code, err := utils.GenerateCode(6) if err != nil { errorx.AddError(c, err) return } // 检查数据库是否存在 _, err = db.Queries.GetSpaceByInviteCode(ctx, code) if err != nil { if errorx.IsNotFound(err) { // 不存在,唯一,直接使用 inviteCode = code break } else { // 系统错误 errorx.AddError(c, err) return } } // 如果存在,继续循环重新生成 } // 创建空间 spaceId := idgen.NextId() params := repo.InsertSpaceParams{ ID: spaceId, InviteCode: inviteCode, } err = db.Queries.InsertSpace(ctx, params) if err != nil { errorx.AddError(c, err) return } var resp space.InsertSpaceResult resp.Id = spaceId resp.InviteCode = inviteCode response.Success(c).Data(resp).Send() }