165 lines
5.5 KiB
Go
165 lines
5.5 KiB
Go
package mohong
|
|
|
|
import "time"
|
|
|
|
type CategoryDTO struct {
|
|
ID uint64 `json:"id"`
|
|
Name string `json:"name"`
|
|
Code string `json:"code"`
|
|
SortOrder int `json:"sort_order"`
|
|
Status string `json:"status"`
|
|
ProductCount int64 `json:"product_count"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreateCategoryRequest struct {
|
|
Name string `json:"name" binding:"required,max=64"`
|
|
Code string `json:"code"`
|
|
SortOrder int `json:"sort_order"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type UpdateCategoryRequest struct {
|
|
Name *string `json:"name"`
|
|
Code *string `json:"code"`
|
|
SortOrder *int `json:"sort_order"`
|
|
Status *string `json:"status"`
|
|
}
|
|
|
|
type ProductDTO struct {
|
|
ID uint64 `json:"id"`
|
|
CategoryID *uint64 `json:"category_id"`
|
|
CategoryName string `json:"category_name,omitempty"`
|
|
Title string `json:"title"`
|
|
CoverURL string `json:"cover_url"`
|
|
ImageURLs []string `json:"image_urls"`
|
|
Description string `json:"description"`
|
|
PriceCent int64 `json:"price_cent"`
|
|
Price string `json:"price"`
|
|
OriginalPriceCent int64 `json:"original_price_cent"`
|
|
OriginalPrice string `json:"original_price,omitempty"`
|
|
Unit string `json:"unit"`
|
|
Stock int `json:"stock"`
|
|
SortOrder int `json:"sort_order"`
|
|
Status string `json:"status"`
|
|
QrcodeImageURL string `json:"qrcode_image_url,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ProductListQuery struct {
|
|
Keyword string
|
|
Status string
|
|
CategoryID uint64
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
type CreateProductRequest struct {
|
|
CategoryID *uint64 `json:"category_id"`
|
|
Title string `json:"title" binding:"required,max=128"`
|
|
CoverURL string `json:"cover_url"`
|
|
ImageURLs []string `json:"image_urls"`
|
|
Description string `json:"description"`
|
|
PriceCent int64 `json:"price_cent" binding:"required,min=1"`
|
|
OriginalPriceCent int64 `json:"original_price_cent"`
|
|
Unit string `json:"unit"`
|
|
Stock *int `json:"stock"`
|
|
SortOrder int `json:"sort_order"`
|
|
Status string `json:"status"`
|
|
QrcodeImageURL string `json:"qrcode_image_url"`
|
|
}
|
|
|
|
type UpdateProductRequest struct {
|
|
CategoryID *uint64 `json:"category_id"`
|
|
ClearCategory bool `json:"clear_category"`
|
|
Title *string `json:"title"`
|
|
CoverURL *string `json:"cover_url"`
|
|
ImageURLs []string `json:"image_urls"`
|
|
Description *string `json:"description"`
|
|
PriceCent *int64 `json:"price_cent"`
|
|
OriginalPriceCent *int64 `json:"original_price_cent"`
|
|
Unit *string `json:"unit"`
|
|
Stock *int `json:"stock"`
|
|
SortOrder *int `json:"sort_order"`
|
|
Status *string `json:"status"`
|
|
QrcodeImageURL *string `json:"qrcode_image_url"`
|
|
}
|
|
|
|
type CreateOrderRequest struct {
|
|
ProductID uint64 `json:"product_id" binding:"required"`
|
|
Quantity int `json:"quantity" binding:"required,min=1,max=99"`
|
|
}
|
|
|
|
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"`
|
|
}
|
|
|
|
type OrderListQuery struct {
|
|
UserID uint64
|
|
Status string
|
|
Keyword string
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
type AdminCompleteOrderRequest struct {
|
|
Remark string `json:"remark"`
|
|
}
|
|
|
|
type AdminCancelOrderRequest struct {
|
|
Reason string `json:"reason"`
|
|
}
|
|
|
|
type ConfigDTO struct {
|
|
DefaultQrcodeURL string `json:"default_qrcode_url"`
|
|
OrderCopyTemplate string `json:"order_copy_template"`
|
|
}
|
|
|
|
type UpdateConfigRequest struct {
|
|
DefaultQrcodeURL *string `json:"default_qrcode_url"`
|
|
OrderCopyTemplate *string `json:"order_copy_template"`
|
|
}
|
|
|
|
type PaginatedResult struct {
|
|
Items any `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
type productSnapshot 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"`
|
|
}
|