318 lines
11 KiB
Go
318 lines
11 KiB
Go
package model
|
||
|
||
import "time"
|
||
|
||
const (
|
||
SkuCategoryNormal = 0
|
||
SkuCategorySpecial = 1
|
||
)
|
||
|
||
const (
|
||
SpecUnitG = 0
|
||
SpecUnitKG = 1
|
||
SpecUnitL = 2
|
||
SpecUnitML = 3
|
||
)
|
||
|
||
const (
|
||
NoCatCatgoryID = 291
|
||
NOSkuNameImg = "https://image.jxc4.com/noGoodsImg.jpg"
|
||
SkuNameImgStandard = "?imageMogr2/thumbnail/!800x800r/gravity/Center/crop/800x800"
|
||
SkuNameImgToPng = "?imageView2/0/format/png/q/75"
|
||
)
|
||
|
||
const (
|
||
SkuStatusDeleted = -1
|
||
SkuStatusDontSale = 0
|
||
SkuStatusNormal = 1
|
||
)
|
||
|
||
const (
|
||
CategoryStatusDisabled = 0
|
||
CategoryStatusEnable = 1
|
||
)
|
||
|
||
var (
|
||
SpecUnitNames = []string{
|
||
"g",
|
||
"kg",
|
||
"L",
|
||
"ml",
|
||
}
|
||
)
|
||
|
||
var (
|
||
UnitNames = []string{
|
||
"份",
|
||
"袋",
|
||
"瓶",
|
||
"只",
|
||
"组",
|
||
"个",
|
||
"盒",
|
||
"把",
|
||
"半只",
|
||
"包",
|
||
"条",
|
||
"根",
|
||
"箱",
|
||
"听",
|
||
"套",
|
||
"罐",
|
||
"件",
|
||
"块",
|
||
"片",
|
||
"支",
|
||
"杯",
|
||
"桶",
|
||
"串",
|
||
}
|
||
SkuNamePrefixNames = []string{
|
||
"新鲜",
|
||
"组合菜",
|
||
"熟食",
|
||
"鲜活现杀",
|
||
"冰冻",
|
||
"净菜",
|
||
"非熟食",
|
||
}
|
||
|
||
SpecialUnit = "份"
|
||
SpecialSpecQuality = 500
|
||
SpecialSpecUnit = "g"
|
||
SpecialSpecUnit2 = "ml"
|
||
)
|
||
|
||
var (
|
||
CategoryTypeName = map[int]string{
|
||
SkuCategoryNormal: "普通类别",
|
||
SkuCategorySpecial: "特殊类别",
|
||
}
|
||
SkuStatusName = map[int]string{
|
||
SkuStatusDeleted: "删除",
|
||
SkuStatusDontSale: "下架",
|
||
SkuStatusNormal: "上架",
|
||
2: "删除",
|
||
3: "不可售",
|
||
4: "可售",
|
||
}
|
||
)
|
||
|
||
// 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事
|
||
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 int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
|
||
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
|
||
YbCategoryID int64 `orm:"column(yb_category_id)" json:"ybCategoryID"` // 这个是指对应的银豹商品类别
|
||
JdsCategoryID int64 `orm:"column(jds_category_id)" json:"jdsCategoryID"` // 这个是指对应的京东商城类别
|
||
|
||
// ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
||
// WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
|
||
Status int8 `orm:"default(1)" json:"status"` //分类状态,0表示禁用,1表示启用
|
||
Img string `orm:"size(512)" json:"img"` //分类图片
|
||
|
||
ExdName string `json:"exdName"` //饿鲜达对应分类名
|
||
ExdSeq int `json:"exdSeq"`
|
||
IsExdSpec int `json:"isExdSpec"` //是否是饿鲜达特有新建的分类
|
||
// JdID int64 `orm:"column(jd_id);index" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||
IsSync int `json:"isSync"` //是否同步到平台
|
||
}
|
||
|
||
func (*SkuCategory) TableUnique() [][]string {
|
||
return [][]string{
|
||
[]string{"Name", "Level", "DeletedAt"},
|
||
}
|
||
}
|
||
|
||
type SkuName struct {
|
||
ModelIDCULD
|
||
|
||
Prefix string `orm:"size(255)" json:"prefix"`
|
||
Name string `orm:"size(255)" json:"name"`
|
||
|
||
ExPrefix string `orm:"size(255)" json:"exPrefix"`
|
||
ExPrefixBegin *time.Time `orm:"null" json:"exPrefixBegin"`
|
||
ExPrefixEnd *time.Time `orm:"null" json:"exPrefixEnd"`
|
||
ExVendorID int `orm:"column(ex_vendor_id)" json:"exVendorID"`
|
||
|
||
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid
|
||
CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别
|
||
JdCategoryID int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
|
||
|
||
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(512)" json:"img"`
|
||
Img2 string `orm:"size(512)" json:"img2"` // 第二张图片
|
||
Img3 string `orm:"size(512)" json:"img3"` //第三张图片
|
||
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
||
ImgMix string `orm:"size(512)" json:"imgMix"` //图片混合水印的图片
|
||
// ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
|
||
// ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
|
||
|
||
DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述
|
||
// DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF
|
||
|
||
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"`
|
||
YbNameSuffix string `json:"ybNameSuffix"` //银豹商品后缀
|
||
JdsStockSwitch int8 `orm:"default(1)" json:"jdsStockSwitch"` //京东商城总库存
|
||
PreparationTime int `orm:"default(1)" json:"preparationTime"` //商品准备时长
|
||
BestSeller int `json:"bestSeller"` //畅销品 0不是 1是
|
||
}
|
||
|
||
func (*SkuName) TableUnique() [][]string {
|
||
return [][]string{
|
||
[]string{"Name", "Prefix", "SpecQuality", "SpecUnit", "Unit", "IsSpu", "DeletedAt"},
|
||
[]string{"Upc", "DeletedAt"},
|
||
}
|
||
}
|
||
|
||
func (*SkuName) TableIndex() [][]string {
|
||
return [][]string{
|
||
[]string{"ExPrefix", "ExPrefixBegin", "ExPrefixEnd", "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"`
|
||
Seq int `json:"seq"`
|
||
|
||
ExdSkuID string `orm:"column(exd_sku_id)" json:"exdSkuID"` //饿鲜达商品ID
|
||
ExdCategoryThirdID int `orm:"column(exd_category_third_id)" json:"exdCategoryThirdID"`
|
||
EclpID string `orm:"column(eclp_id)" json:"eclpID"` //eclp物料商品ID
|
||
// 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"`
|
||
}
|
||
|
||
type SkuAndName struct {
|
||
Sku
|
||
Name string `json:"name"`
|
||
Unit string `json:"unit"`
|
||
Prefix string `json:"prefix"`
|
||
IsSpu int `json:"isSpu"`
|
||
Upc string `json:"upc"`
|
||
ExPrefix string `json:"exPrefix"`
|
||
ExPrefixBegin *time.Time `json:"exPrefixBegin"`
|
||
ExPrefixEnd *time.Time `json:"eExPrefixEndxPrefixEnd"`
|
||
Price int `json:"price"`
|
||
StoreSkuStatus int `json:"storeSkuStatus"`
|
||
ActPrice int `json:"actPrice"`
|
||
ActID int `orm:"column(act_id)" json:"actID"`
|
||
ActType int `orm:"column(act_type)" json:"actType"`
|
||
|
||
EarningPrice int `json:"earningPrice"`
|
||
EarningActID int `orm:"column(earning_act_id)" json:"earningActID"`
|
||
}
|
||
|
||
func (*Sku) TableUnique() [][]string {
|
||
return [][]string{
|
||
[]string{"NameID", "SpecQuality", "SpecUnit", "DeletedAt"},
|
||
}
|
||
}
|
||
|
||
type SkuNamePlaceBind struct {
|
||
ModelIDCUL
|
||
|
||
NameID int `orm:"column(name_id)"`
|
||
PlaceCode int
|
||
}
|
||
|
||
func (*SkuNamePlaceBind) TableUnique() [][]string {
|
||
return [][]string{
|
||
[]string{"NameID", "PlaceCode"},
|
||
}
|
||
}
|
||
|
||
type SkuWithVendor struct {
|
||
*Sku
|
||
MapList []*ThingMap `json:"mapList"`
|
||
}
|
||
|
||
type SkuNameExt struct {
|
||
SkuName
|
||
Skus []*SkuWithVendor `orm:"-" json:"skus"`
|
||
SkusStr string `json:"-"`
|
||
FullName string `json:"fullName"`
|
||
Places []int `orm:"-" json:"places"`
|
||
PlacesStr string `json:"-"`
|
||
MidUnitPrice int `json:"midUnitPrice"`
|
||
}
|
||
|
||
type SkuExinfoMap struct {
|
||
ModelIDCULD
|
||
|
||
NameID int `orm:"column(name_id)" json:"nameID"`
|
||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||
BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` //设置起始时间
|
||
EndAt time.Time `orm:"type(datetime);index" json:"endAt"` //设置结束时间
|
||
ExPrefix string `orm:"size(255)" json:"exPrefix"` //额外前缀
|
||
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
||
}
|
||
|
||
func (*SkuExinfoMap) TableIndex() [][]string {
|
||
return [][]string{
|
||
[]string{"NameID", "VendorID", "BeginAt", "EndAt"},
|
||
}
|
||
}
|
||
|
||
type SkuVendorCategoryMap struct {
|
||
ModelIDCULD
|
||
NameID int `orm:"column(name_id)" json:"nameID"`
|
||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||
VendorCategoryID string `orm:"column(vendor_category_id)" json:"vendorCategoryID"`
|
||
}
|
||
|
||
func (*SkuVendorCategoryMap) TableIndex() [][]string {
|
||
return [][]string{
|
||
[]string{"NameID", "VendorID", "VendorCategoryID", "DeletedAt"},
|
||
}
|
||
}
|