|
|
|
|
@@ -175,16 +175,55 @@ var (
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, params, offset, pageSize)
|
|
|
|
|
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku bool, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
|
|
|
|
|
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
|
|
|
|
|
sql = `
|
|
|
|
|
FROM sku_name t1
|
|
|
|
|
JOIN sku t2 FORCE INDEX(PRIMARY) ON t1.id = t2.name_id AND t2.deleted_at = ?/* AND t2.status = ?*/
|
|
|
|
|
JOIN store t3 ON t3.deleted_at = ?
|
|
|
|
|
`
|
|
|
|
|
sqlParams = []interface{}{
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
// model.SkuStatusNormal,
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
}
|
|
|
|
|
if isAct {
|
|
|
|
|
sql += `
|
|
|
|
|
JOIN (
|
|
|
|
|
SELECT t2.store_id, t2.sku_id,
|
|
|
|
|
MIN(IF(t3.actual_act_price = 0, NULL, t3.actual_act_price)) actual_act_price, MIN(IF(t2.earning_price = 0, NULL, t2.earning_price)) earning_price /*non-zero min value*/
|
|
|
|
|
FROM act t1
|
|
|
|
|
JOIN act_store_sku t2 ON t2.act_id = t1.id AND t2.deleted_at = ?
|
|
|
|
|
JOIN act_store_sku_map t3 ON t3.bind_id = t2.id AND t3.act_id = t1.id AND (t3.sync_status & ? = 0 OR t1.type = ?)
|
|
|
|
|
JOIN act_map t4 ON t4.act_id = t1.id AND t4.vendor_id = t3.vendor_id AND t4.deleted_at = ? AND (t4.sync_status & ? = 0 OR t1.type = ?)
|
|
|
|
|
WHERE t1.deleted_at = ? AND t1.status = ? AND NOT (t1.begin_at > ? OR t1.end_at < ?)`
|
|
|
|
|
sqlParams = append(sqlParams, []interface{}{
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
model.SyncFlagNewMask,
|
|
|
|
|
model.ActSkuFake,
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
model.SyncFlagNewMask,
|
|
|
|
|
model.ActSkuFake,
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
model.ActStatusCreated,
|
|
|
|
|
time.Now(),
|
|
|
|
|
time.Now(),
|
|
|
|
|
})
|
|
|
|
|
if len(storeIDs) > 0 {
|
|
|
|
|
sql += " AND t2.store_id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
|
|
|
|
|
sqlParams = append(sqlParams, storeIDs)
|
|
|
|
|
}
|
|
|
|
|
if len(skuIDs) > 0 {
|
|
|
|
|
sql += " AND t2.sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
|
|
|
|
sqlParams = append(sqlParams, skuIDs)
|
|
|
|
|
}
|
|
|
|
|
sql += `
|
|
|
|
|
GROUP BY 1,2
|
|
|
|
|
) ta ON ta.store_id = t3.id AND ta.sku_id = t2.id`
|
|
|
|
|
}
|
|
|
|
|
if !isFocus {
|
|
|
|
|
sql += " LEFT"
|
|
|
|
|
}
|
|
|
|
|
@@ -193,15 +232,12 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|
|
|
|
LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code
|
|
|
|
|
WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/
|
|
|
|
|
`
|
|
|
|
|
sqlParams = []interface{}{
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
// model.SkuStatusNormal,
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
sqlParams = append(sqlParams, []interface{}{
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
utils.DefaultTimeValue,
|
|
|
|
|
utils.Bool2Int(isFocus),
|
|
|
|
|
// model.SkuStatusNormal,
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if isFocus {
|
|
|
|
|
sql += " AND ((t2.status = ? AND t1.status = ?) OR t4.status = ?)"
|
|
|
|
|
sqlParams = append(sqlParams, model.SkuStatusNormal, model.SkuStatusNormal, model.SkuStatusNormal)
|
|
|
|
|
@@ -318,11 +354,11 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|
|
|
|
return sql, sqlParams, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, keyword, isBySku, params, offset, pageSize)
|
|
|
|
|
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
|
|
|
|
|
if !isFocus && !isBySku && (len(storeIDs) > 1 || len(storeIDs) == 0) {
|
|
|
|
|
return nil, fmt.Errorf("未关注按SkuName只能查询单店")
|
|
|
|
|
}
|
|
|
|
|
@@ -330,7 +366,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
|
|
|
|
|
return nil, fmt.Errorf("GetStoresSkus必须指定storeIDs或skuIDs或分页")
|
|
|
|
|
}
|
|
|
|
|
db := dao.GetDB()
|
|
|
|
|
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, params)
|
|
|
|
|
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, params)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|