feat: 更新租户和订单相关功能,添加租户成员列表接口,优化数据处理和前端展示

This commit is contained in:
2025-12-23 23:38:05 +08:00
parent bcb8c822f1
commit 26e4279f1e
10 changed files with 750 additions and 34 deletions

View File

@@ -2,6 +2,7 @@ package dto
import (
"errors"
"strings"
"time"
"quyun/v2/app/requests"
@@ -10,19 +11,59 @@ import (
)
type TenantFilter struct {
requests.Pagination
requests.SortQueryFilter
// 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"`
UserBalance int64 `json:"user_balance"`
StatusDescription string `json:"status_description"`
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 {