Files
jx-callback/business/model/sku.go
suyl 4b2af44a88 aa
2021-05-20 10:04:42 +08:00

353 lines
12 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"
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"` //是否是饿鲜达特有新建的分类
IsExdSync int `json:"isExdSync"` //饿鲜达分类是否同步到平台
// 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"` //第三张图片
Img4 string `orm:"size(512)" json:"img4"` //第三张图片
Img5 string `orm:"size(512)" json:"img5"` //第三张图片
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", "Upc", "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
MinOrderCount int `json:"minOrderCount"` //最少起购份数,美团用
LadderBoxNum int `json:"ladderBoxNum"` //包装费x件 ,美团用
LadderBoxPrice int `json:"ladderBoxPrice"` //包装费y元 ,美团用
// 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"`
SkuID int `orm:"column(sku_id)" json:"skuID"`
JdCategoryID string `json:"jdCategoryID"`
JdsCategoryID string `json:"jdsCategoryID"`
EbaiCategoryID string `json:"ebaiCategoryID"`
MtwmCategoryID string `json:"mtwmCategoryID"`
}
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"` //图片水印
ImgWatermarkMix string `orm:"size(512)" json:"imgWatermark"` //合成水印图
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` //品牌ID
}
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"},
}
}
type VendorCategoryMap struct {
ModelIDCULD
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
VendorOrgCode string `json:"vendorOrgCode"`
CategoryID int `orm:"column(category_id)" json:"categoryID"` // 这个是指对应的sku_category
VendorCategoryName string `orm:"size(255)" json:"vendorCategoryName"` // 平台类别单独的名字
VendorCategorySeq int `orm:"default(0)" json:"vendorCategorySeq"` // 平台类别单独的序号
Level int `json:"level"` // 平台类别单独的等级
ParentID int `orm:"column(parent_id)" json:"parentID"` //门店类别父ID和sku_category一致
}
func (*VendorCategoryMap) TableUnique() [][]string {
return [][]string{
[]string{"VendorID", "VendorOrgCode", "CategoryID", "DeletedAt"},
}
}