- CopyStoreSkus
This commit is contained in:
@@ -10,6 +10,12 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
)
|
||||
|
||||
const (
|
||||
CopyStoreSkuModeFresh = "fresh"
|
||||
CopyStoreSkuModeUpdate = "update"
|
||||
// CopyStoreSkuModeAdd = "add"
|
||||
)
|
||||
|
||||
// GetStoreSkus用
|
||||
type StoreSkuNameExt struct {
|
||||
model.SkuName
|
||||
@@ -383,6 +389,92 @@ func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName
|
||||
return int64(len(skuIDs)), err
|
||||
}
|
||||
|
||||
func CopyStoreSkus(fromStoreID, toStoreID int, copyMode string, params map[string]interface{}, userName string) (num int64, err error) {
|
||||
db := dao.GetDB()
|
||||
sqlCatAndSku := ""
|
||||
sqlCatAndSkuParams := make([]interface{}, 0)
|
||||
if params["categoryIDs"] != nil {
|
||||
var cats []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["categoryIDs"].(string)), &cats); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if len(cats) > 0 {
|
||||
sqlCatAndSku += " AND t3.category_id IN (" + dao.GenQuestionMarks(len(cats)) + ")"
|
||||
sqlCatAndSkuParams = append(sqlCatAndSkuParams, cats)
|
||||
}
|
||||
}
|
||||
if params["skuIDs"] != nil {
|
||||
var skus []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["skuIDs"].(string)), &skus); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if len(skus) > 0 {
|
||||
sqlCatAndSku += " AND t1.sku_id IN (" + dao.GenQuestionMarks(len(skus)) + ")"
|
||||
sqlCatAndSkuParams = append(sqlCatAndSkuParams, skus)
|
||||
}
|
||||
}
|
||||
pricePercentage := 100
|
||||
if params["pricePercentage"] != nil {
|
||||
pricePercentage = params["pricePercentage"].(int)
|
||||
}
|
||||
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
dao.Rollback(db)
|
||||
if r := recover(); r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if copyMode == CopyStoreSkuModeFresh || copyMode == CopyStoreSkuModeUpdate {
|
||||
sqlDelete := `
|
||||
DELETE t1
|
||||
FROM store_sku_bind t1
|
||||
JOIN sku t2 ON t1.sku_id = t2.id
|
||||
JOIN sku_name t3 ON t2.name_id = t3.id
|
||||
WHERE t1.store_id = ? AND t1.deleted_at = ?
|
||||
`
|
||||
sqlDeleteParams := []interface{}{
|
||||
toStoreID,
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if copyMode == CopyStoreSkuModeUpdate {
|
||||
sqlDelete += sqlCatAndSku
|
||||
sqlDeleteParams = append(sqlDeleteParams, sqlCatAndSkuParams)
|
||||
}
|
||||
if _, err = dao.ExecuteSQL(db, sqlDelete, sqlDeleteParams); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
sql := `
|
||||
INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, unit_price, status, jd_sync_status, elm_sync_status, ebai_sync_status)
|
||||
SELECT NOW(), NOW(), ?, ?,
|
||||
?, t1.sku_id, 0, t1.price * ? / 100, t1.unit_price * ? / 100, t1.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
|
||||
WHERE t1.store_id = ? AND t1.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
userName,
|
||||
utils.DefaultTimeValue,
|
||||
toStoreID,
|
||||
pricePercentage,
|
||||
pricePercentage,
|
||||
model.SyncFlagNewMask,
|
||||
model.SyncFlagNewMask,
|
||||
model.SyncFlagNewMask,
|
||||
fromStoreID,
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
sql += sqlCatAndSku
|
||||
sqlParams = append(sqlParams, sqlCatAndSkuParams)
|
||||
num, err = dao.ExecuteSQL(db, sql, sqlParams)
|
||||
if err == nil {
|
||||
dao.Commit(db)
|
||||
}
|
||||
return num, err
|
||||
}
|
||||
|
||||
func setStoreSkuBindStatus(skuBind *model.StoreSkuBind, status int8) {
|
||||
skuBind.JdSyncStatus |= status
|
||||
skuBind.ElmSyncStatus |= status
|
||||
|
||||
Reference in New Issue
Block a user