Files
kami_backend/api/camel_oil/v1/order.go
danial 85b552eec3 feat(camel_oil): add order export to Excel functionality
- Add ExportOrder RPC method to camel_oil API and service interfaces
- Implement service logic to query orders and generate Excel file with order data
- Include card number and password fields in order export
- Create HTTP handler to stream Excel file with proper headers for download
- Handle token status update on frequent error ban (oneDay case)
- Fix order processing query to filter by status and pay status correctly
- Add new error code for one-day ban in camel_oil_api and handle in client logic
- Update order model and response to include card number and password
- Remove redundant logging of SendCaptcha request data in camel_oil_api client
- Add access control checks on ExportOrder endpoint for authorized users only
2025-12-11 20:13:52 +08:00

205 lines
12 KiB
Go
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.

package v1
import (
"kami/api/commonApi"
"kami/internal/consts"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// SubmitOrderReq 提交订单
type SubmitOrderReq struct {
g.Meta `path:"/jd-v2/order/submit" tags:"JD V2 Order" method:"post" summary:"提交订单"`
Amount float64 `json:"amount" v:"required|min:0.01#订单金额不能为空|订单金额必须大于0" description:"订单金额"`
MerchantOrderId string `json:"merchantOrderId" v:"required#商户订单号不能为空" description:"商户订单号"`
Attach string `json:"attach" description:"附加信息"`
}
type SubmitOrderRes struct {
OrderNo string `json:"orderNo" description:"系统订单号"`
AlipayUrl string `json:"alipayUrl" description:"支付宝支付链接"`
Amount float64 `json:"amount" description:"订单金额"`
CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"`
}
// ListOrderReq 订单列表查询
type ListOrderReq struct {
g.Meta `path:"/jd-v2/order/list" tags:"JD V2 Order" method:"get" summary:"订单列表"`
commonApi.CommonPageReq
MerchantOrderId string `json:"merchantOrderId" description:"商户订单号"`
OrderNo string `json:"orderNo" description:"系统订单号"`
AccountId int64 `json:"accountId" description:"账号ID"`
Status consts.CamelOilOrderStatus `json:"status" description:"订单状态"`
PayStatus consts.CamelOilPayStatus `json:"payStatus" description:"支付状态"`
DateRange []*gtime.Time `json:"dateRange" description:"时间范围"`
}
type OrderListItem struct {
OrderNo string `json:"orderNo" description:"系统订单号"`
MerchantOrderId string `json:"merchantOrderId" description:"商户订单号"`
AccountId int64 `json:"accountId" description:"账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Amount float64 `json:"amount" description:"订单金额"`
AlipayUrl string `json:"alipayUrl" description:"支付宝支付链接"`
CardNumber string `json:"cardNumber" description:"提取的卡号"`
CardPassword string `json:"cardPassword" description:"提取的卡密"`
Status consts.CamelOilOrderStatus `json:"status" description:"订单状态"`
PayStatus consts.CamelOilPayStatus `json:"payStatus" description:"支付状态"`
NotifyStatus consts.CamelOilNotifyStatus `json:"notifyStatus" description:"回调状态"`
NotifyCount int `json:"notifyCount" description:"回调次数"`
PaidAt *gtime.Time `json:"paidAt" description:"支付完成时间"`
LastCheckAt *gtime.Time `json:"lastCheckAt" description:"最后检测支付时间"`
FailureReason string `json:"failureReason" description:"失败原因"`
CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" description:"更新时间"`
}
type ListOrderRes struct {
commonApi.CommonPageRes[OrderListItem]
}
// OrderDetailReq 订单详情查询
type OrderDetailReq struct {
g.Meta `path:"/jd-v2/order/detail" tags:"JD V2 Order" method:"get" summary:"订单详情"`
OrderNo string `json:"orderNo" v:"required#订单号不能为空" description:"订单号"`
}
type OrderDetailRes struct {
OrderInfo struct {
OrderNo string `json:"orderNo" description:"系统订单号"`
MerchantOrderId string `json:"merchantOrderId" description:"商户订单号"`
AccountId int64 `json:"accountId" description:"账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Amount float64 `json:"amount" description:"订单金额"`
AlipayUrl string `json:"alipayUrl" description:"支付宝支付链接"`
Status consts.CamelOilOrderStatus `json:"status" description:"订单状态"`
PayStatus consts.CamelOilPayStatus `json:"payStatus" description:"支付状态"`
NotifyStatus consts.CamelOilNotifyStatus `json:"notifyStatus" description:"回调状态"`
NotifyCount int `json:"notifyCount" description:"回调次数"`
PaidAt *gtime.Time `json:"paidAt" description:"支付完成时间"`
LastCheckAt *gtime.Time `json:"lastCheckAt" description:"最后检测支付时间"`
Attach string `json:"attach" description:"附加信息"`
FailureReason string `json:"failureReason" description:"失败原因"`
CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" description:"更新时间"`
} `json:"orderInfo" description:"订单信息"`
AccountInfo struct {
AccountId int64 `json:"accountId" description:"账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Phone string `json:"phone" description:"手机号(脱敦)"`
Status consts.CamelOilAccountStatus `json:"status" description:"状态"`
LastUsedAt *gtime.Time `json:"lastUsedAt" description:"最后使用时间"`
} `json:"accountInfo" description:"账号信息"`
}
// OrderHistoryReq 订单历史记录查询
type OrderHistoryReq struct {
g.Meta `path:"/jd-v2/order/history" tags:"JD V2 Order" method:"get" summary:"订单历史记录"`
commonApi.CommonPageReq
OrderNo string `json:"orderNo" v:"required#订单号不能为空" description:"订单号"`
}
type OrderHistoryItem struct {
OrderNo string `json:"orderNo" description:"订单号"`
ChangeType consts.CamelOilOrderChangeType `json:"changeType" description:"变更类型"`
ChangeText string `json:"changeText" description:"变更类型文本"`
AccountId int64 `json:"accountId" description:"关联账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
RawData string `json:"rawData" description:"原始响应数据"`
Remark string `json:"remark" description:"备注"`
CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"`
}
type OrderHistoryRes struct {
commonApi.CommonPageRes[OrderHistoryItem]
}
// AccountOrderListReq 查询账号绑定的历史订单
type AccountOrderListReq struct {
g.Meta `path:"/jd-v2/order/accountOrders" tags:"JD V2 Order" method:"get" summary:"账号历史订单"`
commonApi.CommonPageReq
AccountId int64 `json:"accountId" v:"required#账号ID不能为空" description:"账号ID"`
Status consts.CamelOilOrderStatus `json:"status" description:"订单状态筛选"`
PayStatus consts.CamelOilPayStatus `json:"payStatus" description:"支付状态筛选"`
DateRange []*gtime.Time `json:"dateRange" description:"时间范围"`
}
type AccountOrderListRes struct {
AccountInfo struct {
AccountId int64 `json:"accountId" description:"账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Phone string `json:"phone" description:"手机号(脱敦)"`
Status consts.CamelOilAccountStatus `json:"status" description:"状态"`
} `json:"accountInfo" description:"账号基本信息"`
OrderStats struct {
TotalOrders int `json:"totalOrders" description:"总订单数"`
PaidOrders int `json:"paidOrders" description:"已支付订单数"`
PendingOrders int `json:"pendingOrders" description:"待支付订单数"`
TimeoutOrders int `json:"timeoutOrders" description:"超时订单数"`
} `json:"orderStats" description:"订单统计"`
// OrderList commonApi.CommonPageRes[OrderListItem] `json:"orderList" description:"订单分页列表"`
}
// OrderCallbackReq 手动触发订单回调(管理接口)
type OrderCallbackReq struct {
g.Meta `path:"/jd-v2/order/callback" tags:"JD V2 Order" method:"post" summary:"手动回调"`
OrderNo string `json:"orderNo" v:"required#订单号不能为空" description:"订单号"`
}
type OrderCallbackRes struct {
Success bool `json:"success" description:"回调是否成功"`
Message string `json:"message" description:"回调结果消息"`
}
// ListPrefetchOrderReq 获取预拉取订单列表
type ListPrefetchOrderReq struct {
g.Meta `path:"/jd-v2/prefetch/orders" tags:"JD V2 Prefetch" method:"get" summary:"获取预拉取订单列表"`
commonApi.CommonPageReq
AccountId int64 `json:"accountId" description:"账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Amount float64 `json:"amount" description:"订单金额"`
PlatformOrderNo string `json:"platformOrderNo" description:"平台订单号"`
Status consts.CamelOilPrefetchOrderStatus `json:"status" description:"状态1待匹配 2已匹配 3已过期 4已失效"`
DateRange []*gtime.Time `json:"dateRange" description:"时间范围"`
}
type PrefetchOrderListItem struct {
Id int64 `json:"id" description:"主键ID"`
AccountId int64 `json:"accountId" description:"拉取时使用的账号ID"`
AccountName string `json:"accountName" description:"账号名称"`
Amount float64 `json:"amount" description:"预拉取订单金额"`
PlatformOrderNo string `json:"platformOrderNo" description:"骆驼平台订单号"`
AlipayUrl string `json:"alipayUrl" description:"支付宝支付链接"`
Status consts.CamelOilPrefetchOrderStatus `json:"status" description:"预拉取订单状态1待匹配 2已匹配 3已过期 4已失效"`
OrderNo string `json:"orderNo" description:"匹配后的订单号"`
MatchedAt *gtime.Time `json:"matchedAt" description:"匹配时间"`
ExpireAt *gtime.Time `json:"expireAt" description:"预拉取订单过期时间"`
FailureReason string `json:"failureReason" description:"失败原因"`
Remark string `json:"remark" description:"备注信息"`
CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" description:"更新时间"`
}
type ListPrefetchOrderRes struct {
commonApi.CommonPageRes[PrefetchOrderListItem]
}
// ExportOrderReq 导出订单数据
type ExportOrderReq struct {
g.Meta `path:"/jd-v2/order/export" tags:"JD V2 Order" method:"get" summary:"导出订单数据"`
commonApi.CommonPageReq
MerchantOrderId string `json:"merchantOrderId" description:"商户订单号"`
OrderNo string `json:"orderNo" description:"系统订单号"`
AccountId int64 `json:"accountId" description:"账号ID"`
Status consts.CamelOilOrderStatus `json:"status" description:"订单状态"`
PayStatus consts.CamelOilPayStatus `json:"payStatus" description:"支付状态"`
DateRange []*gtime.Time `json:"dateRange" description:"时间范围"`
}
type ExportOrderRes struct {
}