diff --git a/app/src/main/java/com/ttstd/dialer/bean/req/SnLocationReq.java b/app/src/main/java/com/ttstd/dialer/bean/req/SnLocationReq.java index 0a6ba3a..90bf582 100644 --- a/app/src/main/java/com/ttstd/dialer/bean/req/SnLocationReq.java +++ b/app/src/main/java/com/ttstd/dialer/bean/req/SnLocationReq.java @@ -5,7 +5,6 @@ import com.google.gson.annotations.SerializedName; import com.ttstd.dialer.manager.MapManager; import java.io.Serializable; -import java.time.LocalDateTime; /** * 设备定位信息请求模型 @@ -61,9 +60,6 @@ public class SnLocationReq implements Serializable { @SerializedName("mapError") private String mapError; - @SerializedName("lastSuccessfulTime") - private LocalDateTime lastSuccessfulTime; - public SnLocationReq() { } @@ -213,12 +209,4 @@ public class SnLocationReq implements Serializable { public void setMapError(String mapError) { this.mapError = mapError; } - - public LocalDateTime getLastSuccessfulTime() { - return lastSuccessfulTime; - } - - public void setLastSuccessfulTime(LocalDateTime lastSuccessfulTime) { - this.lastSuccessfulTime = lastSuccessfulTime; - } } diff --git a/app/src/main/java/com/ttstd/dialer/manager/MapManager.java b/app/src/main/java/com/ttstd/dialer/manager/MapManager.java index 905f63f..f46d6f1 100644 --- a/app/src/main/java/com/ttstd/dialer/manager/MapManager.java +++ b/app/src/main/java/com/ttstd/dialer/manager/MapManager.java @@ -271,16 +271,25 @@ public class MapManager { WeatherManager.getInstance().setAdCode(bdLocation.getAdCode()); SnLocationReq snLocation = new SnLocationReq(bdLocation); + // 记录本次定位成功时间由服务端在接收上报时统一写入,移动端不传(避免 LocalDateTime 序列化格式冲突) + snLocation.setMapError("-"); LiveEventBus.get(CommonConfig.LOCATION_CHANGED_KEY) .post(snLocation); } /** - * 存储定位错误信息 + * 存储定位错误信息并上报失败原因 + * 构造一份仅包含错误信息的定位上报,使网页端能展示失败原因,而非一直停留在旧数据。 */ private void saveLocationError(String errorMsg) { mMMKV.encode("MapError", errorMsg); + + SnLocationReq snLocation = new SnLocationReq(); + snLocation.setMapError(errorMsg); + + LiveEventBus.get(CommonConfig.LOCATION_CHANGED_KEY) + .post(snLocation); } // 百度定位回调 diff --git a/app/src/main/java/com/ttstd/dialer/service/main/MainServiceModel.java b/app/src/main/java/com/ttstd/dialer/service/main/MainServiceModel.java index 6c63764..94f91ef 100644 --- a/app/src/main/java/com/ttstd/dialer/service/main/MainServiceModel.java +++ b/app/src/main/java/com/ttstd/dialer/service/main/MainServiceModel.java @@ -1,5 +1,6 @@ package com.ttstd.dialer.service.main; +import android.text.TextUtils; import android.util.Log; import androidx.lifecycle.ViewModel; @@ -9,6 +10,7 @@ import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.ttstd.dialer.bean.BaseResponse; import com.ttstd.dialer.bean.req.SnLocationReq; +import com.ttstd.dialer.gson.GsonUtils; import com.ttstd.dialer.network.BaseObserver; import com.ttstd.dialer.network.OkHttpManager; @@ -41,7 +43,12 @@ public class MainServiceModel extends ViewModel { public void uploadLocation(SnLocationReq locationReq) { - Log.e(TAG, "uploadLocation: "); + // 空校验:位置信息缺失时不发起请求,避免后端收到无效数据 + if (locationReq == null) { + Log.e(TAG, "uploadLocation: 定位信息为空或缺少 sn,已跳过上报"); + return; + } + Log.e(TAG, "uploadLocation: " + GsonUtils.toJSONString(locationReq)); OkHttpManager.getInstance().getUploadLocationObservable(locationReq) .compose(bindToLifecycle()) .subscribe(new BaseObserver() {