69be4bcb82
Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.6 KiB
Go
63 lines
2.6 KiB
Go
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
|
|
}
|