package userhandle import ( "encoding/json" "strconv" "strings" "github.com/flipped-aurora/gin-vue-admin/server/api/wechatapp/callback" "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/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel" "github.com/gin-gonic/gin" ) //入口 func (g *GeographyUnknown) Index(c *gin.Context) { outPut := commonus.MapOut() response.Result(0, outPut, "公共API入口获取成功", c) } //获取地理位置上报人员信息 func (g *GeographyUnknown) LocationUserList(c *gin.Context) { var requestData GetLocLocationUserPage err := c.ShouldBindJSON(&requestData) if err != nil { // response.Result(101, err, "参数错误!请重新提交!", c) // return } if requestData.PageSize == 0 { requestData.PageSize = 20 } // if requestData.Page <= 0 { // requestData.Page = 1 // } offSetPage := commonus.CalculatePages(requestData.Page, requestData.PageSize) redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_*" //redis KEY redisClient := redishandel.RunRedis() redisClient.SetRedisDb(1) keys, cursores, errRedis := redisClient.Scan(uint64(offSetPage), redisPrefix, int64(requestData.PageSize)) output := commonus.MapOut() output["keys"] = keys output["cursores"] = cursores output["errRedis"] = errRedis output["offSetPage"] = uint64(offSetPage) output["PageSize"] = int64(requestData.PageSize) output["Page"] = requestData.Page response.Result(101, output, "参数错误!请重新提交!", c) } //获取所有地理位置上报人员信息 func (g *GeographyUnknown) LocationUserListAll(c *gin.Context) { redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_*" //redis KEY redisClient := redishandel.RunRedis() redisClient.SetRedisDb(1) keys, errRedis := redisClient.Keys(redisPrefix) if errRedis != nil { response.Result(101, errRedis, "没有上报人员!", c) return } var userIdMap []commonus.PublicUserCont for _, val := range keys { oenKey := strings.Split(val, "userId_") if len(oenKey) == 2 { for t_index, t_val := range oenKey { if t_index == 1 { userErr, userInfo := commonus.GetUesrContForWechatID(t_val) if userErr == true { userIdMap = append(userIdMap, userInfo) } // commonus.GetUesrContForWechatID(t_val) } } } } output := commonus.MapOut() output["keys"] = keys output["errRedis"] = errRedis output["userIdMap"] = userIdMap response.Result(0, output, "数据获取成功!", c) } //获取人员上报地址点位 func (g *GeographyUnknown) GetLocationUserAddress(c *gin.Context) { var requestData GetWechatWorkId err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } redisPrefix := "Location:GeographicalPosition_" + global.GVA_CONFIG.RedisPrefix.PreFix + ":userId_" + requestData.Id //redis KEY redisClient := redishandel.RunRedis() redisClient.SetRedisDb(1) addressMap, addressErr := redisClient.Lrange(redisPrefix, 0, -1) if addressErr != nil { response.Result(103, err, "没有上报地理点位!", c) return } var redisToJsonAddressMap []callback.GeographicalPositionRedis for _, val := range addressMap { var redisToJsonAddress callback.GeographicalPositionRedis jsonErr := json.Unmarshal([]byte(val), &redisToJsonAddress) if jsonErr == nil { longFloat, _ := strconv.ParseFloat(redisToJsonAddress.Longitude, 64) latFloat, _ := strconv.ParseFloat(redisToJsonAddress.Latitude, 64) long, latg := commonus.GCJ02toBD09(longFloat, latFloat) redisToJsonAddress.LongitudeBaiDu = long redisToJsonAddress.LatitudeBaiDu = latg redisToJsonAddressMap = append(redisToJsonAddressMap, redisToJsonAddress) } } output := commonus.MapOut() output["addressMap"] = addressMap output["redisToJsonAddressMap"] = redisToJsonAddressMap if len(addressMap) <= 0 { response.Result(100, output, "数据获取失败!", c) return } response.Result(0, output, "数据获取成功!", c) }