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