package tenantjoin import ( "quyun/v2/app/errorx" "quyun/v2/app/http/tenantjoin/dto" "quyun/v2/app/services" "quyun/v2/database/models" "quyun/v2/providers/jwt" "github.com/gofiber/fiber/v3" log "github.com/sirupsen/logrus" ) // join 提供“非成员加入租户”的相关接口(邀请码加入 / 申请加入)。 // // @provider type join struct{} // joinByInvite // // @Summary 通过邀请码加入租户 // @Tags TenantJoin // @Accept json // @Produce json // @Param tenantCode path string true "Tenant Code" // @Param form body dto.JoinByInviteForm true "Form" // @Success 200 {object} models.TenantUser // // @Router /t/:tenantCode/v1/join/invite [post] // @Bind tenant local key(tenant) // @Bind claims local key(claims) // @Bind form body func (*join) joinByInvite( ctx fiber.Ctx, tenant *models.Tenant, claims *jwt.Claims, form *dto.JoinByInviteForm, ) (*models.TenantUser, error) { if tenant == nil || claims == nil { return nil, errorx.ErrInternalError.WithMsg("context missing") } if form == nil { return nil, errorx.ErrInvalidParameter } log.WithFields(log.Fields{ "tenant_id": tenant.ID, "user_id": claims.UserID, }).Info("tenantjoin.join_by_invite") return services.Tenant.JoinByInvite(ctx.Context(), tenant.ID, claims.UserID, form.InviteCode) } // createJoinRequest // // @Summary 提交加入租户申请 // @Tags TenantJoin // @Accept json // @Produce json // @Param tenantCode path string true "Tenant Code" // @Param form body dto.JoinRequestCreateForm true "Form" // @Success 200 {object} models.TenantJoinRequest // // @Router /t/:tenantCode/v1/join/request [post] // @Bind tenant local key(tenant) // @Bind claims local key(claims) // @Bind form body func (*join) createJoinRequest( ctx fiber.Ctx, tenant *models.Tenant, claims *jwt.Claims, form *dto.JoinRequestCreateForm, ) (*models.TenantJoinRequest, error) { if tenant == nil || claims == nil { return nil, errorx.ErrInternalError.WithMsg("context missing") } if form == nil { return nil, errorx.ErrInvalidParameter } log.WithFields(log.Fields{ "tenant_id": tenant.ID, "user_id": claims.UserID, }).Info("tenantjoin.create_join_request") return services.Tenant.CreateJoinRequest(ctx.Context(), tenant.ID, claims.UserID, form) }