Files
29WxOrder/OrderSupportTicket/Models/Api/WorkOrderContracts.cs
T
2026-10-20 17:03:23 +08:00

719 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections.Generic;
using Newtonsoft.Json;
namespace OrderSupportTicket.Models.Api;
/// <summary>
/// 创建工单请求。
/// </summary>
internal sealed class CreateWorkOrderRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
////[JsonProperty("purchaseAccount")]
public string PurchaseAccount { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 微信订单号,保持为数字字符串。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 首条问题描述,长度 1~2000 字。
/// </summary>
////[JsonProperty("description")]
public string Description { get; set; }
/// <summary>
/// 可选的创建幂等编号。
/// </summary>
////[JsonProperty("clientRequestId", NullValueHandling = NullValueHandling.Ignore)]
public string ClientRequestId { get; set; }
}
/// <summary>
/// 工单摘要列表请求。
/// </summary>
internal sealed class ListWorkOrdersRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
////[JsonProperty("purchaseAccount")]
public string PurchaseAccount { get; set; }
/// <summary>
/// 要查询的店铺 APPID 数组。
/// </summary>
////[JsonProperty("appIds")]
public IList<string> AppIds { get; set; }
/// <summary>
/// 可选的微信订单号精确筛选条件。
/// </summary>
////[JsonProperty("wechatOrderId", NullValueHandling = NullValueHandling.Ignore)]
public string WechatOrderId { get; set; }
/// <summary>
/// 可选的工单状态筛选条件。
/// </summary>
////[JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
public string Status { get; set; }
/// <summary>
/// 本页最大返回数量,范围 1~100。
/// </summary>
////[JsonProperty("limit")]
public int Limit { get; set; }
/// <summary>
/// 下一页游标,使用服务端返回的原始值。
/// </summary>
////[JsonProperty("cursor", NullValueHandling = NullValueHandling.Ignore)]
public string Cursor { get; set; }
}
/// <summary>
/// 查询订单留言板请求。
/// </summary>
internal sealed class GetMessagesRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
////[JsonProperty("purchaseAccount")]
public string PurchaseAccount { get; set; }
/// <summary>
/// 微信订单号,保持为数字字符串。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 本页最大返回数量,范围 1~100。
/// </summary>
////[JsonProperty("limit")]
public int Limit { get; set; }
/// <summary>
/// 加载更早留言时使用的 before 游标。
/// </summary>
////[JsonProperty("before", NullValueHandling = NullValueHandling.Ignore)]
public string Before { get; set; }
}
/// <summary>
/// 提交客户留言请求。
/// </summary>
internal sealed class SendMessageRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
////[JsonProperty("purchaseAccount")]
public string PurchaseAccount { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 留言幂等编号。
/// </summary>
////[JsonProperty("clientMessageId")]
public string ClientMessageId { get; set; }
/// <summary>
/// 留言正文;有图片附件时可为空。
/// </summary>
////[JsonProperty("text")]
public string Text { get; set; }
/// <summary>
/// 图片上传回执,最多 3 个;无图片时为 null,序列化时省略。
/// </summary>
////[JsonProperty("attachments")]
public IList<MessageAttachmentReceipt> Attachments { get; set; }
}
/// <summary>
/// 标记留言已读请求。
/// </summary>
internal sealed class MarkReadRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
////[JsonProperty("purchaseAccount")]
public string PurchaseAccount { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 已读到的最大留言序号。
/// </summary>
////[JsonProperty("throughSequenceNo")]
public int ThroughSequenceNo { get; set; }
}
/// <summary>
/// 申请图片直传凭证请求。
/// </summary>
internal sealed class CreateImageUploadTicketRequest
{
/// <summary>
/// 拍单账号。
/// </summary>
public string PurchaseAccount { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
public string AppId { get; set; }
/// <summary>
/// 原始文件名,1~180 字符。
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 精确的图片 MIME 类型:image/jpeg、image/png 或 image/webp。
/// </summary>
public string MimeType { get; set; }
/// <summary>
/// 图片实际字节数,1~5,242,880。
/// </summary>
public long Size { get; set; }
/// <summary>
/// 可选的上传标识;省略时由服务端生成。
/// </summary>
public string RequestId { get; set; }
}
/// <summary>
/// 图片直传凭证响应。
/// </summary>
public sealed class ImageUploadTicketResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
public bool Success { get; set; }
/// <summary>
/// 本次上传的凭证信息。
/// </summary>
public ImageUploadTicketDto Upload { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
public string AppId { get; set; }
/// <summary>
/// 微信订单号。
/// </summary>
public string WechatOrderId { get; set; }
/// <summary>
/// 接口返回的身份校验标记,当前恒为 false。
/// </summary>
public bool IdentityVerified { get; set; }
/// <summary>
/// 本次 HTTP 请求的排查编号;不是 upload.requestId。
/// </summary>
public string RequestId { get; set; }
}
/// <summary>
/// 服务端签发的单次图片直传凭证。
/// </summary>
public sealed class ImageUploadTicketDto
{
/// <summary>
/// 上传模式,文档约定为 single。
/// </summary>
public string Mode { get; set; }
/// <summary>
/// 上传 HTTP 方法,文档约定为 PUT。
/// </summary>
public string Method { get; set; }
/// <summary>
/// 本次图片上传标识。
/// </summary>
public string RequestId { get; set; }
/// <summary>
/// 服务端签发的上传凭证,需原样提交留言接口。
/// </summary>
public string Ticket { get; set; }
/// <summary>
/// 带短时签名的 COS 上传地址。
/// </summary>
public string UploadUrl { get; set; }
/// <summary>
/// 直传时必须原样携带的请求头。
/// </summary>
public Dictionary<string, string> Headers { get; set; }
/// <summary>
/// 上传凭证过期时间。
/// </summary>
public string ExpiresAt { get; set; }
}
/// <summary>
/// 图片直传完成后提交给留言接口的回执。
/// </summary>
public sealed class MessageAttachmentReceipt
{
/// <summary>
/// 原样使用 upload.requestId。
/// </summary>
public string RequestId { get; set; }
/// <summary>
/// 原样使用 upload.ticket。
/// </summary>
public string Ticket { get; set; }
/// <summary>
/// 可选的 COS 响应 ETag。
/// </summary>
public string Etag { get; set; }
}
/// <summary>
/// 留言中的公开图片附件。
/// </summary>
public sealed class TicketAttachmentDto
{
/// <summary>
/// 附件唯一 ID。
/// </summary>
public string Id { get; set; }
/// <summary>
/// 原始文件名。
/// </summary>
public string OriginalName { get; set; }
/// <summary>
/// 图片 MIME 类型。
/// </summary>
public string ContentType { get; set; }
/// <summary>
/// 图片字节数。
/// </summary>
public long ByteSize { get; set; }
/// <summary>
/// 图片创建时间。
/// </summary>
public string CreatedAt { get; set; }
/// <summary>
/// 短时读取地址;暂不可用时为 null。
/// </summary>
public string ReadUrl { get; set; }
}
/// <summary>
/// 工单摘要分页响应。
/// </summary>
public sealed class WorkOrderListResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 当前页工单摘要。
/// </summary>
////[JsonProperty("items")]
public List<WorkOrderSummaryDto> Items { get; set; }
/// <summary>
/// 是否还有下一页。
/// </summary>
////[JsonProperty("hasMore")]
public bool HasMore { get; set; }
/// <summary>
/// 下一页游标。
/// </summary>
////[JsonProperty("nextCursor")]
public string NextCursor { get; set; }
/// <summary>
/// 接口返回的身份校验标记,当前恒为 false。
/// </summary>
////[JsonProperty("identityVerified")]
public bool IdentityVerified { get; set; }
}
/// <summary>
/// 单个订单的工单摘要。
/// </summary>
public sealed class WorkOrderSummaryDto
{
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 微信订单号,保持为数字字符串。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 工单状态编码。
/// </summary>
////[JsonProperty("status")]
public string Status { get; set; }
/// <summary>
/// 工单状态中文文本。
/// </summary>
////[JsonProperty("statusText")]
public string StatusText { get; set; }
/// <summary>
/// 工单创建时间,由接口以 ISO 8601 字符串传输。
/// </summary>
////[JsonProperty("createdAt")]
public string CreatedAt { get; set; }
/// <summary>
/// 工单更新时间,由接口以 ISO 8601 字符串传输。
/// </summary>
////[JsonProperty("updatedAt")]
public string UpdatedAt { get; set; }
/// <summary>
/// 最近一条公开留言时间,由接口以 ISO 8601 字符串传输。
/// </summary>
////[JsonProperty("lastMessageAt")]
public string LastMessageAt { get; set; }
/// <summary>
/// 最近一次客服正式回复时间;从未回复时为 null。
/// </summary>
////[JsonProperty("lastReplyAt")]
public string LastReplyAt { get; set; }
/// <summary>
/// 最近一条公开留言的发送方类型。
/// </summary>
////[JsonProperty("lastSenderType")]
public string LastSenderType { get; set; }
/// <summary>
/// 未读留言数量。
/// </summary>
////[JsonProperty("unreadCount")]
public int UnreadCount { get; set; }
/// <summary>
/// 工单版本号,按接口返回的字符串原样保存。
/// </summary>
////[JsonProperty("version")]
public string Version { get; set; }
}
/// <summary>
/// 订单留言板响应。
/// </summary>
public sealed class WorkOrderMessagesResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 微信订单号。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 当前页公开留言,按 sequenceNo 升序排列。
/// </summary>
////[JsonProperty("items")]
public List<TicketMessageDto> Items { get; set; }
/// <summary>
/// 是否还有更早的留言。
/// </summary>
////[JsonProperty("hasMore")]
public bool HasMore { get; set; }
/// <summary>
/// 加载更早留言时使用的 before 游标。
/// </summary>
////[JsonProperty("nextBefore")]
public string NextBefore { get; set; }
/// <summary>
/// 接口返回的身份校验标记,当前恒为 false。
/// </summary>
////[JsonProperty("identityVerified")]
public bool IdentityVerified { get; set; }
}
/// <summary>
/// 单条公开留言。
/// </summary>
public sealed class TicketMessageDto
{
/// <summary>
/// 消息唯一 ID,用于去重。
/// </summary>
////[JsonProperty("messageId")]
public string MessageId { get; set; }
/// <summary>
/// 工单内连续递增的消息序号。
/// </summary>
////[JsonProperty("sequenceNo")]
public int SequenceNo { get; set; }
/// <summary>
/// 发送方类型,例如 customer。
/// </summary>
////[JsonProperty("senderType")]
public string SenderType { get; set; }
/// <summary>
/// 发送方显示名称。
/// </summary>
////[JsonProperty("senderName")]
public string SenderName { get; set; }
/// <summary>
/// 留言正文;消息撤回后为空字符串。
/// </summary>
////[JsonProperty("text")]
public string Text { get; set; }
/// <summary>
/// 消息是否已撤回。
/// </summary>
////[JsonProperty("recalled")]
public bool Recalled { get; set; }
/// <summary>
/// 消息发送时间,由接口以 ISO 8601 字符串传输。
/// </summary>
////[JsonProperty("createdAt")]
public string CreatedAt { get; set; }
/// <summary>
/// 公开图片附件;无图片时为空数组。
/// </summary>
////[JsonProperty("attachments")]
public List<TicketAttachmentDto> Attachments { get; set; }
}
/// <summary>
/// 创建工单响应。
/// </summary>
public sealed class CreateWorkOrderResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 创建结果,取值 created、existing 或 reopened。
/// </summary>
////[JsonProperty("operation")]
public string Operation { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 微信订单号。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 操作后的工单状态。
/// </summary>
////[JsonProperty("status")]
public string Status { get; set; }
/// <summary>
/// 创建或重开时追加的首条消息 ID。
/// </summary>
////[JsonProperty("messageId")]
public string MessageId { get; set; }
/// <summary>
/// 操作后的工单版本号字符串。
/// </summary>
////[JsonProperty("version")]
public string Version { get; set; }
/// <summary>
/// 是否为幂等编号对应的历史回执。
/// </summary>
////[JsonProperty("replayed")]
public bool Replayed { get; set; }
/// <summary>
/// 接口返回的身份校验标记,当前恒为 false。
/// </summary>
////[JsonProperty("identityVerified")]
public bool IdentityVerified { get; set; }
}
/// <summary>
/// 提交客户留言响应。
/// </summary>
public sealed class SendMessageResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 订单所属店铺 APPID。
/// </summary>
////[JsonProperty("appId")]
public string AppId { get; set; }
/// <summary>
/// 微信订单号。
/// </summary>
////[JsonProperty("wechatOrderId")]
public string WechatOrderId { get; set; }
/// <summary>
/// 服务端正式生成的消息对象。
/// </summary>
////[JsonProperty("message")]
public TicketMessageDto Message { get; set; }
/// <summary>
/// 留言后的工单状态。
/// </summary>
////[JsonProperty("status")]
public string Status { get; set; }
/// <summary>
/// 留言后的工单版本号字符串。
/// </summary>
////[JsonProperty("version")]
public string Version { get; set; }
/// <summary>
/// 本次留言是否重新开启了已完结工单。
/// </summary>
////[JsonProperty("reopened")]
public bool Reopened { get; set; }
/// <summary>
/// 是否为幂等编号对应的历史回执。
/// </summary>
////[JsonProperty("replayed")]
public bool Replayed { get; set; }
/// <summary>
/// 接口返回的身份校验标记,当前恒为 false。
/// </summary>
////[JsonProperty("identityVerified")]
public bool IdentityVerified { get; set; }
}
/// <summary>
/// 通用成功状态响应,仅用于在解析具体业务对象前检查顶层 success。
/// </summary>
internal sealed class ApiSuccessResponse
{
/// <summary>
/// 请求是否成功。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
}
/// <summary>
/// 工单接口错误响应。
/// </summary>
internal sealed class ApiErrorResponse
{
/// <summary>
/// 请求是否成功,错误响应通常为 false。
/// </summary>
////[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 可展示给用户的错误说明。
/// </summary>
////[JsonProperty("message")]
public string Message { get; set; }
/// <summary>
/// 兼容旧接口的错误说明字段。
/// </summary>
////[JsonProperty("error")]
public string Error { get; set; }
/// <summary>
/// 服务端错误编码。
/// </summary>
////[JsonProperty("code")]
public string Code { get; set; }
}