摸大红支持购物车多选一起结账

下单支持多商品行快照与一次支付;支付后整单复制文案,前台提供购物车加购与结账。
This commit is contained in:
yml2213
2026-07-16 20:58:39 +08:00
parent e241607535
commit 183351a297
17 changed files with 1159 additions and 117 deletions
+58 -25
View File
@@ -87,36 +87,56 @@ type UpdateProductRequest struct {
QrcodeImageURL *string `json:"qrcode_image_url"`
}
type CreateOrderRequest struct {
type CreateOrderItemRequest struct {
ProductID uint64 `json:"product_id" binding:"required"`
Quantity int `json:"quantity" binding:"required,min=1,max=99"`
}
// CreateOrderRequest 支持单商品(product_id+quantity)或多商品(items)。
type CreateOrderRequest struct {
ProductID uint64 `json:"product_id"`
Quantity int `json:"quantity"`
Items []CreateOrderItemRequest `json:"items"`
}
type OrderItemDTO struct {
ProductID uint64 `json:"product_id"`
Title string `json:"title"`
CoverURL string `json:"cover_url"`
Unit string `json:"unit"`
Quantity int `json:"quantity"`
UnitPriceCent int64 `json:"unit_price_cent"`
UnitPrice string `json:"unit_price"`
AmountCent int64 `json:"amount_cent"`
Amount string `json:"amount"`
}
type OrderDTO struct {
ID uint64 `json:"id"`
OrderNo string `json:"order_no"`
UserID uint64 `json:"user_id"`
ProductID uint64 `json:"product_id"`
Quantity int `json:"quantity"`
UnitPriceCent int64 `json:"unit_price_cent"`
UnitPrice string `json:"unit_price"`
AmountCent int64 `json:"amount_cent"`
Amount string `json:"amount"`
Status string `json:"status"`
ProductTitle string `json:"product_title"`
ProductCoverURL string `json:"product_cover_url"`
ProductUnit string `json:"product_unit"`
QrcodeURLSnapshot string `json:"qrcode_url_snapshot"`
CopyText string `json:"copy_text"`
BuyerNickname string `json:"buyer_nickname,omitempty"`
BuyerPhone string `json:"buyer_phone,omitempty"`
AdminRemark string `json:"admin_remark,omitempty"`
CancelReason string `json:"cancel_reason,omitempty"`
PaidAt *time.Time `json:"paid_at"`
CompletedAt *time.Time `json:"completed_at"`
CancelledAt *time.Time `json:"cancelled_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID uint64 `json:"id"`
OrderNo string `json:"order_no"`
UserID uint64 `json:"user_id"`
ProductID uint64 `json:"product_id"`
Quantity int `json:"quantity"`
UnitPriceCent int64 `json:"unit_price_cent"`
UnitPrice string `json:"unit_price"`
AmountCent int64 `json:"amount_cent"`
Amount string `json:"amount"`
Status string `json:"status"`
ProductTitle string `json:"product_title"`
ProductCoverURL string `json:"product_cover_url"`
ProductUnit string `json:"product_unit"`
Items []OrderItemDTO `json:"items,omitempty"`
QrcodeURLSnapshot string `json:"qrcode_url_snapshot"`
CopyText string `json:"copy_text"`
BuyerNickname string `json:"buyer_nickname,omitempty"`
BuyerPhone string `json:"buyer_phone,omitempty"`
AdminRemark string `json:"admin_remark,omitempty"`
CancelReason string `json:"cancel_reason,omitempty"`
PaidAt *time.Time `json:"paid_at"`
CompletedAt *time.Time `json:"completed_at"`
CancelledAt *time.Time `json:"cancelled_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type OrderListQuery struct {
@@ -162,3 +182,16 @@ type productSnapshot struct {
Unit string `json:"unit"`
QrcodeImageURL string `json:"qrcode_image_url"`
}
// orderItemSnapshot 订单商品行快照(多商品结账)。
type orderItemSnapshot struct {
ID uint64 `json:"id"`
Title string `json:"title"`
CoverURL string `json:"cover_url"`
ImageURLs []string `json:"image_urls"`
Description string `json:"description"`
PriceCent int64 `json:"price_cent"`
Unit string `json:"unit"`
QrcodeImageURL string `json:"qrcode_image_url"`
Quantity int `json:"quantity"`
}