- first edition of weimob wsc.

This commit is contained in:
gazebo
2019-01-18 09:56:19 +08:00
parent 8ea6a9a339
commit 7d1f0e294d
23 changed files with 593 additions and 23 deletions

View File

@@ -8,7 +8,8 @@ const (
VendorIDMTWM = 1
VendorIDELM = 2
VendorIDEBAI = 3
VendorIDPurchaseEnd = 3
VendorIDWSC = 11 // 微盟微商城
VendorIDPurchaseEnd = 11
VendorIDDeliveryBegin = 101
VendorIDDada = 101
@@ -23,6 +24,8 @@ var (
VendorIDMTWM: "Mtwm",
VendorIDELM: "Elm",
VendorIDEBAI: "Ebai",
VendorIDWSC: "Wsc",
VendorIDDada: "Dada",
VendorIDMTPS: "Mtps",
}
@@ -31,6 +34,8 @@ var (
VendorIDMTWM: "美团外卖",
VendorIDELM: "饿了么",
VendorIDEBAI: "饿百新零售",
VendorIDWSC: "微盟微商城",
VendorIDDada: "达达众包",
VendorIDMTPS: "美团配送",
}
@@ -165,3 +170,13 @@ const (
OrderDeliveryFlagMaskScheduleDisabled = 1 // 禁止三方配送调度
OrderDeliveryFlagMaskPurcahseDisabled = 2 // 购物平台已不配送(一般为门店配送类型本身为自配送,或已经转自配送)
)
func IsPurchaseVendorExist(vendorID int) bool {
_, ok := VendorNames[vendorID]
return ok && vendorID >= VendorIDPurchaseBegin && vendorID <= VendorIDPurchaseEnd
}
func IsDeliveryVendorExist(vendorID int) bool {
_, ok := VendorNames[vendorID]
return ok && vendorID >= VendorIDDeliveryBegin && vendorID <= VendorIDDeliveryEnd
}

View File

@@ -112,8 +112,10 @@ func DeleteEntityLogically(db *DaoDB, item interface{}, kvs map[string]interface
func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendorCategoryID string, status int8, userName string) (err error) {
storeCat := &model.StoreSkuCategoryMap{
StoreID: storeID,
CategoryID: categoryID,
StoreID: storeID,
CategoryID: categoryID,
MtwmSyncStatus: model.SyncFlagNewMask,
WscSyncStatus: model.SyncFlagNewMask,
}
storeCat.DeletedAt = utils.DefaultTimeValue
if err = GetEntity(db, storeCat, model.FieldStoreID, model.FieldCategoryID, model.FieldDeletedAt); err != nil && err != orm.ErrNoRows {

View File

@@ -1,6 +1,7 @@
package dao
import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
)
@@ -50,3 +51,18 @@ func GetSkuNameByHashCode(db *DaoDB, hashCode string) (skuName *model.SkuName, e
}
return nil, err
}
func GetSkuNames(db *DaoDB) (skuNameList []*model.SkuName, err error) {
sql := `
SELECT *
FROM sku_name
WHERE deleted_at = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
}
if err = GetRows(db, &skuNameList, sql, sqlParams...); err == nil {
return skuNameList, nil
}
return nil, err
}

View File

@@ -38,8 +38,9 @@ type StoreSkuSyncInfo struct {
StoreSkuStatus int
SkuSyncStatus int8
model.Sku
VendorSkuID int64 `orm:"column(vendor_sku_id)"`
VendorSkuID string `orm:"column(vendor_sku_id)"`
Prefix string
NameID int `orm:"column(name_id)"`
Name string
Unit string
Img string
@@ -119,10 +120,14 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store
if model.MultiStoresVendorMap[vendorID] == 1 { // 多店模式平台
tableName = "t2"
}
imgField := "img"
if vendorID == model.VendorIDWSC {
imgField = "img_weimob"
}
sql := `
SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, %s.%s_id vendor_sku_id, t1.%s_sync_status sku_sync_status,
t2.*,
t3.prefix, t3.name, t3.unit, t3.img, t3.upc,
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.%s img, t3.upc,
t4.%s_category_id vendor_vendor_cat_id,
t5.%s_sync_status cat_sync_status, t5.%s_id vendor_cat_id,
t5sku.%s_sync_status sku_cat_sync_status, t5sku.%s_id sku_vendor_cat_id
@@ -144,9 +149,10 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store
sqlParams = append(sqlParams, skuIDs)
}
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql = fmt.Sprintf(sql, tableName, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix)
sql = fmt.Sprintf(sql, tableName, fieldPrefix, fieldPrefix, imgField, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix)
// globals.SugarLogger.Debug(sql)
if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
globals.SugarLogger.Debug("fuck")
return nil, err
}
return skus, err
@@ -159,7 +165,7 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf
sql := `
SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, t2.%s_id vendor_sku_id, t1.%s_sync_status sku_sync_status,
t2.*,
t3.prefix, t3.name, t3.unit, t3.img,
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.img,
t4.%s_category_id vendor_vendor_cat_id,
t4.%s_sync_status cat_sync_status, t4.%s_id vendor_cat_id,
t5sku.%s_sync_status sku_cat_sync_status, t5sku.%s_id sku_vendor_cat_id

View File

@@ -17,6 +17,7 @@ const (
FieldElmSyncStatus = "ElmSyncStatus"
FieldEbaiSyncStatus = "EbaiSyncStatus"
FieldMtwmSyncStatus = "MtwmSyncStatus"
FieldWscSyncStatus = "WscSyncStatus"
FieldVendorID = "VendorID"
FieldStoreID = "StoreID"
@@ -30,6 +31,7 @@ const (
FieldElmID = "ElmID"
FieldEbaiID = "EbaiID"
FieldMtwmID = "MtwmID"
FieldWscID = "WscID"
FieldSkuID = "SkuID"
FieldLevel = "Level"

View File

@@ -135,6 +135,7 @@ type SkuCategory struct {
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"`
@@ -162,13 +163,15 @@ type SkuName struct {
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"` // 微盟图片地址
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"`
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"`
}

