Merge remote-tracking branch 'origin/mark' into yonghui

This commit is contained in:
苏尹岚
2019-11-28 08:37:22 +08:00
3 changed files with 35 additions and 21 deletions

View File

@@ -474,20 +474,25 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da
order.VendorStatus = orderStatus.VendorStatus order.VendorStatus = orderStatus.VendorStatus
updateFields := []string{ updateFields := []string{
"VendorStatus", "VendorStatus",
"UpdatedAt",
} }
if model.IsOrderMainStatus(orderStatus.Status) { if model.IsOrderMainStatus(orderStatus.Status) {
order.Status = orderStatus.Status order.Status = orderStatus.Status
order.StatusTime = orderStatus.StatusTime order.StatusTime = orderStatus.StatusTime
updateFields = append(updateFields, "Status", "StatusTime") updateFields = append(updateFields, "Status", "StatusTime")
if order.LockStatus != model.OrderStatusUnknown { if model.IsOrderFinalStatus(orderStatus.Status) {
order.LockStatus = model.OrderStatusUnknown order.OrderFinishedAt = orderStatus.StatusTime
updateFields = append(updateFields, "LockStatus") updateFields = append(updateFields, "OrderFinishedAt")
if order.LockStatus != model.OrderStatusUnknown {
order.LockStatus = model.OrderStatusUnknown
updateFields = append(updateFields, "LockStatus")
}
} }
} else { } else {
if model.IsOrderUnlockStatus(orderStatus.Status) { if model.IsOrderUnlockStatus(orderStatus.Status) {
order.LockStatus = model.OrderStatusUnknown order.LockStatus = model.OrderStatusUnknown
updateFields = append(updateFields, "LockStatus") updateFields = append(updateFields, "LockStatus")
} else if !model.IsOrderFinalStatus(orderStatus.Status) { } else if model.IsOrderLockStatus(orderStatus.Status) {
if order.LockStatus != model.OrderStatusUnknown { 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) 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") updateFields = append(updateFields, "LockStatus", "LockStatusTime", "Flag")
} }
} }
if model.IsOrderFinalStatus(orderStatus.Status) {
order.OrderFinishedAt = orderStatus.StatusTime
updateFields = append(updateFields, "OrderFinishedAt")
}
utils.CallFuncLogError(func() error { utils.CallFuncLogError(func() error {
_, err = db.Db.Update(order, updateFields...) _, err = db.Db.Update(order, updateFields...)
return err return err

View File

@@ -210,6 +210,9 @@ func EarthDistance(lng1, lat1, lng2, lat2 float64) float64 {
lng2 = lng2 * rad lng2 = lng2 * rad
theta := lng2 - lng1 theta := lng2 - lng1
dist := math.Acos(math.Sin(lat1)*math.Sin(lat2) + math.Cos(lat1)*math.Cos(lat2)*math.Cos(theta)) 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 return dist * radius
} }

View File

@@ -88,21 +88,31 @@ func (c *NetSpiderController) QueryPageStores() {
lng1, lat1, lng2, lat2) lng1, lat1, lng2, lat2)
if err == nil { if err == nil {
if params.Radius > 0 && (params.Offset != 0 || params.PageSize != model.UnlimitedPageSize) { if params.Radius > 0 && (params.Offset != 0 || params.PageSize != model.UnlimitedPageSize) {
shopList, _ := pagedInfo.Data.([]*dao.PageShopWithPlaceName) shopList2, _ := pagedInfo.Data.([]*dao.PageShopWithPlaceName)
pagedInfo.TotalCount = len(shopList) var shopList []*dao.PageShopWithPlaceName
if len(shopList) > 0 { pagedInfo.TotalCount = 0
for _, v := range shopList { if len(shopList2) > 0 {
for _, v := range shopList2 {
v.Distance = int(jxutils.EarthDistance(v.Lng, v.Lat, lng, lat) * 1000) v.Distance = int(jxutils.EarthDistance(v.Lng, v.Lat, lng, lat) * 1000)
} if v.Distance < 0 {
sort.Sort(PageShopList(shopList)) v.Distance = 0
if params.Offset < len(shopList) { }
index := params.Offset + params.PageSize if v.Distance <= params.Radius {
if index > len(shopList) { shopList = append(shopList, v)
index = len(shopList) }
}
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 pagedInfo.Data = shopList