Files
jx-callback/business/model/sku.go
2020-04-08 13:58:31 +08:00

301 lines
9.1 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
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"
)
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: "上架",
}
)
// 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事
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"` // 这个是指对应的银豹商品类别
// 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"`
}
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"`
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"` // 第二张图片
// 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"` //银豹商品后缀
}
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"`
}