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) }