package emailcli import ( "context" "fmt" ) // CreateQuota 创建配额。QuotaType=1 为总量配额(需填 ExpireAt), // QuotaType=2 为周期配额(需填 CycleUnit、CycleResetAt)。 // // POST /api/v1/quotas ServiceAuth func (c *Client) CreateQuota(ctx context.Context, req CreateQuotaReq) (*MailQuota, error) { return post[*MailQuota](c, ctx, "/api/v1/quotas", req) } // ListQuotas 分页查询配额,支持按账号、用户、状态过滤。 // // GET /api/v1/quotas?page=&page_size=&account_id=&user_id=&status= ServiceAuth func (c *Client) ListQuotas(ctx context.Context, q QuotaListQuery) (*PaginationResult[MailQuota], error) { params := mergeParams(paginationParams(q.PaginationQuery), map[string]interface{}{ "account_id": q.AccountID, "user_id": q.UserID, "status": q.Status, }) return get[*PaginationResult[MailQuota]](c, ctx, "/api/v1/quotas", buildQuery(params)) } // GetQuotaSummary 获取指定账号的配额汇总(总量/已用/剩余)。 // // GET /api/v1/quotas/summary/{accountID} ServiceAuth func (c *Client) GetQuotaSummary(ctx context.Context, accountID uint) (*QuotaSummary, error) { return get[*QuotaSummary](c, ctx, fmt.Sprintf("/api/v1/quotas/summary/%d", accountID), nil) } // UpdateQuota 局部更新配额。可更新 Total、Status、ExpireAt、CycleUnit、CycleResetAt。 // // PUT /api/v1/quotas/{id} ServiceAuth func (c *Client) UpdateQuota(ctx context.Context, id uint, req UpdateQuotaReq) (*MailQuota, error) { return put[*MailQuota](c, ctx, fmt.Sprintf("/api/v1/quotas/%d", id), req) } // DeleteQuota 删除配额(软删除)。 // // DELETE /api/v1/quotas/{id} ServiceAuth func (c *Client) DeleteQuota(ctx context.Context, id uint) error { _, err := del[any](c, ctx, fmt.Sprintf("/api/v1/quotas/%d", id)) return err }