自动关注
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
9
business/jxstore/event/event.go
Normal file
9
business/jxstore/event/event.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package event
|
||||
|
||||
func AddOperateEvent() {
|
||||
|
||||
}
|
||||
|
||||
func AddOperateEventDetail() {
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user