You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
package callback
|
|
|
|
import (
|
|
"encoding/json"
|
|
"encoding/xml"
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel"
|
|
)
|
|
|
|
//相关事件处理
|
|
func GeographicalPosition(eventMsg []byte) {
|
|
var msgContent GeographicalPositionType
|
|
err := xml.Unmarshal(eventMsg, &msgContent)
|
|
if nil != err {
|
|
fmt.Println("***********Unmarshal fail")
|
|
}
|
|
userAddress := commonus.MapOut()
|
|
userAddress["userid"] = msgContent.FromUsername //userID
|
|
userAddress["latitude"] = msgContent.Latitude //地理位置纬度
|
|
userAddress["longitude"] = msgContent.Longitude //地理位置经度
|
|
userAddress["precision"] = msgContent.Precision //地理位置精度
|
|
userAddress["time"] = time.Now().Unix()
|
|
|
|
marshal, err := json.Marshal(userAddress)
|
|
if err != nil {
|
|
marshal = []byte{}
|
|
}
|
|
|
|
redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + msgContent.FromUsername //redis KEY
|
|
redisClient := redishandel.RunRedis()
|
|
redisClient.SetRedisDb(1)
|
|
// fmt.Printf("button===101===>%v\n", string(marshal))
|
|
locationJson, locationErr := redisClient.Lindex(redisPrefix, 0)
|
|
|
|
// fmt.Printf("button===102===>%v===>%v\n", locationJson, locationErr)
|
|
|
|
if locationErr != nil {
|
|
redisClient.Lpush(redisPrefix, string(marshal))
|
|
// fmt.Printf("button===1===>%v\n", marshal)
|
|
} else {
|
|
var geographicalPositionRedis GeographicalPositionRedis
|
|
jsonErr := json.Unmarshal([]byte(locationJson), &geographicalPositionRedis)
|
|
|
|
// fmt.Printf("button===2111===>%v===>%v\n", jsonErr, geographicalPositionRedis)
|
|
if jsonErr != nil {
|
|
redisClient.Lpush(redisPrefix, string(marshal))
|
|
// fmt.Printf("button===2===>%v===>%v\n", jsonErr, locationJson)
|
|
} else {
|
|
timeVal := geographicalPositionRedis.Time
|
|
if time.Now().Unix()-timeVal >= 1800 {
|
|
redisClient.Lpush(redisPrefix, string(marshal))
|
|
// fmt.Printf("button===4===>%v\n", marshal)
|
|
} else {
|
|
// fmt.Printf("button===412===>%v===>%v\n", timeVal, time.Now().Unix()-timeVal)
|
|
}
|
|
}
|
|
}
|
|
longFloat, _ := strconv.ParseFloat(msgContent.Longitude, 64)
|
|
latFloat, _ := strconv.ParseFloat(msgContent.Latitude, 64)
|
|
long, latg := commonus.GCJ02toBD09(longFloat, latFloat)
|
|
fmt.Printf("button======>%v======>%v======>%v\n", msgContent, long, latg)
|
|
}
|
|
|