167 lines
5.9 KiB
Go
167 lines
5.9 KiB
Go
package dao
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
)
|
|
|
|
type SkuStoreCatInfo struct {
|
|
model.SkuCategory
|
|
MapID int `orm:"column(map_id)"` // 这个主要用于判断是否有store_sku_category_map
|
|
VendorCatID string `orm:"column(vendor_cat_id)"`
|
|
CatSyncStatus int8
|
|
|
|
ParentCatName string
|
|
ParentMapID int `orm:"column(parent_map_id)"` // 这个主要用于判断是否有父store_sku_category_map
|
|
ParentVendorCatID string `orm:"column(parent_vendor_cat_id)"`
|
|
ParentCatSyncStatus int8
|
|
}
|
|
|
|
type StoreCatSyncInfo struct {
|
|
CatName string
|
|
Seq int `json:"seq"`
|
|
model.StoreSkuCategoryMap
|
|
|
|
ParentCatName string
|
|
ParentCatID int `orm:"column(parent_cat_id)"` // 这个主要用于判断是否有父store_sku_category_map
|
|
ParentVendorCatID string `orm:"column(parent_vendor_cat_id)"`
|
|
ParentCatSyncStatus int8
|
|
}
|
|
|
|
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
|
|
FROM store_sku_bind t1
|
|
JOIN sku t2 ON t1.sku_id = t2.id
|
|
JOIN sku_name t3 ON t2.name_id = t3.id
|
|
`
|
|
if level == 2 {
|
|
sql += `
|
|
JOIN sku_category t4 ON (t3.category_id = t4.id OR t2.category_id = t4.id) AND t4.level = 2
|
|
`
|
|
} else {
|
|
sql += `
|
|
LEFT JOIN sku_category t4c ON (t3.category_id = t4c.id OR t2.category_id = t4c.id)
|
|
JOIN sku_category t4 ON (t4.id = t4c.parent_id OR (t3.category_id = t4.id OR t2.category_id = t4.id)) AND t4.level = 1
|
|
`
|
|
}
|
|
sql += `
|
|
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 = ?
|
|
`
|
|
sqlParams := []interface{}{
|
|
utils.DefaultTimeValue,
|
|
utils.DefaultTimeValue,
|
|
utils.DefaultTimeValue,
|
|
storeID,
|
|
}
|
|
if len(skuIDs) > 0 {
|
|
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
|
sqlParams = append(sqlParams, skuIDs)
|
|
}
|
|
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
|
sql = fmt.Sprintf(sql, filedPrefix, filedPrefix, filedPrefix, filedPrefix)
|
|
if err = GetRows(db, &cats, sql, sqlParams...); err != nil {
|
|
return nil, err
|
|
}
|
|
return cats, err
|
|
}
|
|
|
|
func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*StoreCatSyncInfo, err error) {
|
|
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
|
sql := fmt.Sprintf(`
|
|
SELECT t5.*, t4.name cat_name, t4.seq, t4p.name parent_cat_name, t5p.category_id parent_cat_id, t5p.%s_id parent_vendor_cat_id, t5p.%s_sync_status parent_cat_sync_status
|
|
FROM store_sku_category_map t5
|
|
JOIN sku_category t4 ON t5.category_id = t4.id
|
|
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.deleted_at = ?
|
|
WHERE t5.store_id = ? AND t4.level = ? AND t5.%s_sync_status <> 0
|
|
`, filedPrefix, filedPrefix, filedPrefix)
|
|
if err = GetRows(db, &cats, sql, utils.DefaultTimeValue, storeID, level); err != nil {
|
|
return nil, err
|
|
}
|
|
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,
|
|
t2.*,
|
|
t3.prefix, t3.name, t3.unit, t3.img,
|
|
t4.%s_category_id vendor_vendor_cat_id,
|
|
t5.%s_sync_status cat_sync_status, t5.%s_id vendor_cat_id,
|
|
t5sku.%s_sync_status sku_cat_sync_status, t5sku.%s_id sku_vendor_cat_id
|
|
FROM store_sku_bind t1
|
|
JOIN sku t2 ON t1.sku_id = t2.id
|
|
JOIN sku_name t3 ON t2.name_id = t3.id
|
|
JOIN sku_category t4 ON t3.category_id = t4.id
|
|
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 store_sku_category_map t5sku ON t2.category_id = t5sku.category_id AND t5sku.store_id = t1.store_id AND t5sku.deleted_at = ?
|
|
WHERE t1.store_id = ? AND t1.%s_sync_status <> 0
|
|
`
|
|
sqlParams := []interface{}{
|
|
utils.DefaultTimeValue,
|
|
utils.DefaultTimeValue,
|
|
storeID,
|
|
}
|
|
if len(skuIDs) > 0 {
|
|
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
|
sqlParams = append(sqlParams, skuIDs)
|
|
}
|
|
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
|
sql = fmt.Sprintf(sql, tableName, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix, filedPrefix)
|
|
// globals.SugarLogger.Debug(sql)
|
|
if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
|
|
return nil, err
|
|
}
|
|
return skus, err
|
|
}
|
|
|
|
func SetStoreSkuSyncStatus(ctx *jxcontext.Context, db *DaoDB, storeID int, skuIDs []int, syncStatus int) (num int64, err error) {
|
|
sql := `
|
|
UPDATE store_sku_bind
|
|
SET ebai_sync_status = ebai_sync_status | ?
|
|
WHERE deleted_at = ? AND store_id = ?
|
|
`
|
|
sqlParams := []interface{}{
|
|
syncStatus,
|
|
utils.DefaultTimeValue,
|
|
storeID,
|
|
}
|
|
if len(skuIDs) > 0 {
|
|
sql += " AND sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
|
sqlParams = append(sqlParams, skuIDs)
|
|
}
|
|
return ExecuteSQL(db, sql, sqlParams...)
|
|
}
|