GetSkusWithVendor中取商品城市的bug修复

This commit is contained in:
gazebo
2019-12-13 10:47:58 +08:00
parent f6baae63ee
commit 2ddd16460a
3 changed files with 51 additions and 22 deletions

View File

@@ -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
}