Commit b36c7ea5aa9ad7334fe674e1a0dcdb7f7159be67

Authored by 杨帅
1 parent daab7e09

1 优化绑定功能逻辑

moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/presenter/CollTraceListDetailFragmentPresenter.java
... ... @@ -9,6 +9,7 @@ import com.cnlive.libs.base.logic.callback.FailureCallback;
9 9 import com.cnlive.libs.base.logic.callback.SuccessCallback;
10 10 import com.cnlive.moudle.collectionTrace.frame.view.CollTraceListDetailFragmentView;
11 11 import com.cnlive.moudle.collectionTrace.model.BindingShoeInfo;
  12 +import com.cnlive.moudle.collectionTrace.model.CheckShoeLineBean;
12 13 import com.cnlive.moudle.pedometer.model.Constant;
13 14 import com.cnlive.moudle.pedometer.model.MessageEvent;
14 15 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin;
... ... @@ -67,4 +68,45 @@ public class CollTraceListDetailFragmentPresenter extends MvpBasePresenter<CollT
67 68 }
68 69 }).start();
69 70 }
  71 +
  72 + /**
  73 + * 校验轨迹绑定
  74 + *
  75 + * @param context
  76 + * @param id 轨迹id
  77 + * @param eventId 赛事id
  78 + */
  79 + public void checkShoeLine(Context context, int id, String eventId, RaceNameListPresenter.CallBack callBack) {
  80 + QMUITipDialogUtil.loadingDialog(context, "正在校验...", false);
  81 + Map<String, String> map = new HashMap<>();
  82 + map.put("id", id + "");
  83 + map.put("eventId", eventId);
  84 +
  85 + Logic.create(map).action(new Logic.Action<Map<String, String>, BaseInfo<CheckShoeLineBean>>() {
  86 + @Override
  87 + public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo<CheckShoeLineBean>> dataCallback) {
  88 + return SubscriptionRequest.service(ApiServiceRunLin.class, api -> api.checkShoeLine(stringStringMap)).subscribe(context, dataCallback);
  89 + }
  90 + }).<BaseInfo<CheckShoeLineBean>>event().setFailureCallback(new FailureCallback() {
  91 + @Override
  92 + public void onFailure(int code, String message) {
  93 + if (getView() != null) {
  94 + QMUITipDialogUtil.dismessDialog();
  95 + if (null != callBack) {
  96 + callBack.onFailed();
  97 + }
  98 + }
  99 + }
  100 + }).setSuccessCallback(new SuccessCallback<BaseInfo<CheckShoeLineBean>>() {
  101 + @Override
  102 + public void onSuccess(BaseInfo<CheckShoeLineBean> baseInfo) {
  103 + if (getView() != null) {
  104 + QMUITipDialogUtil.dismessDialog();
  105 + if (null != callBack) {
  106 + callBack.onSuccess(baseInfo.getData().getFenceId(), baseInfo.getData().getEntityName());
  107 + }
  108 + }
  109 + }
  110 + }).start();
  111 + }
70 112 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/presenter/RaceNameListPresenter.java
... ... @@ -8,6 +8,7 @@ import com.cnlive.libs.base.logic.callback.FailureCallback;
8 8 import com.cnlive.libs.base.logic.callback.SuccessCallback;
9 9 import com.cnlive.moudle.collectionTrace.frame.view.RaceNameListView;
10 10 import com.cnlive.moudle.collectionTrace.model.BindingShoeInfo;
  11 +import com.cnlive.moudle.collectionTrace.model.CheckShoeLineBean;
11 12 import com.cnlive.moudle.collectionTrace.model.RaceNameListInfo;
12 13 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin;
13 14 import com.cnlive.moudle.pedometer.net.SubscriptionRequest;
... ... @@ -126,4 +127,51 @@ public class RaceNameListPresenter extends MvpBasePresenter&lt;RaceNameListView&gt; {
126 127 }
127 128 }).start();
128 129 }
  130 +
  131 + /**
  132 + * 校验轨迹绑定
  133 + *
  134 + * @param context
  135 + * @param id 轨迹id
  136 + * @param eventId 赛事id
  137 + */
  138 + public void checkShoeLine(Context context, int id, String eventId, CallBack callBack) {
  139 + QMUITipDialogUtil.loadingDialog(context, "正在校验...", false);
  140 + Map<String, String> map = new HashMap<>();
  141 + map.put("id", id + "");
  142 + map.put("eventId", eventId);
  143 +
  144 + Logic.create(map).action(new Logic.Action<Map<String, String>, BaseInfo<CheckShoeLineBean>>() {
  145 + @Override
  146 + public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo<CheckShoeLineBean>> dataCallback) {
  147 + return SubscriptionRequest.service(ApiServiceRunLin.class, api -> api.checkShoeLine(stringStringMap)).subscribe(context, dataCallback);
  148 + }
  149 + }).<BaseInfo<CheckShoeLineBean>>event().setFailureCallback(new FailureCallback() {
  150 + @Override
  151 + public void onFailure(int code, String message) {
  152 + if (getView() != null) {
  153 + QMUITipDialogUtil.dismessDialog();
  154 + if (null != callBack) {
  155 + callBack.onFailed();
  156 + }
  157 + }
  158 + }
  159 + }).setSuccessCallback(new SuccessCallback<BaseInfo<CheckShoeLineBean>>() {
  160 + @Override
  161 + public void onSuccess(BaseInfo<CheckShoeLineBean> baseInfo) {
  162 + if (getView() != null) {
  163 + QMUITipDialogUtil.dismessDialog();
  164 + if (null != callBack) {
  165 + callBack.onSuccess(baseInfo.getData().getFenceId(), baseInfo.getData().getEntityName());
  166 + }
  167 + }
  168 + }
  169 + }).start();
  170 + }
  171 +
  172 + public interface CallBack {
  173 + void onSuccess(String fenceId, String entityName);
  174 +
  175 + void onFailed();
  176 + }
