- 修复dao.GetSkusCategories没有取全分类的问题

This commit is contained in:
gazebo
2019-09-17 21:44:04 +08:00
parent d5b31014ca
commit 26221afaef

View File

@@ -111,8 +111,8 @@ func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int
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
FROM store_sku_bind t1
JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ?
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ?
JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ?
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
`
if level == 2 {
sql += `
@@ -128,26 +128,27 @@ func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int
LEFT JOIN store_sku_category_map t5 ON t4.id = t5.category_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
LEFT JOIN sku_category t4p ON t4.parent_id = t4p.id
LEFT JOIN store_sku_category_map t5p ON t4p.id = t5p.category_id AND t5p.store_id = t1.store_id AND t5p.deleted_at = ?
WHERE t1.deleted_at = ? AND t1.store_id = ? AND t1.status = ?
WHERE t1.deleted_at = ? AND t1.store_id = ? AND ((t1.status = ? AND t2.status = ? AND t3.status = ?) OR (t1.%s_sync_status & ? = 0))
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.SkuStatusNormal,
utils.DefaultTimeValue,
model.SkuStatusNormal,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
storeID,
model.SkuStatusNormal,
model.SkuStatusNormal,
model.SkuStatusNormal,
model.SyncFlagNewMask | model.SyncFlagDeletedMask,
}
if len(skuIDs) > 0 {
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
sqlParams = append(sqlParams, skuIDs)
}
fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
sql = fmt.Sprintf(sql, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix)
sql = fmt.Sprintf(sql, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix, fieldPrefix)
if err = GetRows(db, &cats, sql, sqlParams...); err != nil {
return nil, err
}