diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 19a947619..cf2e74274 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -474,20 +474,25 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da order.VendorStatus = orderStatus.VendorStatus updateFields := []string{ "VendorStatus", + "UpdatedAt", } if model.IsOrderMainStatus(orderStatus.Status) { order.Status = orderStatus.Status order.StatusTime = orderStatus.StatusTime updateFields = append(updateFields, "Status", "StatusTime") - if order.LockStatus != model.OrderStatusUnknown { - order.LockStatus = model.OrderStatusUnknown - updateFields = append(updateFields, "LockStatus") + if model.IsOrderFinalStatus(orderStatus.Status) { + order.OrderFinishedAt = orderStatus.StatusTime + updateFields = append(updateFields, "OrderFinishedAt") + if order.LockStatus != model.OrderStatusUnknown { + order.LockStatus = model.OrderStatusUnknown + updateFields = append(updateFields, "LockStatus") + } } } else { if model.IsOrderUnlockStatus(orderStatus.Status) { order.LockStatus = model.OrderStatusUnknown updateFields = append(updateFields, "LockStatus") - } else if !model.IsOrderFinalStatus(orderStatus.Status) { + } else if model.IsOrderLockStatus(orderStatus.Status) { if order.LockStatus != model.OrderStatusUnknown { globals.SugarLogger.Warnf("addOrderStatus refOrderID:%s, orderID:%s, order.LockStatus:%d, status.LockStatus:%d", orderStatus.RefVendorOrderID, orderStatus.VendorOrderID, order.LockStatus, orderStatus.Status) } @@ -497,10 +502,6 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da updateFields = append(updateFields, "LockStatus", "LockStatusTime", "Flag") } } - if model.IsOrderFinalStatus(orderStatus.Status) { - order.OrderFinishedAt = orderStatus.StatusTime - updateFields = append(updateFields, "OrderFinishedAt") - } utils.CallFuncLogError(func() error { _, err = db.Db.Update(order, updateFields...) return err diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index a24657e59..0de80c472 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -210,6 +210,9 @@ func EarthDistance(lng1, lat1, lng2, lat2 float64) float64 { lng2 = lng2 * rad theta := lng2 - lng1 dist := math.Acos(math.Sin(lat1)*math.Sin(lat2) + math.Cos(lat1)*math.Cos(lat2)*math.Cos(theta)) + if dist < 0 { + dist = 0 + } return dist * radius } diff --git a/controllers/net_spider.go b/controllers/net_spider.go index 79973144e..d94268a10 100644 --- a/controllers/net_spider.go +++ b/controllers/net_spider.go @@ -88,21 +88,31 @@ func (c *NetSpiderController) QueryPageStores() { lng1, lat1, lng2, lat2) if err == nil { if params.Radius > 0 && (params.Offset != 0 || params.PageSize != model.UnlimitedPageSize) { - shopList, _ := pagedInfo.Data.([]*dao.PageShopWithPlaceName) - pagedInfo.TotalCount = len(shopList) - if len(shopList) > 0 { - for _, v := range shopList { + shopList2, _ := pagedInfo.Data.([]*dao.PageShopWithPlaceName) + var shopList []*dao.PageShopWithPlaceName + pagedInfo.TotalCount = 0 + if len(shopList2) > 0 { + for _, v := range shopList2 { v.Distance = int(jxutils.EarthDistance(v.Lng, v.Lat, lng, lat) * 1000) - } - sort.Sort(PageShopList(shopList)) - if params.Offset < len(shopList) { - index := params.Offset + params.PageSize - if index > len(shopList) { - index = len(shopList) + if v.Distance < 0 { + v.Distance = 0 + } + if v.Distance <= params.Radius { + shopList = append(shopList, v) + } + } + pagedInfo.TotalCount = len(shopList) + if pagedInfo.TotalCount > 0 { + sort.Sort(PageShopList(shopList)) + if params.Offset < len(shopList) { + index := params.Offset + params.PageSize + if index > len(shopList) { + index = len(shopList) + } + shopList = shopList[params.Offset:index] + } else { + shopList = nil } - shopList = shopList[params.Offset:index] - } else { - shopList = nil } } pagedInfo.Data = shopList