自动关注

This commit is contained in:
苏尹岚
2019-12-31 13:31:29 +08:00
parent 2c5d4801b0
commit 0f2058de84
11 changed files with 212 additions and 42 deletions

View File

@@ -72,12 +72,6 @@ type StoreSkuBindInfo struct {
Skus []*StoreSkuBindSkuInfo `json:"skus,omitempty"`
}
type tStoreSkuBindInfo struct {
NameID int `json:"nameID"`
UnitPrice int `json:"unitPrice"` // 对于是份的SKU就是单价每斤价格其它则为总价
IsFocused bool `json:"isFocused"` //是否关注过
}
type tStoreSkuBindAndSpec struct {
model.StoreSkuBind
SkuStatus int
@@ -2963,3 +2957,61 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin
}
return hint, err
}
func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync bool) (err error) {
var (
nameMap = make(map[int]*StoreSkuBindInfo)
)
db := dao.GetDB()
storeList, err := dao.GetStoreList(db, nil, nil, "")
for _, v := range storeList {
storeSkuList, _ := dao.GetStoreSkusAndSkuName(db, []int{v.ID}, skuIDs)
for _, vv := range storeSkuList {
if nameMap[vv.ID] != nil {
nameMap[vv.ID].Skus = append(nameMap[vv.ID].Skus, &StoreSkuBindSkuInfo{
SkuID: vv.SkuID,
})
} else {
skuBindInfo := &StoreSkuBindInfo{
UnitPrice: vv.UnitPrice,
NameID: vv.ID,
StoreID: v.ID,
Skus: []*StoreSkuBindSkuInfo{},
}
nameMap[vv.ID] = skuBindInfo
}
}
}
for _, v := range nameMap {
var skuBindInfoList []*StoreSkuBindInfo
skuBindInfoResult := &StoreSkuBindInfo{
NameID: v.NameID,
UnitPrice: v.UnitPrice,
IsFocus: 1,
}
var skuBindSkuList []*StoreSkuBindSkuInfo
skuMap := make(map[int]int)
skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil)
if len(v.Skus) != len(skuList) {
for _, skus := range v.Skus {
skuMap[skus.SkuID] = 1
}
for _, vv := range skuList {
if skuMap[vv.ID] != 1 {
continue
}
skuBindSkuList = append(skuBindSkuList, &StoreSkuBindSkuInfo{
SkuID: vv.ID,
IsSale: 0,
})
}
}
skuBindInfoList = append(skuBindInfoList, skuBindInfoResult)
if isSync {
UpdateStoreSkus(ctx, v.StoreID, skuBindInfoList, true, true)
} else {
updateStoresSkusWithoutSync(ctx, db, []int{v.StoreID}, skuBindInfoList, false)
}
}
return err
}

View File

@@ -0,0 +1,9 @@
package event
func AddOperateEvent() {
}
func AddOperateEventDetail() {
}

View File

@@ -82,31 +82,26 @@ func BeginSavePriceRefer(ctx *jxcontext.Context, cityCodes, skuIDs []int) (err e
_, err = task.GetResult(0)
dao.Commit(db)
}
dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
if r != nil {
panic(r)
}
}
}()
priceReferList, err := dao.GetPriceReferSnapshotNoPage(db, nil, nil, nil, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, nil, nil, nil, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
if len(priceReferList) > 0 {
task := tasksch.NewParallelTask("更新单价", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
v := batchItemList[0].(*model.PriceReferSnapshot)
priceRefer, err := dao.GetPriceReferUnitPrice(db, v.CityCode, v.NameID, v.SnapshotAt)
v.MidUnitPrice = priceRefer.MidUnitPrice
v.MaxUnitPrice = priceRefer.MaxUnitPrice
v.MinUnitPrice = priceRefer.MinUnitPrice
v.AvgUnitPrice = priceRefer.AvgUnitPrice
_, err = dao.UpdateEntity(db, v, "MidUnitPrice", "MaxUnitPrice", "AvgUnitPrice", "MinUnitPrice")
return retVal, err
}, priceReferList)
tasksch.HandleTask(task, nil, true).Run()
_, err = task.GetResult(0)
dao.Begin(db)
defer func() {
if r := recover(); r != nil || err != nil {
dao.Rollback(db)
if r != nil {
panic(r)
}
}
}()
for _, v := range priceReferList {
priceRefer, _ := dao.GetPriceReferUnitPrice(db, v.CityCode, v.NameID, v.SnapshotAt)
v.MidUnitPrice = priceRefer.MidUnitPrice
v.MaxUnitPrice = priceRefer.MaxUnitPrice
v.MinUnitPrice = priceRefer.MinUnitPrice
v.AvgUnitPrice = priceRefer.AvgUnitPrice
_, err = dao.UpdateEntity(db, v, "MidUnitPrice", "MaxUnitPrice", "AvgUnitPrice", "MinUnitPrice")
}
dao.Commit(db)
}
dao.Commit(db)
return err
}