daShangDao_psiServer/models/product_book.go

75 lines
5.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}