package models import ( "fmt" "gorm.io/datatypes" ) // ProductBook 商品书籍分表(按ISBN后两位分表 product_book_00 ~ product_book_99) type ProductBook struct { ID int64 `json:"id" gorm:"primarykey;comment:自增ID"` // 自增ID SelfID int64 `json:"self_id" gorm:"not null;default:0;comment:再分库商品表中的商品ID"` // 再分库商品表中的商品ID CategoryID int64 `json:"category_id" gorm:"not null;default:0;comment:分类ID"` // 分类ID AboutId int64 `json:"about_id" gorm:"not null;default:0;index;comment:关联ID"` // 关联ID WarehouseID int64 `json:"warehouse_id" gorm:"not null;default:0;index;comment:仓库ID"` // 仓库ID WarehouseName string `json:"warehouse_name" gorm:"size:100;not null;default:'';comment:仓库名称"` // 仓库名称 LocationID int64 `json:"location_id" gorm:"not null;default:0;index;comment:货位ID"` // 货位ID LocationName string `json:"location_name" gorm:"size:50;not null;default:'';comment:货位名称"` // 货位名称 StandardProductID int64 `json:"standard_product_id" gorm:"not null;default:0;index;comment:关联标品ID"` // 关联标品ID Fid int64 `json:"fid" gorm:"not null;default:0;comment:父级ID"` // 父级ID Type int8 `json:"type" gorm:"not null;default:0;comment:类型 1正常 2套装书 3一号多书 4无书号"` // 类型 ISBN string `json:"isbn" gorm:"size:20;not null;default:'';index:idx_isbn;comment:ISBN"` // ISBN FISBN string `json:"f_isbn" gorm:"size:20;not null;default:'';comment:FISBN"` // FISBN BookName string `json:"book_name" gorm:"size:100;not null;default:'';comment:书名"` // 书名 FBookName string `json:"f_book_name" gorm:"size:100;not null;default:'';comment:副书名"` // 副书名 Author string `json:"author" gorm:"size:100;not null;default:'';comment:作者"` // 作者 Publishing string `json:"publishing" gorm:"size:50;not null;default:'';comment:出版社"` // 出版社 PublicationTime int64 `json:"publication_time" gorm:"type:bigint;not null;default:0;comment:出版日期时间戳"` // 出版日期时间戳 Binding string `json:"binding" gorm:"size:10;not null;default:'';comment:装帧"` // 装帧 PagesCount int64 `json:"pages_count" gorm:"not null;default:0;comment:页数"` // 页数 WordsCount int64 `json:"words_count" gorm:"not null;default:0;comment:字数"` // 字数 Format int64 `json:"format" gorm:"not null;default:0;comment:开本"` // 开本 CatID datatypes.JSON `json:"cat_id" gorm:"type:json;not null;comment:类目json"` // 类目json Name string `json:"name" gorm:"size:255;not null;default:'';comment:商品名称"` // 商品名称 Appearance int64 `json:"appearance" gorm:"not null;default:0;comment:品相"` // 品相 Barcode string `json:"barcode" gorm:"size:100;not null;default:'';index;comment:条码"` // 条码 Price int64 `json:"price" gorm:"not null;default:0;comment:价格"` // 价格 SalePrice int64 `json:"sale_price" gorm:"not null;default:0;comment:书价"` // 书价 Cost int64 `json:"cost" gorm:"not null;default:0;comment:最低运费"` // 最低运费 Stock int64 `json:"stock" gorm:"not null;default:0;comment:库存"` // 库存 LiveImage datatypes.JSON `json:"live_image" gorm:"type:json;not null;comment:实拍图json"` // 实拍图json IsBatchManaged int8 `json:"is_batch_managed" gorm:"type:tinyint(1);not null;default:0;comment:是否批次管理(0:否,1:是)"` // 是否批次管理(0:否,1:是) IsShelfLifeManaged int8 `json:"is_shelf_life_managed" gorm:"type:tinyint(1);not null;default:0;comment:是否效期管理(0:否,1:是)"` // 是否效期管理(0:否,1:是) Status int8 `json:"status" gorm:"type:tinyint(1);not null;default:1;comment:状态(0:禁用,1:启用)"` // 状态(0:禁用,1:启用) CreatedAt int64 `json:"created_at" gorm:"type:bigint;not null;default:0;comment:创建时间戳"` // 创建时间戳 UpdatedAt int64 `json:"updated_at" gorm:"type:bigint;not null;default:0;comment:更新时间戳"` // 更新时间戳 IsDel int8 `json:"is_del" gorm:"not null;default:0;comment:逻辑删除"` // 逻辑删除 } func (ProductBook) TableName() string { return "product_book_00" } func (ProductBook) TableOptions() string { return "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品书籍分表'" } // ProductBookTableName 根据ISBN后两位获取分表名 func ProductBookTableName(isbn string) string { suffix := "00" if len(isbn) >= 2 { suffix = isbn[len(isbn)-2:] } return fmt.Sprintf("product_book_%s", suffix) } // ProductBookAllTableNames 获取所有分表名(00~99) func ProductBookAllTableNames() []string { names := make([]string, 0, 100) for i := 0; i < 100; i++ { names = append(names, fmt.Sprintf("product_book_%02d", i)) } return names }