- jd.FullSyncStoreSkus

- refactor mtwm.SyncLocalStoreCategory
This commit is contained in:
gazebo
2018-12-07 11:34:49 +08:00
parent 2210e1020b
commit bf5d9ed219
9 changed files with 213 additions and 70 deletions

View File

@@ -7,16 +7,27 @@ import (
type StoreDetail struct {
model.Store
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
VendorStatus int `json:"vendor_status"` // 取值同Store.Status
DeliveryFee int `json:"deliveryFee"`
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
model.Place // district info
PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格
AutoPickup int8 `orm:"default(1)" json:"autoPickup"` // 是否自动拣货
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
DeliveryCompetition int8 `orm:"default(1)" json:"deliveryCompetition"` // 是否支持配送竞争
IsSync int8 `orm:"default(1)" json:"isSync"` // 是否同步
model.Place // district info
}
func GetStoreDetail(db *DaoDB, storeID, vendorID int) (storeDetail *StoreDetail, err error) {
sql := `
SELECT t2.status vendor_status, t2.vendor_store_id, t2.sync_status, district.*, t1.*
SELECT t1.*,
t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee, t2.sync_status,
t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync,
district.*
FROM store t1
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND t2.deleted_at = ?
LEFT JOIN place district ON t1.district_code = district.code

View File

@@ -6,6 +6,7 @@ import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
)
type SkuStoreCatInfo struct {
@@ -31,6 +32,29 @@ type StoreCatSyncInfo struct {
ParentCatSyncStatus int8
}
type StoreSkuSyncInfo struct {
BindID int `orm:"column(bind_id)"`
Price int64
UnitPrice int64
StoreSkuStatus int
SkuSyncStatus int8
model.Sku
VendorSkuID int64 `orm:"column(vendor_sku_id)"`
Prefix string
Name string
Unit string
Img string
VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"`
CatSyncStatus int8
VendorCatID string `orm:"column(vendor_cat_id)"`
SkuCatSyncStatus int8
SkuVendorCatID string `orm:"column(sku_vendor_cat_id)"`
}
// 单门店模式厂商适用
func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int) (cats []*SkuStoreCatInfo, err error) {
sql := `
SELECT DISTINCT t4.*, t5.id map_id, t5.%s_id vendor_cat_id, t5.%s_sync_status cat_sync_status, t4p.name parent_cat_name, t5p.id parent_map_id, t5p.%s_id parent_vendor_cat_id, t5p.%s_sync_status parent_cat_sync_status
@@ -72,6 +96,7 @@ func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int
return cats, err
}
// 单门店模式厂商适用
func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*StoreCatSyncInfo, err error) {
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql := fmt.Sprintf(`
@@ -88,34 +113,14 @@ func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*St
return cats, err
}
type StoreSkuSyncInfo struct {
BindID int `orm:"column(bind_id)"`
Price int64
UnitPrice int64
StoreSkuStatus int
SkuSyncStatus int8
model.Sku
Prefix string
Name string
Unit string
Img string
VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"`
CatSyncStatus int8
VendorCatID string `orm:"column(vendor_cat_id)"`
SkuCatSyncStatus int8
SkuVendorCatID string `orm:"column(sku_vendor_cat_id)"`
}
// 单门店模式厂商适用
func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*StoreSkuSyncInfo, err error) {
tableName := "t1"
if model.MultiStoresVendorMap[vendorID] == 1 { // 多店模式平台
tableName = "t2"
}
sql := `
SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, %s.%s_id, t1.%s_sync_status sku_sync_status,
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,
t4.%s_category_id vendor_vendor_cat_id,
@@ -147,7 +152,42 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store
return skus, err
}
// 多门店模式厂商适用
func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInfo, err error) {
globals.SugarLogger.Debugf("GetFullStoreSkus, storeID:%d, vendorID:%d", storeID, vendorID)
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,
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
FROM sku t2
LEFT JOIN store_sku_bind t1 ON t1.sku_id = t2.id AND t1.store_id = ? AND t1.deleted_at = ?
JOIN sku_name t3 ON t2.name_id = t3.id
JOIN sku_category t4 ON t3.category_id = t4.id
LEFT JOIN sku_category t5sku ON t2.category_id = t5sku.id
WHERE t2.deleted_at = ?
`
sqlParams := []interface{}{
storeID,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
}
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql = fmt.Sprintf(sql, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix)
// globals.SugarLogger.Debug(sql)
// globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
return nil, err
}
return skus, err
}
func SetStoreSkuSyncStatus(ctx *jxcontext.Context, db *DaoDB, vendorID, storeID int, skuIDs []int, syncStatus int) (num int64, err error) {
globals.SugarLogger.Debugf("SetStoreSkuSyncStatus, storeID:%d, vendorID:%d", storeID, vendorID)
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql := fmt.Sprintf(`
UPDATE store_sku_bind