package dao import ( "fmt" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/globals" ) func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) { cities = []*model.Place{} sql := ` SELECT DISTINCT t3.* FROM sku_name_place_bind t1 JOIN place t2 ON t1.place_code = t2.code JOIN place t3 ON (t2.level = 2 AND t2.code = t3.code) OR (t2.level = 1 AND t2.code = t3.parent_code) WHERE t1.name_id = ? ` if vendorID == model.VendorIDJD { sql += "AND t3.jd_code <> 0\n" } return cities, GetRows(db, &cities, sql, nameID) } func DeleteSkuNamePlace(db *DaoDB, nameID int, placeCodes []int) (num int64, err error) { sql := ` DELETE FROM sku_name_place_bind WHERE name_id = ? ` sqlParams := []interface{}{ nameID, } if len(placeCodes) > 0 { sql += " AND place_code IN (" + GenQuestionMarks(len(placeCodes)) + ")" sqlParams = append(sqlParams, placeCodes) } return ExecuteSQL(db, sql, sqlParams...) } func GetSkuNameByHashCode(db *DaoDB, hashCode string) (skuName *model.SkuName, err error) { sql := ` SELECT * FROM sku_name WHERE img_hash_code = ? ` sqlParams := []interface{}{ hashCode, } skuName = &model.SkuName{} if err = GetRow(db, skuName, sql, sqlParams...); err == nil { return skuName, nil } return nil, err } func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*model.SkuAndName, err error) { sql := ` SELECT t1.*, t2.name, t2.unit FROM sku t1 JOIN sku_name t2 ON t2.id = t1.name_id AND t2.deleted_at = ? ` sqlWhere := ` WHERE t1.deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, utils.DefaultTimeValue, } if len(skuIDs) > 0 { sqlWhere += " AND t1.id IN (" + GenQuestionMarks(len(skuIDs)) + ")" sqlParams = append(sqlParams, skuIDs) } if len(nameIDs) > 0 { sqlWhere += " AND t1.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" sqlParams = append(sqlParams, nameIDs) } if len(statuss) > 0 { sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ") AND t2.status IN (" + GenQuestionMarks(len(statuss)) + ")" sqlParams = append(sqlParams, statuss, statuss) } if len(catIDs) > 0 { sql += ` JOIN sku_category t3 ON t3.id = t2.category_id LEFT JOIN sku_category t3p ON t3p.id = t3.parent_id ` sqlWhere += " AND (t3.id IN (" + GenQuestionMarks(len(catIDs)) + ")" sqlWhere += " OR t3p.id IN (" + GenQuestionMarks(len(catIDs)) + ") )" sqlParams = append(sqlParams, catIDs, catIDs) } sql += sqlWhere if err = GetRows(db, &skuList, sql, sqlParams...); err == nil { return skuList, nil } return nil, err } func GetSkuNames(db *DaoDB, nameIDs []int) (skuNameList []*model.SkuName, err error) { sql := ` SELECT * FROM sku_name t1 WHERE t1.deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, } if len(nameIDs) > 0 { sql += " AND t1.id IN (" + GenQuestionMarks(len(nameIDs)) + ")" sqlParams = append(sqlParams, nameIDs) } if err = GetRows(db, &skuNameList, sql, sqlParams...); err == nil { return skuNameList, nil } return nil, err } func GetSkuByNames(db *DaoDB, nameIDs []int) (skuList []*model.Sku, err error) { sql := ` SELECT * FROM sku t1 WHERE t1.deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, } if len(nameIDs) > 0 { sql += " AND t1.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" sqlParams = append(sqlParams, nameIDs) } if err = GetRows(db, &skuList, sql, sqlParams...); err == nil { return skuList, nil } return nil, err } func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) { skuList, err := GetSkuByNames(db, nameIDs) if err == nil { for _, sku := range skuList { skuIDs = append(skuIDs, sku.ID) } } return skuIDs, err } func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) { sql := ` SELECT t1.* FROM sku t1 JOIN sku_name t2 ON t2.id = t1.name_id WHERE t1.deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, } if len(catIDs) > 0 { sql += " AND t2.category_id IN (" + GenQuestionMarks(len(catIDs)) + ")" sqlParams = append(sqlParams, catIDs) } err = GetRows(db, &skuList, sql, sqlParams...) globals.SugarLogger.Debugf("GetSkuByCats err:%v", err) return skuList, err } func SetSkuSyncStatus(db *DaoDB, vendorID int, skuIDs []int, syncStatus int) (num int64, err error) { globals.SugarLogger.Debugf("SetSkuSyncStatus, vendorID:%d", vendorID) fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID]) sql := fmt.Sprintf(` UPDATE sku t1 SET t1.%s_sync_status = IF(t1.deleted_at = ?, t1.%s_sync_status | ?, 0) `, fieldPrefix, fieldPrefix) sqlParams := []interface{}{ utils.DefaultTimeValue, syncStatus, } if (syncStatus & model.SyncFlagNewMask) != 0 { sql += fmt.Sprintf(`, t1.%s_id = 0 `, fieldPrefix) } sql += " WHERE 1 = 1" if len(skuIDs) > 0 { sql += " AND t1.id IN (" + GenQuestionMarks(len(skuIDs)) + ")" sqlParams = append(sqlParams, skuIDs) } return ExecuteSQL(db, sql, sqlParams...) }