package smscli import ( "context" "fmt" ) // ────────────────────────────────────────────── // 用户接口 // ────────────────────────────────────────────── // ListQuotas 获取当前用户的额度列表(分页)。 // GET /api/sms/quota/list func (c *Client) ListQuotas(ctx context.Context, q PaginationQuery) (PaginationResult[SmsQuota], error) { params := paginationParams(q) return get[PaginationResult[SmsQuota]](c, ctx, "/api/sms/quota/list", buildQuery(params)) } // GetQuotaSummary 获取当前用户的额度汇总。 // GET /api/sms/quota/summary func (c *Client) GetQuotaSummary(ctx context.Context) (QuotaSummary, error) { return get[QuotaSummary](c, ctx, "/api/sms/quota/summary", nil) } // ────────────────────────────────────────────── // 管理员接口 // ────────────────────────────────────────────── // AdminListQuotas 管理员获取额度列表,可按 UserID 筛选。 // GET /api/sms/admin/quota/list func (c *Client) AdminListQuotas(ctx context.Context, q QuotaListQuery) (PaginationResult[SmsQuota], error) { params := mergeParams(paginationParams(q.PaginationQuery), map[string]interface{}{ "user_id": q.UserID, }) return get[PaginationResult[SmsQuota]](c, ctx, "/api/sms/admin/quota/list", buildQuery(params)) } // AdminGetQuotaSummary 管理员获取指定用户的额度汇总。 // GET /api/sms/admin/quota/summary func (c *Client) AdminGetQuotaSummary(ctx context.Context, userID uint) (QuotaSummary, error) { q := buildQuery(map[string]interface{}{"user_id": userID}) return get[QuotaSummary](c, ctx, "/api/sms/admin/quota/summary", q) } // CreateQuota 管理员创建额度。 // POST /api/sms/admin/quota func (c *Client) CreateQuota(ctx context.Context, req CreateQuotaReq) (SmsQuota, error) { return post[SmsQuota](c, ctx, "/api/sms/admin/quota", req) } // UpdateQuota 管理员更新指定额度。 // PUT /api/sms/admin/quota/:id func (c *Client) UpdateQuota(ctx context.Context, id uint, req UpdateQuotaReq) (SmsQuota, error) { return put[SmsQuota](c, ctx, fmt.Sprintf("/api/sms/admin/quota/%d", id), req) } // DeleteQuota 管理员删除指定额度。 // DELETE /api/sms/admin/quota/:id func (c *Client) DeleteQuota(ctx context.Context, id uint) error { _, err := del[any](c, ctx, fmt.Sprintf("/api/sms/admin/quota/%d", id)) return err }