Merge remote-tracking branch 'origin/mark' into yonghui

This commit is contained in:
苏尹岚
2020-01-03 10:54:36 +08:00
4 changed files with 169 additions and 88 deletions

View File

@@ -208,6 +208,13 @@ type SkuNameAndPlace struct {
Type int `json:"type"`
}
type StoreSkuPriceAndWeight struct {
VendorSkuID string `orm:"column(vendor_sku_id)"`
SkuID int `orm:"column(sku_id)"`
Weight int
Price int
}
// todo 应该通过需要同步的skuid来驱动同步分类而不是当前这种分开的逻辑
// 单门店模式厂商适用
// 从store_sku_bind中得到所有依赖的商家分类信息
@@ -632,6 +639,42 @@ func oldGetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSync
return skus, err
}
func GetStoreSkuPriceAndWeight(db *DaoDB, vendorStoreID string, vendorID int, vendorSkuIDs []string) (l []*StoreSkuPriceAndWeight, err error) {
var vendorSkuIDField, sqlThingMap string
var thingMapParams []interface{}
if vendorID == model.VendorIDJX {
vendorSkuIDField = "t1.id"
} else if model.MultiStoresVendorMap[vendorID] != 0 {
sqlThingMap = `
LEFT JOIN thing_map t4 ON t4.thing_type = ? AND t4.thing_id = t1.id AND t4.deleted_at = ? AND t4.vendor_id = t3.vendor_id AND t4.vendor_org_code = t3.vendor_org_code`
thingMapParams = []interface{}{
model.ThingTypeSku, utils.DefaultTimeValue,
}
vendorSkuIDField = "t4.vendor_thing_id"
} else {
vendorSkuIDField = fmt.Sprintf("t2.%s_id", ConvertDBFieldPrefix(model.VendorNames[vendorID]))
}
sql := fmt.Sprintf(`
SELECT %s vendor_sku_id, t1.id sku_id, t2.price, t1.weight
FROM sku t1
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.deleted_at = ?
LEFT JOIN store_map t3 ON t3.store_id = t2.store_id AND t3.vendor_id = ? AND t3.vendor_store_id = ? AND t2.deleted_at = ?
%s
WHERE %s IN (`+GenQuestionMarks(len(vendorSkuIDs))+`)`, vendorSkuIDField, sqlThingMap, vendorSkuIDField)
sqlParams := []interface{}{
utils.DefaultTimeValue,
vendorID, vendorStoreID, utils.DefaultTimeValue,
}
sqlParams = append(sqlParams, thingMapParams...)
if vendorID == model.VendorIDJX {
sqlParams = append(sqlParams, utils.StringSlice2Int(vendorSkuIDs))
} else {
sqlParams = append(sqlParams, vendorSkuIDs)
}
err = GetRows(db, &l, sql, sqlParams...)
return l, err
}
// 这个函数之前是要设置没有删除或同步标志不为0的会导致将同步标志不为0且删除了的把标志去掉现在改为只设置没有删除的
func SetStoreSkuSyncStatus(db *DaoDB, vendorID int, storeIDs []int, skuIDs []int, syncStatus int) (num int64, err error) {
globals.SugarLogger.Debugf("SetStoreSkuSyncStatus, storeIDs:%v, vendorID:%d", storeIDs, vendorID)