Files
jx-callback/business/model/sku.go
2019-04-11 14:39:45 +08:00

242 lines
6.8 KiB
Go
Raw 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 model
const (
SkuCategoryNormal = 0
SkuCategorySpecial = 1
)
const (
SpecUnitG = 0
SpecUnitKG = 1
SpecUnitL = 2
SpecUnitML = 3
)
const (
SkuStatusDeleted = -1
SkuStatusDontSale = 0
SkuStatusNormal = 1
)
var (
SpecUnitNames = []string{
"g",
"kg",
"L",
"ml",
}
)
var (
UnitNames = []string{
"份",
"袋",
"瓶",
"只",
"组",
"个",
"盒",
"把",
"半只",
"包",
"条",
"根",
"箱",
"听",
"套",
"罐",
"件",
"块",
"片",
"支",
"杯",
}
SkuNamePrefixNames = []string{
"新鲜",
"组合菜",
"冰鲜",
"优",
"精",
"熟食",
"鲜",
"净菜",
"净",
"冻",
"半熟",
"果切",
"熟",
"优质",
"生",
"干货",
"快捷菜",
"手工厨房",
"带壳",
"长条",
"鲜活宰杀",
"惠",
"鱼腥草",
"冰冻",
"思念",
"散装",
"优质精品",
"干",
"湿",
"生品",
"虾仁",
"鲜活现宰",
}
SpecialUnit = "份"
SpecialSpecQuality = 500
SpecialSpecUnit = "g"
)
var (
CategoryTypeName = map[int]string{
SkuCategoryNormal: "普通类别",
SkuCategorySpecial: "特殊类别",
}
SkuStatusName = map[int]string{
SkuStatusDeleted: "删除",
SkuStatusDontSale: "下架",
SkuStatusNormal: "上架",
}
)
// 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事
type SkuVendorCategory struct {
ModelIDCUL
VendorCategoryID string `orm:"size(48);column(vendor_category_id)" json:"vendorCategoryID"`
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
Name string `orm:"size(255);index" json:"name"`
IsLeaf int8 `json:"isLeaf"`
Level int `json:"level"`
ParentID string `orm:"column(parent_id);size(48);index" json:"parentID"` // 父ID引用的是VendorCategoryID而不是ID
}
func (*SkuVendorCategory) TableUnique() [][]string {
return [][]string{
[]string{"VendorCategoryID", "VendorID"},
}
}
// 基础数据,除了商家商品类别外,基本都以京东到家为准
type SkuCategory struct {
ModelIDCULD
Name string `orm:"size(255)" json:"name"`
ParentID int `orm:"column(parent_id)" json:"parentID"`
Level int8 `json:"level"`
Type int8 `json:"type"` // 类别类型,即是普通类别还是特殊用于做活动的类别
Seq int `json:"seq"`
JdCategoryID int `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
}
func (*SkuCategory) TableUnique() [][]string {
return [][]string{
[]string{"Name", "Level", "DeletedAt"},
}
}
func (*SkuCategory) TableIndex() [][]string {
return [][]string{
[]string{"JdID", "DeletedAt"},
}
}
type SkuName struct {
ModelIDCULD
Prefix string `orm:"size(255)" json:"prefix"`
Name string `orm:"size(255);index" json:"name"`
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo此属性暂时没有使用且有问题应该是不同平台都有一个brandid
CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部全国可见如果否的话可见性由SkuPlace决定
Unit string `orm:"size(8)" json:"unit"`
SpecQuality float32 `json:"-"` // 为份必然为500这个主要作用只是用于确保SkuName的唯一性
SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克这个主要作用只是用于确保SkuName的唯一性
Price int `json:"price"` // 单位为分标准价不为份的就为实际标准价为份的为每市斤价实际还要乘质量。todo 为份的确定必须有质量
Img string `orm:"size(255)" json:"img"`
ImgWeimob string `orm:"size(255)" json:"imgWeimob"` // 微盟图片地址
ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
ElmImgHashCode string `orm:"size(255)" json:"-"` // 长度255的原因是从京东初始化数据时临时需要
Upc string `orm:"size(20)"`
Status int `orm:"default(1)" json:"status"` // skuname状态取值同sku.Status
IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
LinkID int `orm:"column(link_id);null;index" json:"linkID"`
}
func (*SkuName) TableUnique() [][]string {
return [][]string{
[]string{"Name", "Prefix", "SpecQuality", "SpecUnit", "Unit", "IsSpu", "DeletedAt"},
}
}
type Sku struct {
ModelIDCULD
CategoryID int `orm:"column(category_id)" json:"categoryID"` // 特殊类别,一般用于秒杀,特价之类的特殊类别
NameID int `orm:"column(name_id)" json:"nameID"` // todo 这个索引应该要求唯一
SkuIndex int `json:"-"`
Comment string `orm:"size(255)" json:"comment"`
SpecQuality float32 `json:"specQuality"`
SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量
Weight int `json:"weight"` // 重量/质量单位为克当相应的SkuName的SpecUnit为g或kg时必须等于SpecQuality
Status int `json:"status"`
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
LinkID int `orm:"column(link_id);null;index" json:"linkID"`
}
// func (*Sku) TableUnique() [][]string {
// return [][]string{
// []string{"JdID", "DeletedAt"},
// }
// }
func (*Sku) TableIndex() [][]string {
return [][]string{
[]string{"NameID", "SpecQuality", "SpecUnit", "DeletedAt"}, // todo 先设置为索引,之后应改为唯一索引
}
}
type SkuNamePlaceBind struct {
ModelIDCUL
NameID int `orm:"column(name_id)"`
PlaceCode int
}
func (*SkuNamePlaceBind) TableUnique() [][]string {
return [][]string{
[]string{"NameID", "PlaceCode"},
}
}
type SkuNameExt struct {
SkuName
Skus []*Sku `orm:"-" json:"skus"`
SkusStr string `json:"-"`
Places []int `orm:"-" json:"places"`
PlacesStr string `json:"-"`
}