Merge branch 'mark' of e.coding.net:rosydev/jx-callback into mark
This commit is contained in:
@@ -830,6 +830,10 @@ func UpdateStoresSkusByBind(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBind
|
||||
}
|
||||
}()
|
||||
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)
|
||||
if err = err2; err != nil {
|
||||
dao.Rollback(db)
|
||||
@@ -2943,68 +2947,75 @@ func GetCellForFocusStoreSkus(db *dao.DaoDB, rowNum int, row []string, sheetPara
|
||||
skuMap[skuID] = price
|
||||
}
|
||||
|
||||
func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
var (
|
||||
skuNameMap = make(map[int][]*StoreSkuBindSkuInfo)
|
||||
result1 []interface{}
|
||||
)
|
||||
func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInfo, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
var result1 []interface{}
|
||||
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) {
|
||||
switch step {
|
||||
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) {
|
||||
store := batchItemList[0].(*model.Store)
|
||||
for k, v := range skuNameMap {
|
||||
var price int
|
||||
focusList, _ := dao.GetStoreSkuBindByNameID(db, store.ID, k, model.StoreSkuBindStatusNormal)
|
||||
//有关注过
|
||||
if len(focusList) > 0 {
|
||||
price = focusList[0].UnitPrice
|
||||
} else {
|
||||
var payPercentage int
|
||||
if store.PayPercentage < 50 {
|
||||
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}
|
||||
var (
|
||||
price int
|
||||
payPercentage int
|
||||
)
|
||||
skuBindInfo := batchItemList[0].(*StoreSkuBindInfo)
|
||||
storeID := skuBindInfo.StoreID
|
||||
skuID := skuBindInfo.Skus[0].SkuID
|
||||
store, err := dao.GetStoreDetail(db, storeID, -1)
|
||||
if err != nil {
|
||||
return retVal, err
|
||||
}
|
||||
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
|
||||
}
|
||||
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()
|
||||
result1, _ = taskParallel.GetResult(0)
|
||||
case 2:
|
||||
case 1:
|
||||
var skuBindInfos []*StoreSkuBindInfo
|
||||
for _, v := range result1 {
|
||||
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
|
||||
}
|
||||
UpdateStoresSkusByBind(ctx, skuBindInfos, isAsync, isContinueWhenError)
|
||||
hint, err = UpdateStoresSkusByBind(ctx, skuBindInfos, isAsync, isContinueWhenError)
|
||||
}
|
||||
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()
|
||||
if !isAsync {
|
||||
_, err = taskSeq.GetResult(0)
|
||||
|
||||
@@ -610,18 +610,19 @@ func (c *StoreSkuController) GetVendorStoreSkuPrice() {
|
||||
// @Title 根据skuID关注商品,价格为中位价,部分可售
|
||||
// @Description 根据skuID关注商品,价格为中位价,部分可售
|
||||
// @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 isContinueWhenError formData bool true "单个同步失败是否继续,缺省false"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /FocusStoreSkusBySku [post]
|
||||
func (c *StoreSkuController) FocusStoreSkusBySku() {
|
||||
var skuIDList []int
|
||||
var skuBindInfos []*cms.StoreSkuBindInfo
|
||||
c.callFocusStoreSkusBySku(func(params *tStoreSkuFocusStoreSkusBySkuParams) (retVal interface{}, errCode string, err error) {
|
||||
if jxutils.Strings2Objs(params.SkuIDs, &skuIDList); err == nil {
|
||||
retVal, err = cms.FocusStoreSkusBySku(params.Ctx, skuIDList, params.IsAsync, params.IsContinueWhenError)
|
||||
if err = jxutils.Strings2Objs(params.Payload, &skuBindInfos); err != nil {
|
||||
return retVal, "", err
|
||||
}
|
||||
retVal, err = cms.FocusStoreSkusBySku(params.Ctx, skuBindInfos, params.IsAsync, params.IsContinueWhenError)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user