diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_shop.xml b/app/src/main/res/layout/activity_change_shop.xml new file mode 100644 index 0000000..aec5147 --- /dev/null +++ b/app/src/main/res/layout/activity_change_shop.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_shop.xml b/app/src/main/res/layout/activity_change_shop.xml new file mode 100644 index 0000000..aec5147 --- /dev/null +++ b/app/src/main/res/layout/activity_change_shop.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml deleted file mode 100644 index 48d3cfe..0000000 --- a/app/src/main/res/layout/activity_package.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_shop.xml b/app/src/main/res/layout/activity_change_shop.xml new file mode 100644 index 0000000..aec5147 --- /dev/null +++ b/app/src/main/res/layout/activity_change_shop.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml deleted file mode 100644 index 48d3cfe..0000000 --- a/app/src/main/res/layout/activity_package.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_case.xml b/app/src/main/res/layout/activity_upload_case.xml new file mode 100644 index 0000000..fc1a5af --- /dev/null +++ b/app/src/main/res/layout/activity_upload_case.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_shop.xml b/app/src/main/res/layout/activity_change_shop.xml new file mode 100644 index 0000000..aec5147 --- /dev/null +++ b/app/src/main/res/layout/activity_change_shop.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml deleted file mode 100644 index 48d3cfe..0000000 --- a/app/src/main/res/layout/activity_package.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_case.xml b/app/src/main/res/layout/activity_upload_case.xml new file mode 100644 index 0000000..fc1a5af --- /dev/null +++ b/app/src/main/res/layout/activity_upload_case.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_case_quickly.xml b/app/src/main/res/layout/activity_upload_case_quickly.xml new file mode 100644 index 0000000..7ea1589 --- /dev/null +++ b/app/src/main/res/layout/activity_upload_case_quickly.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 08b8134..b420c07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java new file mode 100644 index 0000000..fd56f29 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IShopChangeModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IShopChangeModel { + Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, String images); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java new file mode 100644 index 0000000..68afc60 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/ShopChangeModelImpl.java @@ -0,0 +1,55 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class ShopChangeModelImpl implements IShopChangeModel { + + private OnShopChangeListener listener; + + public ShopChangeModelImpl(OnShopChangeListener changeListener) { + this.listener = changeListener; + } + + /** + * 数据回调接口 + */ + public interface OnShopChangeListener { + void onSuccess(ActionResultBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String merchantId, String merchantName, String contactName, + String contactPhone, String images) { + Observable observable = RetrofitServiceManager.getShopChangeResult(merchantId, + merchantName, contactName, contactPhone, images); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(ActionResultBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java new file mode 100644 index 0000000..e3fea71 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IShopChangePresenter.java @@ -0,0 +1,8 @@ +package com.casic.dcms.mvp.presenter; + +public interface IShopChangePresenter { + void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java new file mode 100644 index 0000000..a250e77 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ShopChangePresenterImpl.java @@ -0,0 +1,41 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.ShopChangeModelImpl; +import com.casic.dcms.mvp.view.IShopChangeView; + +public class ShopChangePresenterImpl extends BasePresenter implements IShopChangePresenter, ShopChangeModelImpl.OnShopChangeListener { + + private IShopChangeView view; + private ShopChangeModelImpl actionModel; + + public ShopChangePresenterImpl(IShopChangeView shopChangeView) { + this.view = shopChangeView; + actionModel = new ShopChangeModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String merchantId, String merchantName, String contactName, String contactPhone, + String images) { + view.showProgress(); + addSubscription(actionModel.sendRetrofitRequest(merchantId, merchantName, contactName, contactPhone, images)); + } + + @Override + public void onSuccess(ActionResultBean resultBean) { + view.hideProgress(); + view.obtainChangeResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + view.hideProgress(); + view.obtainDataFail(); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java new file mode 100644 index 0000000..ac48457 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IShopChangeView.java @@ -0,0 +1,13 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.ActionResultBean; + +public interface IShopChangeView { + void showProgress(); + + void hideProgress(); + + void obtainChangeResult(ActionResultBean resultBean); + + void obtainDataFail(); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c589260..c4ac9dd 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -274,7 +274,7 @@ //设置dialog列表 menuDialogBuilder.setTitle("请选择商户"); for (ShopFeatureBean featureBean : shopBeans) { - menuDialogBuilder.addItem(featureBean.getObjectid() + "(" + featureBean.getDutyname() + ")", new DialogInterface.OnClickListener() { + menuDialogBuilder.addItem(featureBean.getDutyname(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 2537700..3e42c8a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -137,7 +137,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload; + return R.layout.activity_upload_case; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index b5abea4..88a41e6 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -78,13 +78,13 @@ private ShopCaseSubmitPresenterImpl shopCaseSubmitPresenter; private ImageRecycleViewAdapter imageAdapter; private QMUITipDialog submitDialog; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private ArrayList realPaths = new ArrayList<>();//真实图片路径 private List mediaList = new ArrayList<>();//上传到服务器的数据集 private String gridId, shopID; @Override public int initLayoutView() { - return R.layout.activity_package; + return R.layout.activity_upload_package; } @Override @@ -340,4 +340,15 @@ public void obtainUploadVideoResult(ActionResultBean resultBean) { } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopCaseSubmitPresenter != null) { + shopCaseSubmitPresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index e7d5898..ee3d7bf 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -98,7 +98,7 @@ @Override public int initLayoutView() { - return R.layout.activity_case_upload_quickly; + return R.layout.activity_upload_case_quickly; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java new file mode 100644 index 0000000..f10e763 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java @@ -0,0 +1,322 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.IShopChangeView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.luck.picture.lib.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.config.PictureMimeType; +import com.luck.picture.lib.entity.LocalMedia; +import com.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, + IUploadFileView, IShopChangeView { + + private static final String TAG = "ChangeShopInfoActivity"; + private Context context = ChangeShopInfoActivity.this; + @BindView(R.id.shopView) + TextView shopView; + @BindView(R.id.communityNameView) + TextView communityNameView; + @BindView(R.id.shopLocationView) + EditText shopLocationView; + @BindView(R.id.shopKeeperView) + EditText shopKeeperView; + @BindView(R.id.phoneNumberView) + EditText phoneNumberView; + @BindView(R.id.selectedResultView) + RecyclerView selectedResultView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private UploadImagePresenterImpl uploadImagePresenter; + private ShopChangePresenterImpl shopChangePresenter; + private QMUITipDialog submitDialog; + private ImageRecycleViewAdapter imageAdapter; + private String merchantId;//商户id + private String merchantName; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List mediaList = new ArrayList<>();//上传到服务器的数据集 + + @Override + protected String setTitleName() { + return "商铺变更"; + } + + @Override + public int initLayoutView() { + return R.layout.activity_change_shop; + } + + @Override + public void initData() { + uploadImagePresenter = new UploadImagePresenterImpl(this); + shopChangePresenter = new ShopChangePresenterImpl(this); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + imageAdapter = new ImageRecycleViewAdapter(this); + selectedResultView.setLayoutManager(new GridLayoutManager(this, 2)); + selectedResultView.addItemDecoration(new ItemDecorationSpace()); + selectedResultView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.shopLayout: + Intent intent = new Intent(this, ArcGISMapActivity.class); + //因为商铺变更和三包上报需要的属性一致,所以传相同的字段到地图模块,获取相同的属性 + intent.putExtra("type", "三包上报"); + startActivityForResult(intent, Constant.REQUEST_MAP_CODE); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .setCanceledOnTouchOutside(false) + .create().show(); + break; + case R.id.submitButton: + submitCase(); + break; + } + } + + private void submitCase() { + String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); + return; + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); + return; + } + String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case Constant.REQUEST_MAP_CODE: + if (data == null) { + return; + } + String community = data.getStringExtra("community"); + merchantName = data.getStringExtra("shopName"); + merchantId = data.getStringExtra("shopID"); + + communityNameView.setText(community); + shopView.setText(merchantName); + shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + break; + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainChangeResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); + finish(); + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); + } + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + mediaList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + mediaList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + if (shopChangePresenter != null) { + shopChangePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 17b866e..da95e27 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -26,6 +26,7 @@ import com.casic.dcms.ui.CaseUploadPackageActivity; import com.casic.dcms.ui.CaseUploadQuicklyActivity; import com.casic.dcms.ui.CaseVerifyActivity; +import com.casic.dcms.ui.ChangeShopInfoActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; import com.casic.dcms.ui.PackageHandleActivity; @@ -153,6 +154,9 @@ case "三包处置": intent.setClass(context, PackageHandleActivity.class); break; + case "商铺变更": + intent.setClass(context, ChangeShopInfoActivity.class); + break; default: break; } diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 1c77ddd..f857ebb 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -246,6 +246,8 @@ return R.drawable.ic_toilet; case "三包处置": return R.drawable.ic_sanbao; + case "商铺变更": + return R.drawable.ic_shangpu; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 72d1965..4063d6a 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -514,4 +514,20 @@ @Field("punishRemarks") String punishRemarks, @Field("punishTime") String punishTime, @Field("punishImage") String punishImage); + + /** + * 商铺变更 + *

+ * http://111.198.10.15:11409/change/apply + */ + @FormUrlEncoded + @POST("/shop/change/apply") + Observable changeShopInfo(@Header("token") String token, + @Field("merchantId") String merchantId, + @Field("rentStatus") String rentStatus, + @Field("merchantName") String merchantName, + @Field("contactName") String contactName, + @Field("contactPhone") String contactPhone, + @Field("images") String images, + @Field("applySource") String applySource); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 1c45c05..080cb61 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -546,4 +546,16 @@ return service.handlePackageCase(AuthenticationHelper.getToken(), id, punishType, punishRemarks, punishTime, punishImage); } + + /** + * 商铺变更 + */ + public static Observable getShopChangeResult(String merchantId, String merchantName, + String contactName, String contactPhone, + String images) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.changeShopInfo(AuthenticationHelper.getToken(), merchantId, "1", merchantName, + contactName, contactPhone, images, "1"); + } } diff --git a/app/src/main/res/drawable/ic_shangpu.xml b/app/src/main/res/drawable/ic_shangpu.xml new file mode 100644 index 0000000..053e5ba --- /dev/null +++ b/app/src/main/res/drawable/ic_shangpu.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml deleted file mode 100644 index fc1a5af..0000000 --- a/app/src/main/res/layout/activity_case_upload.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml deleted file mode 100644 index 7ea1589..0000000 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_shop.xml b/app/src/main/res/layout/activity_change_shop.xml new file mode 100644 index 0000000..aec5147 --- /dev/null +++ b/app/src/main/res/layout/activity_change_shop.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml deleted file mode 100644 index 48d3cfe..0000000 --- a/app/src/main/res/layout/activity_package.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_case.xml b/app/src/main/res/layout/activity_upload_case.xml new file mode 100644 index 0000000..fc1a5af --- /dev/null +++ b/app/src/main/res/layout/activity_upload_case.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_case_quickly.xml b/app/src/main/res/layout/activity_upload_case_quickly.xml new file mode 100644 index 0000000..7ea1589 --- /dev/null +++ b/app/src/main/res/layout/activity_upload_case_quickly.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_upload_package.xml b/app/src/main/res/layout/activity_upload_package.xml new file mode 100644 index 0000000..7f2f841 --- /dev/null +++ b/app/src/main/res/layout/activity_upload_package.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file