根据skuid批量关注
This commit is contained in:
@@ -830,6 +830,10 @@ func UpdateStoresSkusByBind(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBind
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
for _, storeID := range storeIDs {
|
for _, storeID := range storeIDs {
|
||||||
|
fmt.Println(storeID)
|
||||||
|
for _, v := range skuBindInfosMap[storeID] {
|
||||||
|
fmt.Println(*v)
|
||||||
|
}
|
||||||
skuIDs, err2 := updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosMap[storeID], false)
|
skuIDs, err2 := updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosMap[storeID], false)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -2943,68 +2947,75 @@ func GetCellForFocusStoreSkus(db *dao.DaoDB, rowNum int, row []string, sheetPara
|
|||||||
skuMap[skuID] = price
|
skuMap[skuID] = price
|
||||||
}
|
}
|
||||||
|
|
||||||
func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInfo, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
var (
|
var result1 []interface{}
|
||||||
skuNameMap = make(map[int][]*StoreSkuBindSkuInfo)
|
|
||||||
result1 []interface{}
|
|
||||||
)
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
|
|
||||||
storeList, err := dao.GetStoreList(db, nil, nil, "")
|
|
||||||
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
for _, v := range skuList {
|
|
||||||
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
|
|
||||||
SkuID: v.ID,
|
|
||||||
IsSale: 1,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
store := batchItemList[0].(*model.Store)
|
var (
|
||||||
for k, v := range skuNameMap {
|
price int
|
||||||
var price int
|
payPercentage int
|
||||||
focusList, _ := dao.GetStoreSkuBindByNameID(db, store.ID, k, model.StoreSkuBindStatusNormal)
|
)
|
||||||
//有关注过
|
skuBindInfo := batchItemList[0].(*StoreSkuBindInfo)
|
||||||
if len(focusList) > 0 {
|
storeID := skuBindInfo.StoreID
|
||||||
price = focusList[0].UnitPrice
|
skuID := skuBindInfo.Skus[0].SkuID
|
||||||
} else {
|
store, err := dao.GetStoreDetail(db, storeID, -1)
|
||||||
var payPercentage int
|
if err != nil {
|
||||||
if store.PayPercentage < 50 {
|
return retVal, err
|
||||||
payPercentage = 70
|
|
||||||
} else {
|
|
||||||
payPercentage = store.PayPercentage
|
|
||||||
}
|
|
||||||
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{store.CityCode}, nil, []int{k}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
|
||||||
if len(priceReferList) > 0 {
|
|
||||||
price = priceReferList[0].MidUnitPrice * payPercentage / 100
|
|
||||||
}
|
|
||||||
}
|
|
||||||
skuBindInfo := &StoreSkuBindInfo{
|
|
||||||
StoreID: store.ID,
|
|
||||||
NameID: k,
|
|
||||||
UnitPrice: price,
|
|
||||||
IsFocus: 1,
|
|
||||||
Skus: v,
|
|
||||||
}
|
|
||||||
retVal = []*StoreSkuBindInfo{skuBindInfo}
|
|
||||||
}
|
}
|
||||||
|
skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil)
|
||||||
|
if err != nil {
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
if len(skuList) == 0 {
|
||||||
|
return retVal, fmt.Errorf("未查询到此商品!商品id :[%V]", skuID)
|
||||||
|
}
|
||||||
|
focusList, _ := dao.GetStoreSkuBindByNameID(db, storeID, skuList[0].NameID, model.StoreSkuBindStatusNormal)
|
||||||
|
//有关注过
|
||||||
|
if len(focusList) > 0 {
|
||||||
|
price = focusList[0].UnitPrice
|
||||||
|
} else {
|
||||||
|
if store.PayPercentage < 50 {
|
||||||
|
payPercentage = 70
|
||||||
|
} else {
|
||||||
|
payPercentage = store.PayPercentage
|
||||||
|
}
|
||||||
|
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{store.CityCode}, nil, []int{skuList[0].NameID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
||||||
|
if len(priceReferList) > 0 {
|
||||||
|
price = priceReferList[0].MidUnitPrice * payPercentage / 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skuBindSkuInfo := &StoreSkuBindSkuInfo{
|
||||||
|
SkuID: skuID,
|
||||||
|
IsSale: 1,
|
||||||
|
}
|
||||||
|
var skuBindSkuInfos []*StoreSkuBindSkuInfo
|
||||||
|
skuBindSkuInfos = append(skuBindSkuInfos, skuBindSkuInfo)
|
||||||
|
skuBindInfo2 := &StoreSkuBindInfo{
|
||||||
|
StoreID: storeID,
|
||||||
|
NameID: skuList[0].NameID,
|
||||||
|
UnitPrice: price,
|
||||||
|
IsFocus: 1,
|
||||||
|
Skus: skuBindSkuInfos,
|
||||||
|
}
|
||||||
|
retVal = []*StoreSkuBindInfo{skuBindInfo2}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
taskParallel := tasksch.NewParallelTask("根据skuID部分关注商品", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, storeList)
|
taskParallel := tasksch.NewParallelTask("根据skuID部分关注商品", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, skuBindInfos)
|
||||||
tasksch.HandleTask(taskParallel, task, true).Run()
|
tasksch.HandleTask(taskParallel, task, true).Run()
|
||||||
result1, _ = taskParallel.GetResult(0)
|
result1, _ = taskParallel.GetResult(0)
|
||||||
case 2:
|
case 1:
|
||||||
var skuBindInfos []*StoreSkuBindInfo
|
var skuBindInfos []*StoreSkuBindInfo
|
||||||
for _, v := range result1 {
|
for _, v := range result1 {
|
||||||
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
|
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
|
||||||
}
|
}
|
||||||
UpdateStoresSkusByBind(ctx, skuBindInfos, isAsync, isContinueWhenError)
|
hint, err = UpdateStoresSkusByBind(ctx, skuBindInfos, isAsync, isContinueWhenError)
|
||||||
}
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
taskSeq := tasksch.NewSeqTask2("根据skuID批量部分关注商品", ctx, isContinueWhenError, taskSeqFunc, 3)
|
taskSeq := tasksch.NewSeqTask2("根据skuID批量部分关注商品", ctx, isContinueWhenError, taskSeqFunc, 2)
|
||||||
tasksch.HandleTask(taskSeq, nil, true).Run()
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
if !isAsync {
|
if !isAsync {
|
||||||
_, err = taskSeq.GetResult(0)
|
_, err = taskSeq.GetResult(0)
|
||||||
|
|||||||
@@ -610,18 +610,19 @@ func (c *StoreSkuController) GetVendorStoreSkuPrice() {
|
|||||||
// @Title 根据skuID关注商品,价格为中位价,部分可售
|
// @Title 根据skuID关注商品,价格为中位价,部分可售
|
||||||
// @Description 根据skuID关注商品,价格为中位价,部分可售
|
// @Description 根据skuID关注商品,价格为中位价,部分可售
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param skuIDs formData string true "商品ID列表"
|
// @Param payload formData string true "json数据,StoreSkuBindInfo对象数组"
|
||||||
// @Param isAsync formData bool true "是否异步,缺省是同步"
|
// @Param isAsync formData bool true "是否异步,缺省是同步"
|
||||||
// @Param isContinueWhenError formData bool true "单个同步失败是否继续,缺省false"
|
// @Param isContinueWhenError formData bool true "单个同步失败是否继续,缺省false"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /FocusStoreSkusBySku [post]
|
// @router /FocusStoreSkusBySku [post]
|
||||||
func (c *StoreSkuController) FocusStoreSkusBySku() {
|
func (c *StoreSkuController) FocusStoreSkusBySku() {
|
||||||
var skuIDList []int
|
var skuBindInfos []*cms.StoreSkuBindInfo
|
||||||
c.callFocusStoreSkusBySku(func(params *tStoreSkuFocusStoreSkusBySkuParams) (retVal interface{}, errCode string, err error) {
|
c.callFocusStoreSkusBySku(func(params *tStoreSkuFocusStoreSkusBySkuParams) (retVal interface{}, errCode string, err error) {
|
||||||
if jxutils.Strings2Objs(params.SkuIDs, &skuIDList); err == nil {
|
if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil {
|
||||||
retVal, err = cms.FocusStoreSkusBySku(params.Ctx, skuIDList, params.IsAsync, params.IsContinueWhenError)
|
return retVal, "", err
|
||||||
}
|
}
|
||||||
|
retVal, err = cms.FocusStoreSkusBySku(params.Ctx, skuBindInfos, params.IsAsync, params.IsContinueWhenError)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user