Accept Merge Request #133: (yonghui -> mark)

Merge Request: 推荐商品查询修改
Created By: @苏尹岚
Accepted By: @苏尹岚
URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/133
This commit is contained in:
苏尹岚
2020-01-09 15:37:02 +08:00
2 changed files with 81 additions and 58 deletions

View File

@@ -2946,7 +2946,6 @@ func GetCellForFocusStoreSkus(db *dao.DaoDB, rowNum int, row []string, sheetPara
func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) { func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
var ( var (
skuNameMap = make(map[int][]*StoreSkuBindSkuInfo) skuNameMap = make(map[int][]*StoreSkuBindSkuInfo)
storeIDs []int
result1 []interface{} result1 []interface{}
) )
db := dao.GetDB() db := dao.GetDB()
@@ -2955,9 +2954,6 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin
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 storeList {
storeIDs = append(storeIDs, v.ID)
}
for _, v := range skuList { for _, v := range skuList {
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{ skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
SkuID: v.ID, SkuID: v.ID,
@@ -3019,67 +3015,94 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin
return hint, err return hint, err
} }
func AutoFocusStoreSkusWithoutFocusForTopSkus(ctx *jxcontext.Context) (err error) { func AutoFocusStoreSkusWithoutFocusForTopSkus(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
db := dao.GetDB() db := dao.GetDB()
var skuBindInfoList []*StoreSkuBindInfo var (
skuBindInfoList []*StoreSkuBindInfo
result1 []interface{}
)
storeList, err := dao.GetStoreList(db, nil, nil, "") storeList, err := dao.GetStoreList(db, nil, nil, "")
for _, v := range storeList { taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
var ( switch step {
skuName []*model.SkuName case 0:
skuNameMap = make(map[int]int) taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
) v := batchItemList[0].(*model.Store)
sql := ` var (
SELECT DISTINCT a.name_id id skuName []*model.SkuName
FROM sku a skuNameMap = make(map[int]int)
LEFT JOIN (SELECT DISTINCT b.name_id )
FROM store_sku_bind a sql := `
JOIN sku b ON a.sku_id = b.id SELECT DISTINCT a.name_id id
WHERE a.deleted_at = ? FROM sku a
AND store_id = ?)b ON a.name_id = b.name_id LEFT JOIN (SELECT DISTINCT b.name_id
WHERE a.status = ? FROM store_sku_bind a
AND a.deleted_at = ? JOIN sku b ON a.sku_id = b.id
AND b.name_id IS NULL WHERE a.deleted_at = ?
` AND store_id = ?)b ON a.name_id = b.name_id
sqlParams := []interface{}{ WHERE a.status = ?
utils.DefaultTimeValue, AND a.deleted_at = ?
v.ID, AND b.name_id IS NULL
model.SkuStatusNormal, `
utils.DefaultTimeValue, sqlParams := []interface{}{
} utils.DefaultTimeValue,
err = dao.GetRows(db, &skuName, sql, sqlParams...) v.ID,
for _, v := range skuName { model.SkuStatusNormal,
skuNameMap[v.ID] = v.ID utils.DefaultTimeValue,
} }
skuNameAndPlaceList, err2 := GetTopSkusByCityCode(ctx, v.CityCode, v.ID) err = dao.GetRows(db, &skuName, sql, sqlParams...)
if err2 != nil { for _, v := range skuName {
return err2 skuNameMap[v.ID] = v.ID
} }
var payPercentage int skuNameAndPlaceList, err2 := GetTopSkusByCityCode(ctx, v.CityCode, v.ID)
if v.PayPercentage < 50 { if err2 != nil {
payPercentage = 70 return retVal, err2
} else { }
payPercentage = v.PayPercentage var payPercentage int
} if v.PayPercentage < 50 {
if len(skuNameAndPlaceList) > 0 { payPercentage = 70
for _, vv := range skuNameAndPlaceList { } else {
if skuNameMap[vv.ID] != 0 { payPercentage = v.PayPercentage
priceReferList, err := dao.GetPriceReferSnapshotNoPage(db, []int{vv.CityCode}, nil, []int{vv.ID}, utils.Time2Date(time.Now().AddDate(0, 0, -1))) }
if err == nil && len(priceReferList) > 0 { if len(skuNameAndPlaceList) > 0 {
storeSkuBindInfo := &StoreSkuBindInfo{ for _, vv := range skuNameAndPlaceList {
StoreID: v.ID, if skuNameMap[vv.ID] != 0 {
NameID: vv.ID, priceReferList, err := dao.GetPriceReferSnapshotNoPage(db, []int{vv.CityCode}, nil, []int{vv.ID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
UnitPrice: priceReferList[0].MidUnitPrice * payPercentage / 100, if err == nil && len(priceReferList) > 0 {
IsFocus: 1, storeSkuBindInfo := &StoreSkuBindInfo{
IsSale: 0, StoreID: v.ID,
NameID: vv.ID,
UnitPrice: priceReferList[0].MidUnitPrice * payPercentage / 100,
IsFocus: 1,
IsSale: 0,
}
skuBindInfoList = append(skuBindInfoList, storeSkuBindInfo)
}
} }
skuBindInfoList = append(skuBindInfoList, storeSkuBindInfo)
} }
} }
return retVal, err
} }
taskParallel := tasksch.NewParallelTask("自动关注畅销品", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, storeList)
tasksch.HandleTask(taskParallel, task, true).Run()
result1, _ = taskParallel.GetResult(0)
case 2:
var skuBindInfos []*StoreSkuBindInfo
for _, v := range result1 {
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
}
UpdateStoresSkusByBind(ctx, skuBindInfos, isAsync, isContinueWhenError)
} }
return result, err
} }
UpdateStoresSkusByBind(ctx, skuBindInfoList, true, true) taskSeq := tasksch.NewSeqTask2("自动关注畅销品", ctx, isContinueWhenError, taskSeqFunc, 3)
return err tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
return hint, err
} }
func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync bool) (err error) { func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync bool) (err error) {

View File

@@ -1176,7 +1176,7 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk
t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at, t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at,
t4.ebai_id, t4.mtwm_id, t4.ebai_id, t4.mtwm_id,
t4.ebai_sync_status, t4.mtwm_sync_status, t4.ebai_sync_status, t4.mtwm_sync_status,
t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.jx_price t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.jx_price, a.spec_quality sku_spec_quality, a.spec_unit sku_spec_unit
FROM sku a FROM sku a
JOIN sku_name t1 ON a.name_id = t1.id AND t1.deleted_at = ? JOIN sku_name t1 ON a.name_id = t1.id AND t1.deleted_at = ?
JOIN store_sku_bind t4 ON t4.sku_id = a.id AND t4.deleted_at = ? JOIN store_sku_bind t4 ON t4.sku_id = a.id AND t4.deleted_at = ?