Files
hfb_sys/backend/internal/modules/mohong/dto.go
T
yml2213 6d61027318 新增摸大红业务并修复后台链接按钮白字
支持分类筛选、搜索、下单支付建群与固定二维码;合并迁移种子数据;后台表格编辑/详情链接恢复主题色可见。
2026-07-16 18:08:18 +08:00

168 lines
5.7 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"`
ConversationID *uint64 `json:"conversation_id"`
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"`
GroupWelcomeText string `json:"group_welcome_text"`
OrderCopyTemplate string `json:"order_copy_template"`
}
type UpdateConfigRequest struct {
DefaultQrcodeURL *string `json:"default_qrcode_url"`
GroupWelcomeText *string `json:"group_welcome_text"`
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"`
}