- GetAndStoreCitiesShops
This commit is contained in:
@@ -12,6 +12,11 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
)
|
||||
|
||||
const (
|
||||
DefRadius = 8000
|
||||
DefGridWith = 3000
|
||||
)
|
||||
|
||||
func GetCityShops(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, cityCode, radius, gridWith int) (pageStoreList []*model.PageShop, err error) {
|
||||
coordList := ditu.GetCityCoordinateList(cityCode, radius, gridWith)
|
||||
if len(coordList) > 0 {
|
||||
@@ -29,6 +34,7 @@ func GetCityShops(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []
|
||||
if err = err2; err != nil && len(list) == 0 {
|
||||
return nil, err
|
||||
}
|
||||
err = nil
|
||||
for _, v := range list {
|
||||
v2 := v.(*model.PageShop)
|
||||
v2.CityCode = cityCode
|
||||
@@ -78,9 +84,62 @@ func getStoreListByCoordinates(ctx *jxcontext.Context, parentTask tasksch.ITask,
|
||||
if err = err2; err != nil && len(shopList) == 0 {
|
||||
return nil, err
|
||||
}
|
||||
err = nil
|
||||
for _, v := range shopList {
|
||||
storeList = append(storeList, v.(*model.PageShop))
|
||||
}
|
||||
}
|
||||
return storeList, err
|
||||
}
|
||||
|
||||
func GetAndStoreCitiesShops(ctx *jxcontext.Context, vendorIDs []int, cityCodeList []int, radius, gridWith int) (hint string, err error) {
|
||||
db := dao.GetDB()
|
||||
if len(cityCodeList) == 0 {
|
||||
placeList, err2 := dao.GetEnabledPlaces(db)
|
||||
if err = err2; err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, v := range placeList {
|
||||
cityCodeList = append(cityCodeList, v.Code)
|
||||
}
|
||||
// cityCodeList = []int{510100}
|
||||
}
|
||||
if len(vendorIDs) == 0 {
|
||||
vendorIDs = []int{model.VendorIDJD, model.VendorIDEBAI}
|
||||
}
|
||||
if radius <= 0 {
|
||||
radius = DefRadius
|
||||
}
|
||||
if gridWith <= 0 {
|
||||
gridWith = DefGridWith
|
||||
}
|
||||
|
||||
task := tasksch.NewSeqTask("GetAndStoreCitiesShops", ctx,
|
||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
cityCode := cityCodeList[step]
|
||||
shopList, err := GetCityShops(ctx, task, vendorIDs, cityCode, radius, gridWith)
|
||||
if err == nil {
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
}()
|
||||
for _, v := range shopList {
|
||||
tmpShop := *v
|
||||
dao.DeleteEntity(db, &tmpShop, model.FieldVendorStoreID, model.FieldVendorID)
|
||||
if err = dao.CreateEntity(db, v); err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
dao.Rollback(db)
|
||||
} else {
|
||||
dao.Commit(db)
|
||||
}
|
||||
}
|
||||
return nil, nil // 强制继续
|
||||
}, len(cityCodeList))
|
||||
tasksch.ManageTask(task).Run()
|
||||
return task.GetID(), err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user