From cc54a55f9c3c8c75db942f5bcf5d971bf97dee33 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 22 Jan 2021 10:22:13 +0800 Subject: [PATCH] opt --- .../com/mogo/cloud/tanlu/UploadManager.java | 162 +++++++++++++++++- .../cloud/tanlu/bean/RoadInfoRequest.java | 9 + .../com/mogo/cloud/tanlu/bean/RoadInfos.java | 2 +- 3 files changed, 169 insertions(+), 4 deletions(-) diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java index d76d728..f274ef7 100644 --- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java +++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java @@ -5,19 +5,30 @@ import android.util.Log; import com.google.gson.Gson; import com.mogo.cloud.commons.network.RetrofitFactory; +import com.mogo.cloud.passport.MoGoAiCloudClient; +import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback; import com.mogo.cloud.tanlu.api.ITanluUploadCallback; import com.mogo.cloud.tanlu.bean.InformationBody; +import com.mogo.cloud.tanlu.bean.RoadInfoRequest; +import com.mogo.cloud.tanlu.bean.RoadInfos; import com.mogo.cloud.tanlu.bean.UploadResult; +import com.mogo.cloud.tanlu.bean.location.Location; +import com.mogo.cloud.tanlu.bean.location.MogoLocation; import com.mogo.cloud.tanlu.net.TanluApiService; -import com.mogo.cloud.passport.MoGoAiCloudClient; - +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.mogo.utils.network.utils.GsonUtil; import java.util.HashMap; import java.util.Map; - +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; /** @@ -94,8 +105,153 @@ public class UploadManager { } + /** + * 通过经纬度信息查询 TanluModelData + * @param roadInfoRequest + * @param callback + */ + public void queryRoadInfoByLocationInfo(RoadInfoRequest roadInfoRequest, IRoadInfoSearchCallback callback) { + + Map map = new HashMap<>(); + map.put("sn", "F803EB2046PZD00228"); + map.put("data", GsonUtil.jsonFromObject(roadInfoRequest)); + + apiService.queryRoadInfos(map) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.d(TAG, "queryRoadInfos onSubscribe ----"); + } + + @Override + public void onNext(@NonNull RoadInfos roadInfos) { + Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData()); + callback.onSuccess(roadInfos); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.d(TAG, "queryRoadInfos onError ----"); + callback.onError(e); + } + + @Override + public void onComplete() { + Log.d(TAG, "queryRoadInfos onComplete ----"); + } + }); + } +// public void queryRoadInfoByCity(InformationBody informationBody, ITanluUploadCallback callback) { +// +// if (voiceCmdData.isHere()) { //TanluModelData +// // 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端 +// MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation(); +// Location location = new Location(l.getLatitude(), l.getLongitude()); +// RoadInfoRequest request; +// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) { +// // 拥堵和路况同时查 +// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false); +// }else{ +// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false); +// } +// +// Map map = new HashMap<>(); +// map.put("sn", "F803EB2046PZD00228"); +// map.put("data", "GsonUtil.jsonFromObject(request)"); +// +// apiService.queryRoadInfos(map) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new Observer() { +// @Override +// public void onSubscribe(@NonNull Disposable d) { +// Log.d(TAG, "queryRoadInfos onSubscribe ----"); +// } +// +// @Override +// public void onNext(@NonNull RoadInfos roadInfos) { +// Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData()); +// } +// +// @Override +// public void onError(@NonNull Throwable e) { +// Log.d(TAG, "queryRoadInfos onError ----"); +// } +// +// @Override +// public void onComplete() { +// Log.d(TAG, "queryRoadInfos onComplete ----"); +// } +// }); +// } else { +// // 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端 +// Observable.create(new ObservableOnSubscribe() { +// @Override +// public void subscribe(ObservableEmitter emitter) throws Exception { +// // 根据传入的地址,转成经纬度 +// IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi(); +// String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode(); +// MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode); +// IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery); +// MogoPoiResult result = poiSearch.searchPOI(); +// if (result != null && result.getPois() != null && result.getPois().size() > 0) { +// emitter.onNext(result); +// } else { +// emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度")); +// } +// } +// }).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()) +// .flatMap(new Function>>() { +// @Override +// public Observable> apply(MogoPoiResult mogoPoiResult) throws Exception { +// // 转成经纬度后,整理参数,进行接口请求 +// Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName()); +// MogoPoiItem poiItem = mogoPoiResult.getPois().get(0); +// Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon); +// callback.onLocatSuccess(location.getLat(), location.getLon()); +// RoadInfoRequest request; +// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) { +// // 拥堵和路况同时查 +// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false); +// }else{ +// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false); +// } +// +// Map params = new ParamsProvider.Builder(mContext) +// .append("sn", Utils.getSn()) +// .append("data", GsonUtil.jsonFromObject(request)) +// .build(); +// return mShareApiService.queryRoadInfos(params); +// } +// }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new SubscribeImpl>(RequestOptions.create(mContext)) { +// @Override +// public void onError(Throwable e) { +// super.onError(e); +// callback.onQueryRoadInfoFail(e.getMessage(), -1); +// } +// +// @Override +// public void onSuccess(BaseDataCompat o) { +// super.onSuccess(o); +// Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o); +// callback.onQueryRoadInfoSuccess(o.getResult().getData()); +// } +// +// @Override +// public void onError(String message, int code) { +// super.onError(message, code); +// callback.onQueryRoadInfoFail(message, code); +// } +// }); +// } +// } + + } diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java index 6f0955f..2800b62 100644 --- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java +++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java @@ -55,4 +55,13 @@ public class RoadInfoRequest { this.onlySameCity = onlySameCity; } + @Override + public String toString() { + return "RoadInfoRequest{" + + "location=" + location + + ", poiTypes=" + poiTypes + + ", onlyFocus=" + onlyFocus + + ", onlySameCity=" + onlySameCity + + '}'; + } } diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java index 9a5fe69..d94f4b7 100644 --- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java +++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java @@ -7,7 +7,7 @@ import java.util.List; * @description * @since 2021/1/20 */ -public class RoadInfos { +public class RoadInfos{ private List data;