实验StoreSkuAct
This commit is contained in:
@@ -9,7 +9,6 @@ import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/globals/refutil"
|
||||
)
|
||||
|
||||
type ActMapPureInfo struct {
|
||||
@@ -440,70 +439,71 @@ func UpdateActStatusByTime(db *DaoDB, refTime time.Time) (num int64, err error)
|
||||
return num, err
|
||||
}
|
||||
|
||||
func ActStoreSkuMap2StoreSkuAct(actStoreSkuMap *model.ActStoreSkuMap, isCanceled bool) (storeSkuAct *model.StoreSkuAct) {
|
||||
storeSkuAct = &model.StoreSkuAct{
|
||||
StoreID: actStoreSkuMap.StoreID,
|
||||
SkuID: actStoreSkuMap.SkuID,
|
||||
VendorID: actStoreSkuMap.VendorID,
|
||||
}
|
||||
storeSkuAct.CreatedAt = actStoreSkuMap.CreatedAt
|
||||
storeSkuAct.UpdatedAt = actStoreSkuMap.UpdatedAt
|
||||
storeSkuAct.LastOperator = actStoreSkuMap.LastOperator
|
||||
// func ActStoreSkuMap2StoreSkuAct(actStoreSkuMap *model.ActStoreSkuMap, isCanceled bool) (storeSkuAct *model.StoreSkuAct) {
|
||||
// storeSkuAct = &model.StoreSkuAct{
|
||||
// StoreID: actStoreSkuMap.StoreID,
|
||||
// SkuID: actStoreSkuMap.SkuID,
|
||||
// VendorID: actStoreSkuMap.VendorID,
|
||||
// }
|
||||
// storeSkuAct.CreatedAt = actStoreSkuMap.CreatedAt
|
||||
// storeSkuAct.UpdatedAt = actStoreSkuMap.UpdatedAt
|
||||
// storeSkuAct.LastOperator = actStoreSkuMap.LastOperator
|
||||
|
||||
if actStoreSkuMap.ActualActPrice > 0 {
|
||||
if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||
storeSkuAct.ActID = 0
|
||||
} else {
|
||||
storeSkuAct.ActID = actStoreSkuMap.ActID
|
||||
storeSkuAct.VendorActID = actStoreSkuMap.VendorActID
|
||||
storeSkuAct.SyncStatus = actStoreSkuMap.SyncStatus
|
||||
storeSkuAct.VendorPrice = actStoreSkuMap.VendorPrice
|
||||
storeSkuAct.ActualActPrice = actStoreSkuMap.ActualActPrice
|
||||
}
|
||||
}
|
||||
if actStoreSkuMap.EarningPrice > 0 {
|
||||
if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||
storeSkuAct.EarningActID = 0
|
||||
} else {
|
||||
storeSkuAct.EarningActID = actStoreSkuMap.ActID
|
||||
storeSkuAct.EarningPrice = actStoreSkuMap.EarningPrice
|
||||
}
|
||||
}
|
||||
return storeSkuAct
|
||||
}
|
||||
// if actStoreSkuMap.ActualActPrice > 0 {
|
||||
// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||
// storeSkuAct.ActID = 0
|
||||
// } else {
|
||||
// storeSkuAct.ActID = actStoreSkuMap.ActID
|
||||
// storeSkuAct.VendorActID = actStoreSkuMap.VendorActID
|
||||
// storeSkuAct.SyncStatus = actStoreSkuMap.SyncStatus
|
||||
// storeSkuAct.VendorPrice = actStoreSkuMap.VendorPrice
|
||||
// storeSkuAct.ActualActPrice = actStoreSkuMap.ActualActPrice
|
||||
// }
|
||||
// }
|
||||
// if actStoreSkuMap.EarningPrice > 0 {
|
||||
// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||
// storeSkuAct.EarningActID = 0
|
||||
// } else {
|
||||
// storeSkuAct.EarningActID = actStoreSkuMap.ActID
|
||||
// storeSkuAct.EarningPrice = actStoreSkuMap.EarningPrice
|
||||
// }
|
||||
// }
|
||||
// return storeSkuAct
|
||||
// }
|
||||
|
||||
func BatchUpdateActEntity(db *DaoDB, isCanceled bool, items []*KVUpdateItem) (num int64, err error) {
|
||||
if globals.IsStoreSkuAct {
|
||||
Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil || err != nil {
|
||||
Rollback(db)
|
||||
if r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
return BatchUpdateEntityByKV(db, items)
|
||||
// if globals.IsStoreSkuAct {
|
||||
// Begin(db)
|
||||
// defer func() {
|
||||
// if r := recover(); r != nil || err != nil {
|
||||
// Rollback(db)
|
||||
// if r != nil {
|
||||
// panic(r)
|
||||
// }
|
||||
// }
|
||||
// }()
|
||||
|
||||
for _, v := range items {
|
||||
if actStoreSku, ok := v.Item.(*model.ActStoreSkuMap); ok {
|
||||
for k1, v1 := range v.KVs {
|
||||
refutil.SetObjFieldByName(actStoreSku, k1, v1)
|
||||
}
|
||||
if err = CreateOrUpdateActStoreSku(db, ActStoreSkuMap2StoreSkuAct(actStoreSku, isCanceled)); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// for _, v := range items {
|
||||
// if actStoreSku, ok := v.Item.(*model.ActStoreSkuMap); ok {
|
||||
// for k1, v1 := range v.KVs {
|
||||
// refutil.SetObjFieldByName(actStoreSku, k1, v1)
|
||||
// }
|
||||
// if err = CreateOrUpdateActStoreSku(db, ActStoreSkuMap2StoreSkuAct(actStoreSku, isCanceled)); err != nil {
|
||||
// return 0, err
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
if _, err = BatchUpdateEntityByKV(db, items); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
// if _, err = BatchUpdateEntityByKV(db, items); err != nil {
|
||||
// return 0, err
|
||||
// }
|
||||
|
||||
if globals.IsStoreSkuAct {
|
||||
Commit(db)
|
||||
}
|
||||
return num, err
|
||||
// if globals.IsStoreSkuAct {
|
||||
// Commit(db)
|
||||
// }
|
||||
// return num, err
|
||||
}
|
||||
|
||||
func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err error) {
|
||||
@@ -519,7 +519,7 @@ func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err e
|
||||
return err
|
||||
}
|
||||
|
||||
func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuActList []*model.StoreSkuAct, err error) {
|
||||
func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int, minActPercentage, maxActPercentage int) (storeSkuActList []*model.StoreSkuAct, err error) {
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM store_sku_act t1
|
||||
@@ -538,14 +538,22 @@ func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuAct
|
||||
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||
sqlParams = append(sqlParams, vendorIDs)
|
||||
}
|
||||
if minActPercentage > 0 {
|
||||
sql += " AND t1.act_percentage >= ?"
|
||||
sqlParams = append(sqlParams, minActPercentage)
|
||||
}
|
||||
if maxActPercentage > 0 {
|
||||
sql += " AND t1.act_percentage <= ?"
|
||||
sqlParams = append(sqlParams, maxActPercentage)
|
||||
}
|
||||
err = GetRows(db, &storeSkuActList, sql, sqlParams...)
|
||||
return storeSkuActList, err
|
||||
}
|
||||
|
||||
func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuAndActList []*StoreSkuAndAct, err error) {
|
||||
func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int, minActPercentage, maxActPercentage int) (storeSkuAndActList []*StoreSkuAndAct, err error) {
|
||||
storeSkuList, err := GetStoresSkusInfo(db, storeIDs, skuIDs)
|
||||
if err == nil && len(storeSkuList) > 0 {
|
||||
storeSkuActList, err2 := GetStoresSkusAct(db, storeIDs, skuIDs, vendorIDs)
|
||||
storeSkuActList, err2 := GetStoresSkusAct(db, storeIDs, skuIDs, vendorIDs, minActPercentage, maxActPercentage)
|
||||
if err = err2; err == nil {
|
||||
actMap := make(map[int64][]*model.StoreSkuAct)
|
||||
for _, v := range storeSkuActList {
|
||||
@@ -566,42 +574,42 @@ func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (stor
|
||||
return storeSkuAndActList, err
|
||||
}
|
||||
|
||||
func GetConflictStoreSkuActInfo(db *DaoDB, vendorIDs []int, inStoreSkuActList []*model.StoreSkuAct) (outStoreSkuActList []*model.StoreSkuAct, err error) {
|
||||
storeIDMap := make(map[int]int)
|
||||
skuIDMap := make(map[int]int)
|
||||
inStoreSkuActMap := make(map[int64]*model.StoreSkuAct)
|
||||
for _, v := range inStoreSkuActList {
|
||||
storeIDMap[v.StoreID] = 1
|
||||
skuIDMap[v.SkuID] = 1
|
||||
inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
||||
}
|
||||
storeIDs := jxutils.IntMap2List(storeIDMap)
|
||||
skuIDs := jxutils.IntMap2List(skuIDMap)
|
||||
// func GetConflictStoreSkuActInfo(db *DaoDB, vendorIDs []int, inStoreSkuActList []*model.StoreSkuAct) (outStoreSkuActList []*model.StoreSkuAct, err error) {
|
||||
// storeIDMap := make(map[int]int)
|
||||
// skuIDMap := make(map[int]int)
|
||||
// inStoreSkuActMap := make(map[int64]*model.StoreSkuAct)
|
||||
// for _, v := range inStoreSkuActList {
|
||||
// storeIDMap[v.StoreID] = 1
|
||||
// skuIDMap[v.SkuID] = 1
|
||||
// inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
||||
// }
|
||||
// storeIDs := jxutils.IntMap2List(storeIDMap)
|
||||
// skuIDs := jxutils.IntMap2List(skuIDMap)
|
||||
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM store_sku_act t1
|
||||
WHERE
|
||||
t1.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `)
|
||||
AND t1.sku_id IN (` + GenQuestionMarks(len(skuIDs)) + `)
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
storeIDs,
|
||||
skuIDs,
|
||||
}
|
||||
if len(vendorIDs) > 0 {
|
||||
sql += ` AND t1.vendor_Id IN (` + GenQuestionMarks(len(storeIDs)) + `)`
|
||||
sqlParams = append(sqlParams, vendorIDs)
|
||||
}
|
||||
// sql := `
|
||||
// SELECT *
|
||||
// FROM store_sku_act t1
|
||||
// WHERE
|
||||
// t1.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `)
|
||||
// AND t1.sku_id IN (` + GenQuestionMarks(len(skuIDs)) + `)
|
||||
// `
|
||||
// sqlParams := []interface{}{
|
||||
// storeIDs,
|
||||
// skuIDs,
|
||||
// }
|
||||
// if len(vendorIDs) > 0 {
|
||||
// sql += ` AND t1.vendor_Id IN (` + GenQuestionMarks(len(storeIDs)) + `)`
|
||||
// sqlParams = append(sqlParams, vendorIDs)
|
||||
// }
|
||||
|
||||
var tmpStoreSkuActList []*model.StoreSkuAct
|
||||
if err = GetRows(db, &tmpStoreSkuActList, sql, sqlParams...); err == nil {
|
||||
for _, v := range tmpStoreSkuActList {
|
||||
tmpStoreSkuAct := inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
|
||||
if tmpStoreSkuAct != nil && (tmpStoreSkuAct.ActualActPrice > 0 && v.ActID != 0 && v.SyncStatus == 0 || tmpStoreSkuAct.EarningPrice > 0 && v.EarningActID != 0) {
|
||||
outStoreSkuActList = append(outStoreSkuActList, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
return outStoreSkuActList, err
|
||||
}
|
||||
// var tmpStoreSkuActList []*model.StoreSkuAct
|
||||
// if err = GetRows(db, &tmpStoreSkuActList, sql, sqlParams...); err == nil {
|
||||
// for _, v := range tmpStoreSkuActList {
|
||||
// tmpStoreSkuAct := inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
|
||||
// if tmpStoreSkuAct != nil && (tmpStoreSkuAct.ActualActPrice > 0 && v.ActID != 0 && v.SyncStatus == 0 || tmpStoreSkuAct.EarningPrice > 0 && v.EarningActID != 0) {
|
||||
// outStoreSkuActList = append(outStoreSkuActList, v)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return outStoreSkuActList, err
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user