tenant: add invites and join requests

This commit is contained in:
2025-12-18 18:27:23 +08:00
parent 462bde351d
commit ec4506fd2d
28 changed files with 5206 additions and 201 deletions

View File

@@ -0,0 +1,66 @@
package dto
import (
"strings"
"time"
"quyun/v2/app/requests"
"quyun/v2/pkg/consts"
)
// AdminTenantInviteCreateForm 租户管理员创建邀请码的请求参数。
type AdminTenantInviteCreateForm struct {
// Code 邀请码(可选):为空时由后端生成;建议只包含数字/字母,便于人工输入。
Code string `json:"code"`
// MaxUses 最大可使用次数可选0 表示不限次数;大于 0 时用尽后自动失效。
MaxUses *int `json:"max_uses"`
// ExpiresAt 过期时间(可选):为空表示不过期;到期后不可再使用。
ExpiresAt *time.Time `json:"expires_at"`
// Remark 备注(可选):用于审计记录生成目的/投放渠道等。
Remark string `json:"remark"`
}
// AdminTenantInviteDisableForm 租户管理员禁用邀请码的请求参数。
type AdminTenantInviteDisableForm struct {
// Reason 禁用原因(可选):用于审计与追溯。
Reason string `json:"reason"`
}
// AdminTenantInviteListFilter 租户管理员分页查询邀请码列表的过滤条件。
type AdminTenantInviteListFilter struct {
requests.Pagination
// Status 按状态过滤可选active/disabled/expired。
Status *consts.TenantInviteStatus `query:"status" json:"status"`
// Code 按邀请码模糊过滤可选支持部分匹配like
Code *string `query:"code" json:"code"`
}
// CodeTrimmed 对 code 进行空白与大小写处理,便于统一查询。
func (f *AdminTenantInviteListFilter) CodeTrimmed() string {
if f == nil || f.Code == nil {
return ""
}
return strings.ToLower(strings.TrimSpace(*f.Code))
}
// AdminTenantJoinRequestListFilter 租户管理员分页查询加入申请的过滤条件。
type AdminTenantJoinRequestListFilter struct {
requests.Pagination
// UserID 按申请人用户ID过滤可选
UserID *int64 `query:"user_id" json:"user_id"`
// Status 按申请状态过滤可选pending/approved/rejected。
Status *consts.TenantJoinRequestStatus `query:"status" json:"status"`
}
// AdminTenantJoinRequestDecideForm 租户管理员通过/拒绝加入申请的请求参数。
type AdminTenantJoinRequestDecideForm struct {
// Reason 审核说明(可选):用于审计记录通过/拒绝原因。
Reason string `json:"reason"`
}