新增摸大红业务并修复后台链接按钮白字
支持分类筛选、搜索、下单支付建群与固定二维码;合并迁移种子数据;后台表格编辑/详情链接恢复主题色可见。
This commit is contained in:
@@ -10,6 +10,7 @@ type ChatConversation struct {
|
||||
ID uint64 `gorm:"primaryKey" json:"id"`
|
||||
OrderID *uint64 `gorm:"uniqueIndex" json:"order_id"`
|
||||
ListingID *uint64 `gorm:"index" json:"listing_id"`
|
||||
MohongOrderID *uint64 `gorm:"column:mohong_order_id;uniqueIndex" json:"mohong_order_id"`
|
||||
Type string `gorm:"size:32;not null;default:'order_group'" json:"type"`
|
||||
Title string `gorm:"size:128;not null" json:"title"`
|
||||
Status string `gorm:"size:32;not null;default:'active'" json:"status"`
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
)
|
||||
|
||||
// MohongCategory 摸大红商品分类。
|
||||
type MohongCategory struct {
|
||||
ID uint64 `gorm:"primaryKey" json:"id"`
|
||||
Name string `gorm:"size:64;not null;uniqueIndex" json:"name"`
|
||||
Code string `gorm:"size:64;not null;default:''" json:"code"`
|
||||
SortOrder int `gorm:"column:sort_order;not null;default:0" json:"sort_order"`
|
||||
Status string `gorm:"size:16;not null;default:'enabled'" json:"status"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (MohongCategory) TableName() string {
|
||||
return "mohong_categories"
|
||||
}
|
||||
|
||||
// MohongProductCategory 商品与分类多对多(同一商品可出现在大红/九格等)。
|
||||
type MohongProductCategory struct {
|
||||
ProductID uint64 `gorm:"column:product_id;primaryKey" json:"product_id"`
|
||||
CategoryID uint64 `gorm:"column:category_id;primaryKey;index" json:"category_id"`
|
||||
}
|
||||
|
||||
func (MohongProductCategory) TableName() string {
|
||||
return "mohong_product_categories"
|
||||
}
|
||||
|
||||
// MohongProduct 摸大红商品。
|
||||
type MohongProduct struct {
|
||||
ID uint64 `gorm:"primaryKey" json:"id"`
|
||||
CategoryID *uint64 `gorm:"column:category_id;index" json:"category_id"` // 主分类(展示用)
|
||||
Title string `gorm:"size:128;not null" json:"title"`
|
||||
CoverURL string `gorm:"column:cover_url;size:512;not null;default:''" json:"cover_url"`
|
||||
ImageURLs datatypes.JSON `gorm:"column:image_urls" json:"image_urls"`
|
||||
Description string `gorm:"type:text;not null" json:"description"`
|
||||
PriceCent int64 `gorm:"column:price_cent;not null;default:0" json:"-"`
|
||||
OriginalPriceCent int64 `gorm:"column:original_price_cent;not null;default:0" json:"-"`
|
||||
Unit string `gorm:"size:32;not null;default:'份'" json:"unit"`
|
||||
Stock int `gorm:"not null;default:-1" json:"stock"`
|
||||
SortOrder int `gorm:"column:sort_order;not null;default:0" json:"sort_order"`
|
||||
Status string `gorm:"size:16;not null;default:'draft'" json:"status"`
|
||||
QrcodeImageURL string `gorm:"column:qrcode_image_url;size:512;not null;default:''" json:"qrcode_image_url"`
|
||||
CreatedBy *uint64 `gorm:"column:created_by" json:"created_by"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (MohongProduct) TableName() string {
|
||||
return "mohong_products"
|
||||
}
|
||||
|
||||
// MohongOrder 摸大红订单。
|
||||
type MohongOrder struct {
|
||||
ID uint64 `gorm:"primaryKey" json:"id"`
|
||||
OrderNo string `gorm:"size:64;not null;uniqueIndex" json:"order_no"`
|
||||
UserID uint64 `gorm:"not null;index" json:"user_id"`
|
||||
ProductID uint64 `gorm:"not null;index" json:"product_id"`
|
||||
Quantity int `gorm:"not null;default:1" json:"quantity"`
|
||||
UnitPriceCent int64 `gorm:"column:unit_price_cent;not null;default:0" json:"-"`
|
||||
AmountCent int64 `gorm:"column:amount_cent;not null;default:0" json:"-"`
|
||||
Status string `gorm:"size:32;not null;default:'pending_payment';index" json:"status"`
|
||||
ProductSnapshot datatypes.JSON `gorm:"column:product_snapshot" json:"product_snapshot"`
|
||||
QrcodeURLSnapshot string `gorm:"column:qrcode_url_snapshot;size:512;not null;default:''" json:"qrcode_url_snapshot"`
|
||||
CopyText string `gorm:"type:text;not null" json:"copy_text"`
|
||||
ConversationID *uint64 `gorm:"column:conversation_id" json:"conversation_id"`
|
||||
PaidAt *time.Time `json:"paid_at"`
|
||||
CompletedAt *time.Time `json:"completed_at"`
|
||||
CancelledAt *time.Time `json:"cancelled_at"`
|
||||
CancelReason string `gorm:"size:255;not null;default:''" json:"cancel_reason"`
|
||||
AdminRemark string `gorm:"size:255;not null;default:''" json:"admin_remark"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (MohongOrder) TableName() string {
|
||||
return "mohong_orders"
|
||||
}
|
||||
|
||||
const (
|
||||
MohongCategoryStatusEnabled = "enabled"
|
||||
MohongCategoryStatusDisabled = "disabled"
|
||||
|
||||
MohongProductStatusDraft = "draft"
|
||||
MohongProductStatusOnSale = "on_sale"
|
||||
MohongProductStatusOffSale = "off_sale"
|
||||
|
||||
MohongOrderStatusPendingPayment = "pending_payment"
|
||||
MohongOrderStatusPaid = "paid"
|
||||
MohongOrderStatusCompleted = "completed"
|
||||
MohongOrderStatusCancelled = "cancelled"
|
||||
MohongOrderStatusRefunded = "refunded"
|
||||
)
|
||||
Reference in New Issue
Block a user