129 177 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/CollRunningFinishFragmentView.java
... ... @@ -114,7 +114,6 @@ public class CollRunningFinishFragmentView implements MvpView, OnFenceListener {
114 114 //绘制运营打的点
115 115 if (null != collectPoints) {
116 116 //根据打点集合,自适应缩放
117   - MyMapUtil.setCollMapAutoZoom(baiduMap, collectPoints, -1.5f);
118 117 for (CollectPoint point : collectPoints) {
119 118 LatLng markLatLng = new LatLng(point.getLatitude(), point.getLongitude());
120 119 if (null != markLatLng) {
... ... @@ -310,9 +309,11 @@ public class CollRunningFinishFragmentView implements MvpView, OnFenceListener {
310 309 public void success(List<LatLng> resultPoints) {
311 310 queryResultPoints = resultPoints;
312 311 if (null != resultPoints) {
313   - //绘制轨迹
314   - MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end);
315   - MyMapUtil.setMapAutoZoom(baiduMap, resultPoints,-1.5f);
  312 + if (resultPoints.size() > 1) {
  313 + //绘制轨迹
  314 + MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end);
  315 + MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, -1.5f);
  316 + }
316 317  
317 318 } else {
318 319 SelectDialog selectDialog = new SelectDialog(getContext(), "轨迹获取失败,是否重试?", "取消", new SelectDialog.DialogInterface() {
... ... @@ -418,45 +419,7 @@ public class CollRunningFinishFragmentView implements MvpView, OnFenceListener {
418 419 }
419 420 }
420 421  
421   - private void addFence() {
422   - QMUITipDialogUtil.dismessDialog();
423   - QMUITipDialogUtil.loadingDialog(getContext(), "正在创建地理围栏", false);
424   - CreateFenceRequest createFenceRequest = null;
425   - int offset = Constant.FENCE_OFFSET;// 偏离距离
426   - int denoise = Constant.FENCE_DENOISE; //围栏去噪精度
427   - if (null != collUserStepEntity) {
428   - //赛事标题作为围栏名称
429   - String eventId = collUserStepEntity.getStreetId();
430   - if (mClient != null && !TextUtils.isEmpty(eventId) && null != collectLatLngs) {
431   - createFenceRequest = CreateFenceRequest.buildServerPolylineRequest(Constant.TAG, Constant.SERVICE_ID, eventId, "cc", collectLatLngs, offset, denoise, CoordType.gcj02);
432   - mClient.createFence(createFenceRequest, CollRunningFinishFragmentView.this);
433   - }
434   - }
435   - }
436 422  
437   - // //判断地理围栏是否创建成功
438   -// if (null != collUserStepEntity) {
439   -// if (TextUtils.isEmpty(collUserStepEntity.getFenceId())) {
440   -// //开始创建地理围栏
441   -// QMUITipDialogUtil.loadingDialog(getContext(), "正在创建地理围栏", false);
442   -// CreateFenceRequest createFenceRequest = null;
443   -// int offset = Constant.FENCE_OFFSET;// 偏离距离
444   -// int denoise = Constant.FENCE_DENOISE; //围栏去噪精度
445   -// if (null != collUserStepEntity) {
446   -// //赛事标题作为围栏名称
447   -// String fenceName = collUserStepEntity.getStreetTitle();
448   -// if (mClient != null && !TextUtils.isEmpty(fenceName) && null != collectLatLngs) {
449   -// if (createFenceRequest == null) {
450   -// createFenceRequest = CreateFenceRequest.buildServerPolylineRequest(Constant.TAG, Constant.SERVICE_ID, fenceName, "", collectLatLngs, offset, denoise, CoordType.gcj02);
451   -// mClient.createFence(createFenceRequest, CollRunningFinishFragmentView.this);
452   -// }
453   -// }
454   -// }
455   -// } else {
456   -// //已经存在地理围栏(直接将数据传给服务器)
457   -//
458   -// }
459   -// }
460 423 public void initMap() {
461 424 this.mMapView = fragment.binding.mapView;
462 425 if (baiduMap == null) {
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/CollTraceListDetailFragmentView.java
... ... @@ -11,12 +11,8 @@ import android.util.Log;
11 11 import android.view.MotionEvent;
12 12 import android.view.View;
13 13  
14   -import com.baidu.location.LocationClient;
15   -import com.baidu.location.LocationClientOption;
16 14 import com.baidu.mapapi.map.BaiduMap;
17   -import com.baidu.mapapi.map.BitmapDescriptorFactory;
18 15 import com.baidu.mapapi.map.MapView;
19   -import com.baidu.mapapi.map.MyLocationConfiguration;
20 16 import com.baidu.mapapi.map.Overlay;
21 17 import com.baidu.mapapi.map.UiSettings;
22 18 import com.baidu.mapapi.model.LatLng;
... ... @@ -41,6 +37,7 @@ import com.baidu.trace.model.CoordType;
41 37 import com.baidu.trace.model.SortType;
42 38 import com.bumptech.glide.Glide;
43 39 import com.cnlive.libs.base.util.AlertUtil;
  40 +import com.cnlive.moudle.collectionTrace.frame.presenter.RaceNameListPresenter;
44 41 import com.cnlive.moudle.collectionTrace.model.CollectPoint;
45 42 import com.cnlive.moudle.collectionTrace.model.RaceNameListInfo;
46 43 import com.cnlive.moudle.collectionTrace.ui.adapter.CollFinishDetaiAdapter;
... ... @@ -76,7 +73,6 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
76 73 private LBSTraceClient mClient = null;
77 74 private List<Overlay> allMapOverlays;
78 75 private List<com.baidu.trace.model.LatLng> importPoints;
79   - private String fenceEntityName;
80 76 private String position;
81 77  
82 78 public CollTraceListDetailFragmentView(CollTraceListDetailFragment fragment) {
... ... @@ -88,12 +84,11 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
88 84 return fragment == null ? null : fragment.getActivity();
89 85 }
90 86  
91   - public void initView(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String fenceEntityName, String position) {
  87 + public void initView(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String position) {
92 88 if (mClient == null) {
93 89 mClient = new LBSTraceClient(fragment.getActivity());
94 90 }
95 91 this.position = position;
96   - this.fenceEntityName = fenceEntityName;
97 92 this.eventShoeLinesBean = eventShoeLinesBean;
98 93 allMapOverlays = new ArrayList<>();
99 94 //设置滑动卡片
... ... @@ -147,19 +142,38 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
147 142 @Override
148 143 public void onClick(SelectDialog dialog) {
149 144 dialog.cancel();
150   - //先判断当前是否已经绑定轨迹
151   - if (TextUtils.isEmpty(fenceEntityName)) {
152   - Log.e(TAG, "onClick: 未绑定轨迹");
153   - //开始绑定轨迹
154   - //判断是否有打的点
155   - if (null != importPoints && !TextUtils.isEmpty(eventShoeLinesBean.getDarenId()) && !TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
156   - addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
  145 + //先校验
  146 + fragment.getPresenter().checkShoeLine(fragment.getActivity(), eventShoeLinesBean.getId(), eventShoeLinesBean.getEventId(), new RaceNameListPresenter.CallBack() {
  147 + @Override
  148 + public void onSuccess(String fenceId, String entityName) {
  149 + if (null == fragment.getActivity()) {
  150 + return;
  151 + }
  152 + //判断是否为空
  153 + if (!TextUtils.isEmpty(fenceId) && !TextUtils.isEmpty(entityName)) {
  154 + List<Long> fenceIdList = new ArrayList<>();
  155 + fenceIdList.add(Long.parseLong(fenceId));
  156 + //开始删除围栏
  157 + DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, entityName, fenceIdList);
  158 + if (null != mClient) {
  159 + QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
  160 + mClient.deleteFence(deleteFenceRequest, CollTraceListDetailFragmentView.this);
  161 + }
  162 + }
  163 + //没有绑定,则直接添加
  164 + else {
  165 + if (null != importPoints && !TextUtils.isEmpty(eventShoeLinesBean.getDarenId()) && !TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
  166 + addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
  167 + }
  168 + }
157 169 }
158   - } else {
159   - Log.e(TAG, "onClick: 已绑定轨迹");
160   - //开始查询
161   - queryFenceList(fenceEntityName);
162   - }
  170 +
  171 + @Override
  172 + public void onFailed() {
  173 +
  174 + }
  175 + });
  176 +
163 177  
164 178 }
165 179 });
... ... @@ -235,7 +249,7 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
235 249 return;
236 250 }
237 251 MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end);
238   - MyMapUtil.setMapAutoZoom(baiduMap, resultPoints,-1.5f);
  252 + MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, -1.5f);
239 253 }
240 254 }
241 255 });
... ... @@ -277,7 +291,7 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
277 291 }
278 292 }
279 293  
280   - public void initMap() {
  294 + public void initMap(CallBack callBack) {
281 295 this.mMapView = fragment.binding.mapView;
282 296 if (baiduMap == null) {
283 297 baiduMap = mMapView.getMap();
... ... @@ -294,21 +308,28 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
294 308 mUiSettings.setCompassEnabled(false);
295 309 //显示定位图层
296 310 baiduMap.setMyLocationEnabled(false);
297   -
  311 + baiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {
  312 + @Override
  313 + public void onMapLoaded() {
  314 + if (null != callBack) {
  315 + callBack.onMapLoadSuccess();
  316 + }
  317 + }
  318 + });
298 319 }
299 320  
300   - /**
301   - * 查询地理围栏
302   - */
303   - private void queryFenceList(String entityName) {
304   - QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在查询围栏信息...", false);
305   - List<Long> fenceId = new ArrayList<>();
306   - fenceId.add(0L);
307   - FenceListRequest fenceListRequest = FenceListRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, entityName, null, CoordType.gcj02, 1, 5000);
308   - if (null != mClient || null != fenceListRequest) {
309   - mClient.queryFenceList(fenceListRequest, CollTraceListDetailFragmentView.this);
310   - }
311   - }
  321 +// /**
  322 +// * 查询地理围栏
  323 +// */
  324 +// private void queryFenceList(String entityName) {
  325 +// QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在查询围栏信息...", false);
  326 +// List<Long> fenceId = new ArrayList<>();
  327 +// fenceId.add(0L);
  328 +// FenceListRequest fenceListRequest = FenceListRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, entityName, null, CoordType.gcj02, 1, 5000);
  329 +// if (null != mClient || null != fenceListRequest) {
  330 +// mClient.queryFenceList(fenceListRequest, CollTraceListDetailFragmentView.this);
  331 +// }
  332 +// }
