Files
sms-server-cli/send.go
T
2026-06-05 15:03:55 +08:00

68 lines
2.9 KiB
Go

package smscli
import (
"context"
"fmt"
)
// ──────────────────────────────────────────────
// 用户接口
// ──────────────────────────────────────────────
// SendBatch 批量发送短信(相同内容发送到多个号码)。
// POST /api/sms/send/batch
func (c *Client) SendBatch(ctx context.Context, req SendBatchReq) (SendResp, error) {
return post[SendResp](c, ctx, "/api/sms/send/batch", req)
}
// SendMulti 个性化群发短信(每个号码使用不同参数)。
// POST /api/sms/send/multi
func (c *Client) SendMulti(ctx context.Context, req SendMultiReq) (SendResp, error) {
return post[SendResp](c, ctx, "/api/sms/send/multi", req)
}
// ListSendRecords 获取当前用户的发送记录列表(分页,支持多条件筛选)。
// GET /api/sms/send/record
func (c *Client) ListSendRecords(ctx context.Context, q SendRecordQuery) (PaginationResult[SmsSendRecord], error) {
params := mergeParams(paginationParams(q.PaginationQuery), map[string]interface{}{
"signature_id": q.SignatureID,
"template_id": q.TemplateID,
"phone": q.Phone,
"status": q.Status,
"start_time": q.StartTime,
"end_time": q.EndTime,
})
return get[PaginationResult[SmsSendRecord]](c, ctx, "/api/sms/send/record", buildQuery(params))
}
// GetSendStatus 根据消息 ID 查询发送状态。
// GET /api/sms/send/status/:msgId
func (c *Client) GetSendStatus(ctx context.Context, msgID string) (SmsSendRecord, error) {
return get[SmsSendRecord](c, ctx, fmt.Sprintf("/api/sms/send/status/%s", msgID), nil)
}
// ──────────────────────────────────────────────
// 管理员接口
// ──────────────────────────────────────────────
// AdminListSendRecords 管理员获取发送记录列表,可按 UserID 及其他条件筛选。
// GET /api/sms/admin/send/record
func (c *Client) AdminListSendRecords(ctx context.Context, q AdminSendRecordQuery) (PaginationResult[SmsSendRecord], error) {
params := mergeParams(paginationParams(q.PaginationQuery), map[string]interface{}{
"user_id": q.UserID,
"signature_id": q.SignatureID,
"template_id": q.TemplateID,
"phone": q.Phone,
"status": q.Status,
"start_time": q.StartTime,
"end_time": q.EndTime,
})
return get[PaginationResult[SmsSendRecord]](c, ctx, "/api/sms/admin/send/record", buildQuery(params))
}
// AdminGetSendStatus 管理员根据消息 ID 查询发送状态。
// GET /api/sms/admin/send/status/:msgId
func (c *Client) AdminGetSendStatus(ctx context.Context, msgID string) (SmsSendRecord, error) {
return get[SmsSendRecord](c, ctx, fmt.Sprintf("/api/sms/admin/send/status/%s", msgID), nil)
}