diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 0d28c262a..10962053d 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -84,10 +84,11 @@ func syncCategories(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.IT } func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) { - globals.SugarLogger.Debugf("SyncCategories catIDs:%v", catIDs) + globals.SugarLogger.Debugf("SyncCategories vendorIDs:%v, appOrgCodes:%v, catIDs:%v", vendorIDs, appOrgCodes, catIDs) db := dao.GetDB() catList, err := dao.GetSkuCategoryWithVendor(db, vendorIDs, appOrgCodes, -1, catIDs, true) if err == nil && len(catList) > 0 { + // TODO 同一平台不同账号会有影响needSyncParentIDs,暂不处理 var needSyncParentIDs []int for _, cat := range catList { if cat.Level == 2 && cat.ParentVendorCatID == "" { @@ -128,7 +129,7 @@ func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs } func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, nameIDs, skuIDs []int, isAsync bool) (hint string, err error) { - globals.SugarLogger.Debugf("SyncSkus nameIDs:%v, skuIDs:%v", nameIDs, skuIDs) + globals.SugarLogger.Debugf("SyncSkus vendorIDs:%v, appOrgCodes:%v, nameIDs:%v, skuIDs:%v", vendorIDs, appOrgCodes, nameIDs, skuIDs) db := dao.GetDB() skuList, err := dao.GetSkusWithVendor(db, vendorIDs, appOrgCodes, nameIDs, skuIDs, true) if err == nil && len(skuList) > 0 { diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index 3edd64d28..6cf87d936 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -8,16 +8,17 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) -type tStoreSkuSyncInfo2 struct { - StoreSkuSyncInfo - VendorPlaceCode string -} - type SkuCategoryWithVendor struct { *model.SkuCategory MapList []*model.ThingMap `json:"mapList"` } +type SkuNamePlace struct { + model.Place + NameID int `orm:"column(name_id)" json:"nameID"` + SkuID int `orm:"column(sku_id)" json:"skuID"` +} + func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) { cities = []*model.Place{} sql := ` @@ -211,7 +212,7 @@ func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, ` sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue) if mustDirty { - sql += " AND t1m.sync_status <> 0" + sql += " AND t1m.sync_status IS NOT NULL AND t1m.sync_status <> 0" } else { sql += " AND t1.deleted_at = ?" sqlParams = append(sqlParams, utils.DefaultTimeValue) @@ -253,8 +254,6 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs IF(t12.resource_type IS NULL OR t12.resource_type <> ?, t2.img2, '') img2, t2.desc_img, - t5.jd_code vendor_place_code, - t3.jd_category_id vendor_vendor_cat_id, t3m.sync_status cat_sync_status, @@ -281,15 +280,13 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs LEFT JOIN sku_category t3 ON t3.id = t2.category_id LEFT JOIN thing_map t3m ON t3m.thing_id = t3.id AND t3m.thing_type = ? AND t3m.deleted_at = ? AND t3m.vendor_id = t1m.vendor_id AND t3m.vendor_org_code = t1m.vendor_org_code - LEFT JOIN sku_name_place_bind t4 ON t2.is_global = 0 AND t4.name_id = t1.name_id - LEFT JOIN place t5 ON t5.code = t4.place_code LEFT JOIN data_resource t11 ON t11.main_url = t2.img LEFT JOIN data_resource t12 ON t12.main_url = t2.img2 WHERE 1 = 1 ` sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue) if mustDirty { - sql += " AND t1m.sync_status <> 0" + sql += " AND t1m.sync_status IS NOT NULL AND t1m.sync_status <> 0" } else { sql += " AND t1.deleted_at = ?" sqlParams = append(sqlParams, utils.DefaultTimeValue) @@ -304,18 +301,45 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs } sql += " ORDER BY t1.seq" - var list []*tStoreSkuSyncInfo2 - if err = GetRows(db, &list, sql, sqlParams...); err == nil { - skuMap := make(map[int]*StoreSkuSyncInfo) - for _, v := range list { - if skuMap[v.SkuID] == nil { - skuMap[v.SkuID] = &v.StoreSkuSyncInfo - skuList = append(skuList, &v.StoreSkuSyncInfo) + if err = GetRows(db, &skuList, sql, sqlParams...); err == nil { + skuPlaceList, err2 := GetSkuNamePlaces(db, nameIDs, skuIDs) + if err = err2; err == nil { + skuPlaceMap := make(map[int][]*SkuNamePlace) + for _, v := range skuPlaceList { + skuPlaceMap[v.SkuID] = append(skuPlaceMap[v.SkuID], v) } - if !IsVendorThingIDEmpty(v.VendorPlaceCode) { - skuMap[v.SkuID].SellCities = append(skuMap[v.SkuID].SellCities, v.VendorPlaceCode) + for _, v := range skuList { + if v.IsGlobal == 0 { + for _, v2 := range skuPlaceMap[v.SkuID] { + // 京东到家 + v.SellCities = append(v.SellCities, utils.Int2Str(v2.JdCode)) + } + } } } } return skuList, err } + +func GetSkuNamePlaces(db *DaoDB, nameIDs, skuIDs []int) (skuPlaceList []*SkuNamePlace, err error) { + sql := ` + SELECT + t4.*, + t2.id sku_id, t2.name_id + FROM sku t2 + JOIN sku_name_place_bind t3 ON t3.name_id = t2.name_id + JOIN place t4 ON t4.code = t3.place_code + WHERE t2.deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + if len(nameIDs) > 0 { + sql += " AND t2.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" + sqlParams = append(sqlParams, nameIDs) + } + if len(skuIDs) > 0 { + sql += " AND t2.id IN (" + GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + } + err = GetRows(db, &skuPlaceList, sql, sqlParams...) + return skuPlaceList, err +} diff --git a/globals/globals.go b/globals/globals.go index 17727ac4f..13299daeb 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -54,9 +54,13 @@ var ( Jd2OrgCode string IsUseThingMap bool + + OutputDebugMsgLevel int ) func init() { + OutputDebugMsgLevel = 1 + logs.SetLogFuncCallDepth(3) beego.BConfig.Log.AccessLogs = true