实验StoreSkuAct

This commit is contained in:
gazebo
2020-01-16 10:47:06 +08:00
parent b94a1dd520
commit 88748b4d99
12 changed files with 409 additions and 126 deletions

View File

@@ -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
// }