312 333  
313 334  
314 335 public void updataBindBtnState(boolean isBind) {
... ... @@ -378,52 +399,52 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
378 399 */
379 400 @Override
380 401 public void onFenceListCallback(FenceListResponse fenceListResponse) {
381   - if (null == fenceListResponse) {
382   - return;
383   - }
384   - List<Long> fenceIdList = null;
385   - if (null != fenceListResponse.getFenceInfos()) {
386   - fenceIdList = new ArrayList<>();
387   - for (FenceInfo fenceInfo : fenceListResponse.getFenceInfos()) {
388   - //如果是线性围栏
389   - if (fenceInfo.getFenceShape() == FenceShape.polyline) {
390   - //判断是否是当前围栏名称
391   - if (null != eventShoeLinesBean) {
392   - if (!TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
393   - String serverFenceName = fenceInfo.getPolylineFence().getFenceName();
394   - String currentFenceName = eventShoeLinesBean.getEventName();
395   - if (serverFenceName.equals(currentFenceName)) {
396   - //添加围栏id
397   - fenceIdList.add(fenceInfo.getPolylineFence().getFenceId());
398   - }
399   - }
400   - }
401   -
402   - }
403   - }
404   - //判断围栏是否查询到
405   - if (null != fenceIdList && fenceIdList.size() > 0) {
406   - Log.e(TAG, "onFenceListCallback: 获取到围栏数量" + fenceIdList.size());
407   - List<Long> finalFenceIdList = fenceIdList;
408   - new Handler().postDelayed(new Runnable() {
409   - @Override
410   - public void run() {
411   - QMUITipDialogUtil.dismessDialog();
412   - //开始删除围栏
413   - DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, fenceEntityName, finalFenceIdList);
414   - if (null != mClient) {
415   - QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
416   - mClient.deleteFence(deleteFenceRequest, CollTraceListDetailFragmentView.this);
417   - }
418   - }
419   - }, 1000);
420   - } else {
421   - //没有查询到围栏,直接添加
422   - addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
423   - }
424   - } else {
425   - QMUITipDialogUtil.dismessDialog();
426   - }
  402 +// if (null == fenceListResponse) {
  403 +// return;
  404 +// }
  405 +// List<Long> fenceIdList = null;
  406 +// if (null != fenceListResponse.getFenceInfos()) {
  407 +// fenceIdList = new ArrayList<>();
  408 +// for (FenceInfo fenceInfo : fenceListResponse.getFenceInfos()) {
  409 +// //如果是线性围栏
  410 +// if (fenceInfo.getFenceShape() == FenceShape.polyline) {
  411 +// //判断是否是当前围栏名称
  412 +// if (null != eventShoeLinesBean) {
  413 +// if (!TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
  414 +// String serverFenceName = fenceInfo.getPolylineFence().getFenceName();
  415 +// String currentFenceName = eventShoeLinesBean.getEventName();
  416 +// if (serverFenceName.equals(currentFenceName)) {
  417 +// //添加围栏id
  418 +// fenceIdList.add(fenceInfo.getPolylineFence().getFenceId());
  419 +// }
  420 +// }
  421 +// }
  422 +//
  423 +// }
  424 +// }
  425 +// //判断围栏是否查询到
  426 +// if (null != fenceIdList && fenceIdList.size() > 0) {
  427 +// Log.e(TAG, "onFenceListCallback: 获取到围栏数量" + fenceIdList.size());
  428 +// List<Long> finalFenceIdList = fenceIdList;
  429 +// new Handler().postDelayed(new Runnable() {
  430 +// @Override
  431 +// public void run() {
  432 +// QMUITipDialogUtil.dismessDialog();
  433 +// //开始删除围栏
  434 +// DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, fenceEntityName, finalFenceIdList);
  435 +// if (null != mClient) {
  436 +// QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
  437 +// mClient.deleteFence(deleteFenceRequest, CollTraceListDetailFragmentView.this);
  438 +// }
  439 +// }
  440 +// }, 1000);
  441 +// } else {
  442 +// //没有查询到围栏,直接添加
  443 +// addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
  444 +// }
  445 +// } else {
  446 +// QMUITipDialogUtil.dismessDialog();
  447 +// }
427 448 }
428 449  
429 450 @Override
... ... @@ -455,4 +476,8 @@ public class CollTraceListDetailFragmentView implements MvpView, OnFenceListener
455 476 public void onListMonitoredPersonCallback(ListMonitoredPersonResponse listMonitoredPersonResponse) {
456 477  
457 478 }
  479 +
  480 + public interface CallBack {
  481 + void onMapLoadSuccess();
  482 + }
