婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 漂流瓶推送需求的邏輯實現(xiàn)代碼

漂流瓶推送需求的邏輯實現(xiàn)代碼

熱門標簽:地圖標注和圖片標注 電銷機器人怎么收費 嘟聲的電銷機器人 滄州智能外呼系統(tǒng)收費 湖北穩(wěn)定外呼系統(tǒng) 忻州外呼系統(tǒng)接口對接 醫(yī)院地圖標注 洛陽便宜外呼系統(tǒng)廠家 語音平臺系統(tǒng)
本身這兩個數(shù)據(jù)之間沒有關聯(lián),并且sql語句里面的排序規(guī)則不能滿足要求:sql里只有數(shù)據(jù)中前一個排序條件出現(xiàn)相同的情況時才考慮后面的排序條件.實際情況是如果按先推送時間后距離排序的話,距離就起不了作用,反之亦然.

要讓兩個數(shù)據(jù)產(chǎn)生關聯(lián),有一種做法是將這兩個數(shù)據(jù)做加法或減法后排序,但是這必須要考慮以下情況

兩個數(shù)據(jù)的數(shù)據(jù)類型不一致,一個是日期類型另一個是雙精度類型
必須統(tǒng)一兩個數(shù)據(jù)的排序方向,不能推送時間取正序而距離取反序,視實際需求而定
將這兩個數(shù)據(jù)都轉換成一種類型,需要一個系數(shù)來平衡它們.如果一個數(shù)據(jù)數(shù)量級極大,另一個數(shù)據(jù)數(shù)量極小,那么極小的數(shù)據(jù)再怎么變化對極大的數(shù)據(jù)產(chǎn)生的影響也可以忽略
下面來具體實現(xiàn),首先將日期類型轉換為雙精度類型,操作兩個數(shù)值類型的數(shù)據(jù)相對來說比較容易.mysql里面正好有這樣的函數(shù):unix_timestamp(date) -- 直接返回內(nèi)部時戳值
復制代碼 代碼如下:

-- 相差一天的時戳值
select unix_timestamp('2010-12-13') - unix_timestamp('2010-12-12')
-- 計算結果:86400

關于已知兩地經(jīng)緯度計算距離的公式,在網(wǎng)上搜索了一個,計算結果還算滿意
復制代碼 代碼如下:

ROUND((2 * ASIN(SQRT(POWER(SIN(((LAT*PI()/180.0)-(plat*PI()/180.0)) / 2), 2) + COS(LAT*PI()/180.0) * COS(plat*PI()/180.0) * POWER(SIN((LNG*PI()/180.0-plng*PI()/180.0) / 2), 2))))*6378.137*10000,3)/10000)

接下來考慮兩個數(shù)據(jù)的排序方向,我們希望的是:距離上次推送時間越久越好,與用戶之間的距離越近越好.時間越久那么計算得出的差值就越大,兩個數(shù)據(jù)直接相加明顯不行.這里只好將時間取負值來滿足與用戶之間的距離越近越好的要求,然后再按正序排列.

再來讓這兩個數(shù)在同一數(shù)量級,根據(jù)數(shù)據(jù)測試,時間取的是秒,距離算出來是公里,直接把距離乘上一個系數(shù)(1000)換算成米來平衡二者.

最終的推送語句如下:
復制代碼 代碼如下:

select BottleID,(ROUND((2 * ASIN(SQRT(POWER(SIN(((LAT*PI()/180.0)-(plat*PI()/180.0)) / 2), 2) + COS(LAT*PI()/180.0) * COS(plat*PI()/180.0) * POWER(SIN((LNG*PI()/180.0-plng*PI()/180.0) / 2), 2))))*6378.137*10000,3)/10000)as Distance from Bottle
inner join Venue_Mapabc
on Bottle.VenueID = Venue_Mapabc.VenueID
where Bottle.IsDrift =1 and Bottle.IsEmpty =1 and IsFinished=0 and Venue_Mapabc.City = pCity
-- and (ROUND((2 * ASIN(SQRT(POWER(SIN(((LAT*PI()/180.0)-(plat*PI()/180.0)) / 2), 2) + COS(LAT*PI()/180.0) * COS(plat*PI()/180.0) * POWER(SIN((LNG*PI()/180.0-plng*PI()/180.0) / 2), 2))))*6378.137*10000,3)/10000)>1.5
order by

(-(unix_timestamp(now())-unix_timestamp(Bottle.PlaceTime))*0.5 +
(ROUND((2 * ASIN(SQRT(POWER(SIN(((LAT*PI()/180.0)-(plat*PI()/180.0)) / 2), 2) + COS(LAT*PI()/180.0) * COS(plat*PI()/180.0) * POWER(SIN((LNG*PI()/180.0-plng*PI()/180.0) / 2), 2))))*6378.137*10000,3)/10000)*0.5*1000)


limit 1;

前端截圖:

您可能感興趣的文章:
  • PHP實現(xiàn)簡單搜歌的方法
  • PHP實現(xiàn)的memcache環(huán)形隊列類實例
  • 如何實現(xiàn)php圖片等比例縮放
  • PHP生成樹的方法
  • php遞歸實現(xiàn)無限分類的方法
  • php類自動加載器實現(xiàn)方法
  • PHP實現(xiàn)的迷你漂流瓶

標簽:防城港 96 日照 巴彥淖爾 山南 內(nèi)蒙古 宜賓 定州

巨人網(wǎng)絡通訊聲明:本文標題《漂流瓶推送需求的邏輯實現(xiàn)代碼》,本文關鍵詞  漂流,瓶,推送,需求,的,邏輯,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《漂流瓶推送需求的邏輯實現(xiàn)代碼》相關的同類信息!
  • 本頁收集關于漂流瓶推送需求的邏輯實現(xiàn)代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 鄄城县| 闻喜县| 隆德县| 广河县| 闸北区| 东乡族自治县| 萝北县| 东乡| 砚山县| 澎湖县| 博湖县| 汝州市| 孝感市| 永吉县| 井陉县| 临汾市| 江华| 海南省| 宁乡县| 应城市| 莱芜市| 岑溪市| 隆化县| 澜沧| 卢龙县| 南昌县| 临江市| 石台县| 醴陵市| 城固县| 孝义市| 兰溪市| 遂宁市| 峡江县| 张掖市| 长顺县| 大渡口区| 长丰县| 静宁县| 永川市| 康平县|