Files
quyun-v2/backend/app/http/super/dto/tenant.go

93 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package dto
import (
"errors"
"strings"
"time"
"quyun/v2/app/requests"
"quyun/v2/database/models"
"quyun/v2/pkg/consts"
)
type TenantFilter struct {
// Pagination page/limit.
requests.Pagination `json:",inline" query:",inline"`
// SortQueryFilter defines asc/desc ordering.
requests.SortQueryFilter `json:",inline" query:",inline"`
Name *string `json:"name,omitempty" query:"name"`
Code *string `json:"code,omitempty" query:"code"`
ID *int64 `json:"id,omitempty" query:"id"`
UserID *int64 `json:"user_id,omitempty" query:"user_id"`
Status *consts.TenantStatus `json:"status,omitempty" query:"status"`
ExpiredAtFrom *time.Time `json:"expired_at_from,omitempty" query:"expired_at_from"`
ExpiredAtTo *time.Time `json:"expired_at_to,omitempty" query:"expired_at_to"`
CreatedAtFrom *time.Time `json:"created_at_from,omitempty" query:"created_at_from"`
CreatedAtTo *time.Time `json:"created_at_to,omitempty" query:"created_at_to"`
}
func (f *TenantFilter) NameTrimmed() string {
if f == nil || f.Name == nil {
return ""
}
return strings.TrimSpace(*f.Name)
}
func (f *TenantFilter) CodeTrimmed() string {
if f == nil || f.Code == nil {
return ""
}
return strings.ToLower(strings.TrimSpace(*f.Code))
}
type TenantItem struct {
*models.Tenant
UserCount int64 `json:"user_count"`
// IncomeAmountPaidSum 累计收入金额单位CNY按 orders 聚合得到的已支付净收入(不含退款中/已退款订单)。
IncomeAmountPaidSum int64 `json:"income_amount_paid_sum"`
StatusDescription string `json:"status_description"`
Owner *TenantOwnerUserLite `json:"owner,omitempty"`
AdminUsers []*TenantAdminUserLite `json:"admin_users,omitempty"`
}
type TenantOwnerUserLite struct {
ID int64 `json:"id"`
Username string `json:"username"`
}
type TenantAdminUserLite struct {
ID int64 `json:"id"`
Username string `json:"username"`
}
type TenantCreateForm struct {
Code string `json:"code" validate:"required,max=64"`
Name string `json:"name" validate:"required,max=128"`
AdminUserID int64 `json:"admin_user_id" validate:"required,gt=0"`
// Duration 租户有效期(天),从“创建时刻”起算;与续期接口保持一致。
Duration int `json:"duration" validate:"required,oneof=7 30 90 180 365"`
}
type TenantExpireUpdateForm struct {
Duration int `json:"duration" validate:"required,oneof=7 30 90 180 365"`
}
// Duration
func (form *TenantExpireUpdateForm) ParseDuration() (time.Duration, error) {
duration := time.Duration(form.Duration) * 24 * time.Hour
if duration == 0 {
return 0, errors.New("invalid parsed duration")
}
return duration, nil
}
type TenantStatusUpdateForm struct {
Status consts.TenantStatus `json:"status" validate:"required,oneof=normal disabled"`
}