- GetAndStoreCitiesShops

This commit is contained in:
gazebo
2019-06-25 09:23:55 +08:00
parent fc5c7ae609
commit 6cfc7091d1
6 changed files with 119 additions and 1 deletions

View File

@@ -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
}