458 483 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/RaceNameListView.java
... ... @@ -28,6 +28,7 @@ import com.baidu.trace.model.CoordType;
28 28 import com.baidu.trace.model.LatLng;
29 29 import com.cnlive.libs.base.util.AlertUtil;
30 30 import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo;
  31 +import com.cnlive.moudle.collectionTrace.frame.presenter.RaceNameListPresenter;
31 32 import com.cnlive.moudle.collectionTrace.model.BindingShoeInfo;
32 33 import com.cnlive.moudle.collectionTrace.model.CollectPoint;
33 34 import com.cnlive.moudle.collectionTrace.model.RaceNameListInfo;
... ... @@ -99,7 +100,6 @@ public class RaceNameListView implements MvpView, OnFenceListener {
99 100  
100 101 public void bindingShoeLine(int position, BaseInfo<BindingShoeInfo> baseInfo) {
101 102 if (baseInfo.getData().getEntityName() != null) {
102   - fragment.entityName = baseInfo.getData().getEntityName();
103 103 }
104 104 list.get(position).setIsEnable(0);
105 105 for (int i = 0; i < list.size(); i++) {
... ... @@ -125,13 +125,12 @@ public class RaceNameListView implements MvpView, OnFenceListener {
125 125 adapter = new RaceNameListAdapter(list, fragment.getActivity());
126 126 fragment.binding.raceRecy.setAdapter(adapter);
127 127 if (raceNameListInfoBaseInfo.getData().getEntityName() != null)
128   - fragment.entityName = raceNameListInfoBaseInfo.getData().getEntityName();
129   - adapter.setOnItemClick(new RaceNameListAdapter.OnItemClick() {
130   - @Override
131   - public void onItemClickListener(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, int position) {
132   - CollTraceListDetailActivity.startActivity(fragment.getActivity(), eventShoeLinesBean, fragment.entityName, position + "");
133   - }
134   - });
  128 + adapter.setOnItemClick(new RaceNameListAdapter.OnItemClick() {
  129 + @Override
  130 + public void onItemClickListener(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, int position) {
  131 + CollTraceListDetailActivity.startActivity(fragment.getActivity(), eventShoeLinesBean, position + "");
  132 + }
  133 + });
135 134 adapter.setOnAddShoeLineClick(new RaceNameListAdapter.OnAddShoeLineClick() {
136 135 @Override
137 136 public void onAddSholeLineClickListener(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, int position) {
... ... @@ -166,19 +165,37 @@ public class RaceNameListView implements MvpView, OnFenceListener {
166 165 @Override
167 166 public void onClick(SelectDialog dialog) {
168 167 dialog.cancel();
169   - //先判断当前是否已经绑定轨迹
170   - if (TextUtils.isEmpty(fragment.entityName)) {
171   - Log.e(TAG, "onClick: 未绑定轨迹");
172   - //开始绑定轨迹
173   - //判断是否有打的点
174   - if (null != importPoints && !TextUtils.isEmpty(eventShoeLinesBean.getDarenId()) && !TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
175   - addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
  168 + //先校验
  169 + fragment.getPresenter().checkShoeLine(fragment.getActivity(), eventShoeLinesBean.getId(), eventShoeLinesBean.getEventId(), new RaceNameListPresenter.CallBack() {
  170 + @Override
  171 + public void onSuccess(String fenceId, String entityName) {
  172 + if (null == fragment.getActivity()) {
  173 + return;
  174 + }
  175 + //判断是否为空
  176 + if (!TextUtils.isEmpty(fenceId) && !TextUtils.isEmpty(entityName)) {
  177 + List<Long> fenceIdList = new ArrayList<>();
  178 + fenceIdList.add(Long.parseLong(fenceId));
  179 + //开始删除围栏
  180 + DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, entityName, fenceIdList);
  181 + if (null != mClient) {
  182 + QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
  183 + mClient.deleteFence(deleteFenceRequest, RaceNameListView.this);
  184 + }
  185 + }
  186 + //没有绑定,则直接添加
  187 + else {
  188 + if (null != importPoints && !TextUtils.isEmpty(eventShoeLinesBean.getDarenId()) && !TextUtils.isEmpty(eventShoeLinesBean.getEventName())) {
  189 + addFence(eventShoeLinesBean.getDarenId(), eventShoeLinesBean.getEventName(), importPoints);
  190 + }
  191 + }
176 192 }
177   - } else {
178   - Log.e(TAG, "onClick: 已绑定轨迹");
179   - //开始查询
180   - queryFenceList(fragment.entityName);
181   - }
  193 +
  194 + @Override
  195 + public void onFailed() {
  196 +
  197 + }
  198 + });
182 199  
183 200 // queryFenceList(eventShoeLinesBean.getEventId());
184 201 // fragment.addShoeLine(eventShoeLinesBean, position);
... ... @@ -365,52 +382,52 @@ public class RaceNameListView implements MvpView, OnFenceListener {
365 382 */
366 383 @Override
367 384 public void onFenceListCallback(FenceListResponse fenceListResponse) {
368   - if (null == fenceListResponse) {
369   - return;
370   - }
371   - List<Long> fenceIdList = null;
372   - if (null != fenceListResponse.getFenceInfos()) {
373   - fenceIdList = new ArrayList<>();
374   - for (FenceInfo fenceInfo : fenceListResponse.getFenceInfos()) {
375   - //如果是线性围栏
376   - if (fenceInfo.getFenceShape() == FenceShape.polyline) {
377   - //判断是否是当前围栏名称
378   - if (null != currentSelBean) {
379   - if (!TextUtils.isEmpty(currentSelBean.getEventName())) {
380   - String serverFenceName = fenceInfo.getPolylineFence().getFenceName();
381   - String currentFenceName = currentSelBean.getEventName();
382   - if (serverFenceName.equals(currentFenceName)) {
383   - //添加围栏id
384   - fenceIdList.add(fenceInfo.getPolylineFence().getFenceId());
385   - }
386   - }
387   - }
388   -
389   - }
390   - }
391   - //判断围栏是否查询到
392   - if (null != fenceIdList && fenceIdList.size() > 0) {
393   - Log.e(TAG, "onFenceListCallback: 获取到围栏数量" + fenceIdList.size());
394   - List<Long> finalFenceIdList = fenceIdList;
395   - new Handler().postDelayed(new Runnable() {
396   - @Override
397   - public void run() {
398   - QMUITipDialogUtil.dismessDialog();
399   - //开始删除围栏
400   - DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, fragment.entityName, finalFenceIdList);
401   - if (null != mClient) {
402   - QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
403   - mClient.deleteFence(deleteFenceRequest, RaceNameListView.this);
404   - }
405   - }
406   - }, 1000);
407   - } else {
408   - //没有查询到围栏,直接添加
409   - addFence(currentSelBean.getDarenId(), currentSelBean.getEventName(), importPoints);
410   - }
411   - } else {
412   - QMUITipDialogUtil.dismessDialog();
413   - }
  385 +// if (null == fenceListResponse) {
  386 +// return;
  387 +// }
  388 +// List<Long> fenceIdList = null;
  389 +// if (null != fenceListResponse.getFenceInfos()) {
  390 +// fenceIdList = new ArrayList<>();
  391 +// for (FenceInfo fenceInfo : fenceListResponse.getFenceInfos()) {
  392 +// //如果是线性围栏
  393 +// if (fenceInfo.getFenceShape() == FenceShape.polyline) {
  394 +// //判断是否是当前围栏名称
  395 +// if (null != currentSelBean) {
  396 +// if (!TextUtils.isEmpty(currentSelBean.getEventName())) {
  397 +// String serverFenceName = fenceInfo.getPolylineFence().getFenceName();
  398 +// String currentFenceName = currentSelBean.getEventName();
  399 +// if (serverFenceName.equals(currentFenceName)) {
  400 +// //添加围栏id
  401 +// fenceIdList.add(fenceInfo.getPolylineFence().getFenceId());
  402 +// }
  403 +// }
  404 +// }
  405 +//
  406 +// }
  407 +// }
  408 +// //判断围栏是否查询到
  409 +// if (null != fenceIdList && fenceIdList.size() > 0) {
  410 +// Log.e(TAG, "onFenceListCallback: 获取到围栏数量" + fenceIdList.size());
  411 +// List<Long> finalFenceIdList = fenceIdList;
  412 +// new Handler().postDelayed(new Runnable() {
  413 +// @Override
  414 +// public void run() {
  415 +// QMUITipDialogUtil.dismessDialog();
  416 +// //开始删除围栏
  417 +// DeleteFenceRequest deleteFenceRequest = DeleteFenceRequest.buildServerRequest(Constant.TAG, Constant.SERVICE_ID, fragment.entityName, finalFenceIdList);
  418 +// if (null != mClient) {
  419 +// QMUITipDialogUtil.loadingDialog(fragment.getActivity(), "正在删除围栏", false);
  420 +// mClient.deleteFence(deleteFenceRequest, RaceNameListView.this);
  421 +// }
  422 +// }
  423 +// }, 1000);
  424 +// } else {
  425 +// //没有查询到围栏,直接添加
  426 +// addFence(currentSelBean.getDarenId(), currentSelBean.getEventName(), importPoints);
  427 +// }
  428 +// } else {
  429 +// QMUITipDialogUtil.dismessDialog();
  430 +// }
414 431 }
415 432  
416 433 @Override
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/model/CheckShoeLineBean.java 0 → 100644
  1 +package com.cnlive.moudle.collectionTrace.model;
  2 +
  3 +/**
  4 + * 校验轨迹绑定
  5 + *
  6 + * @author ShinnyYang
  7 + */
  8 +public class CheckShoeLineBean {
  9 +
  10 + /**
  11 + * fenceId : 174
  12 + * entityName : 10513196
  13 + */
  14 +
  15 + private String fenceId;
  16 + private String entityName;
  17 +
  18 + public String getFenceId() {
  19 + return fenceId;
  20 + }
  21 +
  22 + public void setFenceId(String fenceId) {
  23 + this.fenceId = fenceId;
  24 + }
  25 +
  26 + public String getEntityName() {
  27 + return entityName;
  28 + }
  29 +
  30 + public void setEntityName(String entityName) {
  31 + this.entityName = entityName;
  32 + }
  33 +}
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/activity/CollTraceListDetailActivity.java
... ... @@ -30,7 +30,7 @@ public class CollTraceListDetailActivity extends QMUIFragmentActivity {
30 30 String fenceEntityName = getIntent().getExtras().getString("fenceEntityName");
31 31 String position= getIntent().getExtras().getString("position");
32 32 if (null != eventShoeLinesBean) {
33   - addFragment(CollTraceListDetailFragment.newInstance(eventShoeLinesBean,fenceEntityName,position));
  33 + addFragment(CollTraceListDetailFragment.newInstance(eventShoeLinesBean,position));
34 34 }
35 35 }
36 36  
... ... @@ -41,10 +41,9 @@ public class CollTraceListDetailActivity extends QMUIFragmentActivity {
41 41 .commit();
42 42 }
43 43  
44   - public static void startActivity(Activity activity, RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String fenceEntityName,String position) {
  44 + public static void startActivity(Activity activity, RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String position) {
45 45 Intent intent = new Intent(activity, CollTraceListDetailActivity.class);
46 46 intent.putExtra("eventShoeLinesBean", eventShoeLinesBean);
47   - intent.putExtra("fenceEntityName", fenceEntityName);
48 47 intent.putExtra("position", position);
49 48 activity.startActivity(intent);
50 49 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/CollTraceListDetailFragment.java
... ... @@ -22,11 +22,10 @@ public class CollTraceListDetailFragment extends QMUIFragment&lt;CollTraceListDetai
22 22 private RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean;
23 23 private String position;
24 24  
25   - public static CollTraceListDetailFragment newInstance(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String fenceEntityName, String position) {
  25 + public static CollTraceListDetailFragment newInstance(RaceNameListInfo.EventShoeLinesBean eventShoeLinesBean, String position) {
26 26 CollTraceListDetailFragment fragment = new CollTraceListDetailFragment();
27 27 Bundle bundle = new Bundle();
28 28 bundle.putSerializable("eventShoeLinesBean", eventShoeLinesBean);
29   - bundle.putString("fenceEntityName", fenceEntityName);
30 29 bundle.putString("position", position);
31 30 fragment.setArguments(bundle);
32 31 return fragment;
... ... @@ -58,8 +57,13 @@ public class CollTraceListDetailFragment extends QMUIFragment&lt;CollTraceListDetai
58 57 position = getArguments().getString("position");
59 58 if (null != eventShoeLinesBean) {
60 59 if (null != getMvpView()) {
61   - getMvpView().initMap();
62   - getMvpView().initView(eventShoeLinesBean, fenceEntityName, position);
  60 + getMvpView().initMap(new CollTraceListDetailFragmentView.CallBack() {
  61 + @Override
  62 + public void onMapLoadSuccess() {
  63 + getMvpView().initView(eventShoeLinesBean, position);
  64 + }
  65 + });
  66 +
63 67 }
64 68 }
65 69 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/RaceNameListFragment.java
... ... @@ -22,7 +22,6 @@ public class RaceNameListFragment extends MvpBindingFragment&lt;RaceNameListView, R
22 22 public int pageSize = 10;
23 23 public String eventId;
24 24 private RunRaceDetailInfo runRaceDetailInfo;
25   - public String entityName = null;
26 25  
27 26 public static RaceNameListFragment newInstance(String eventId, RunRaceDetailInfo runRaceDetailInfo) {
28 27 RaceNameListFragment fragment = new RaceNameListFragment();
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
... ... @@ -356,7 +356,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
356 356 fragment.binding.includeStreet.tvAddress.setText(runRaceDetailInfo.getAddress());
357 357 //设置活动距离
358 358 if (!TextUtils.isEmpty(runRaceDetailInfo.getMileage())) {
359   - fragment.binding.includeStreet.tvAddress.append("\t\t" + runRaceDetailInfo.getMileage());
  359 + fragment.binding.includeStreet.tvAddress.append("\t\t全长" + runRaceDetailInfo.getMileage()+"公里");
360 360 }
361 361 }
362 362  
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/net/ApiServiceRunLin.java
... ... @@ -2,6 +2,7 @@ package com.cnlive.moudle.pedometer.net;
2 2  
3 3  
4 4 import com.cnlive.moudle.collectionTrace.model.BindingShoeInfo;
  5 +import com.cnlive.moudle.collectionTrace.model.CheckShoeLineBean;
5 6 import com.cnlive.moudle.collectionTrace.model.RaceNameListInfo;
6 7 import com.cnlive.moudle.pedometer.net.bean.BaseInfo;
7 8 import com.cnlive.moudle.pedometer.net.bean.MyRecordInfo;
... ... @@ -100,5 +101,15 @@ public interface ApiServiceRunLin {
100 101 */
101 102 @POST("Daren/event/saveShoeLine.action")
102 103 Observable<Result<BaseInfo>> collSaveShoeLine(@QueryMap() Map<String, String> maps);
  104 +
  105 + /**
  106 + * 校验轨迹绑定
  107 + * http://bj.gitlab.cnlive.com/cnlive/BOSS-Wiki/wikis/checkShoeLine
  108 + *
  109 + * @param maps
  110 + * @return
  111 + */
  112 + @POST("Daren/event/checkShoeLine.action")
  113 + Observable<Result<BaseInfo<CheckShoeLineBean>>> checkShoeLine(@QueryMap() Map<String, String> maps);
103 114 }
104 115  
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
... ... @@ -177,6 +177,9 @@ public class MyMapUtil {
177 177 LatLngBounds.Builder builder = new LatLngBounds.Builder();
178 178 List<LatLng> latLngs = new ArrayList<>();
179 179 for (int i = 0; i < trackPoints.size(); i++) {
  180 + if (0 == trackPoints.get(i).getLatitude() && 0 == trackPoints.get(i).getLongitude()) {
  181 + continue;
  182 + }
180 183 latLngs.add(new LatLng(trackPoints.get(i).getLatitude(), trackPoints.get(i).getLongitude()));
181 184 }
182 185 for (LatLng latLng : latLngs) {
... ...
moudle_pedometer/src/main/res/layout/layout_run_detail_street.xml
... ... @@ -79,6 +79,7 @@
79 79 android:layout_width="wrap_content"
80 80 android:layout_height="wrap_content"
81 81 android:layout_marginLeft="25dp"
  82 + android:layout_marginRight="25dp"
82 83 android:text="--"
83 84 android:textColor="@color/text_black"
84 85 android:textSize="15sp" />
... ...