View File

@@ -44,10 +44,12 @@ type StoreSkuCategoryMap struct {
ElmID int64 `orm:"column(elm_id);index"`
EbaiID int64 `orm:"column(ebai_id);index"`
MtwmID string `orm:"column(mtwm_id);index;size(16)"` // 美团外卖没有ID保存名字
WscID int64 `orm:"column(wsc_id);index"`
ElmSyncStatus int8 `orm:"default(2)"`
EbaiSyncStatus int8 `orm:"default(2)"`
MtwmSyncStatus int8 `orm:"default(2)"`
WscSyncStatus int8 `orm:"default(2)"`
}
func (*StoreSkuCategoryMap) TableUnique() [][]string {
@@ -66,14 +68,17 @@ type StoreSkuBind struct {
UnitPrice int // 这个是一斤的门店商品价放在这里的原因是避免额外增加一张store sku_name表逻辑上要保证同一SKU NAME中的所有SKU这个字段的数据一致
Status int
ElmID int64 `orm:"column(elm_id);index"`
EbaiID int64 `orm:"column(ebai_id);index"`
MtwmID int64 `orm:"column(mtwm_id)"` // 这个也不是必须的只是为了DAO取数据语句一致
ElmID int64 `orm:"column(elm_id);index"`
EbaiID int64 `orm:"column(ebai_id);index"`
MtwmID int64 `orm:"column(mtwm_id)"` // 这个也不是必须的只是为了DAO取数据语句一致
WscID string `orm:"column(wsc_id);size(64);index"`
JdSyncStatus int8
ElmSyncStatus int8
EbaiSyncStatus int8
MtwmSyncStatus int8
JdSyncStatus int8 `orm:"default(2)"`
ElmSyncStatus int8 `orm:"default(2)"`
EbaiSyncStatus int8 `orm:"default(2)"`
MtwmSyncStatus int8 `orm:"default(2)"`
WscSyncStatus int8 `orm:"default(2)"`
}
func (*StoreSkuBind) TableUnique() [][]string {