package model import "time" const ( SkuCategoryNormal = 0 SkuCategorySpecial = 1 ) const ( SpecUnitG = 0 SpecUnitKG = 1 SpecUnitL = 2 SpecUnitML = 3 ) 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"` // 这个是指对应的美团外卖商品类别 // 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"` //分类图片 JdID int64 `orm:"column(jd_id)" 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"` 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"` } 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"` 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 Unit string Prefix string IsSpu int ExPrefix string ExPrefixBegin *time.Time ExPrefixEnd *time.Time } 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:"-"` }