From e6014ef123350d5c0cadabe9c18e26b3d5a3c729 Mon Sep 17 00:00:00 2001
From: guoshen <3129367635@qq.com>
Date: 星期六, 29 六月 2024 15:41:25 +0800
Subject: [PATCH] Revert "Initial commit"
---
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java | 497 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 492 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
index d79aff7..bcf389b 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
@@ -1,14 +1,39 @@
package com.application.zhangshi_app_android.ui.function;
+import static com.android.app_base.base.BaseConfig.CODE_SUCCESS;
+
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.StateViewEnum;
import com.android.app_base.base.viewmodel.BaseViewModel;
-import com.application.zhangshi_app_android.bean.FamilyAssetsBean;
+import com.android.app_base.http.ResultData;
+import com.android.app_base.manager.AppManager;
+import com.android.app_base.utils.RxUtils;
+import com.android.app_base.utils.rxbus.RxBus;
+import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean;
import com.application.zhangshi_app_android.bean.HomeDevicesBean;
+import com.application.zhangshi_app_android.bean.MemoBean;
+import com.application.zhangshi_app_android.bean.UploadFileResponseBean;
import com.application.zhangshi_app_android.data.DataRepository;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.functions.Action;
+import io.reactivex.functions.Consumer;
+import io.reactivex.functions.Function;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
/**
* @author Ljj
@@ -18,6 +43,10 @@
public class HomeDevicesDetailActivityViewModel extends BaseViewModel<DataRepository> {
private MutableLiveData<HomeDevicesBean> beanLiveData;
+ private MutableLiveData<List<MemoBean>> memoListLiveData;
+
+ private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵��
+ private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃
public HomeDevicesDetailActivityViewModel(@NonNull Application application) {
super(application);
@@ -28,14 +57,472 @@
return DataRepository.getInstance();
}
- public MutableLiveData<HomeDevicesBean> getBeanLiveData() {
- if (beanLiveData == null){
- beanLiveData = new MutableLiveData<>();
+
+ /**
+ * 澧炲姞瀹跺涵璁惧
+ */
+ public void add() {
+ if (uploadFileList.size() > 0) {
+ List<Observable<String>> observables = new ArrayList<>();
+ for (String path : uploadFileList) {
+ File file = new File(path);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+ MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody);
+ Observable<String> uploadObservable = model.uploadFile(body)
+ .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() {
+ @Override
+ public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception {
+ if (resultData.getCode() == CODE_SUCCESS) {
+ HomeDevicesBean bean = getBeanLiveData().getValue();
+ if (bean != null) {
+ String urls = bean.getUrl();
+ //鏇挎崲鍥剧墖鍦板潃
+ urls = urls.replace(path, resultData.getData().getUrl());
+ bean.setUrl(urls);
+ getBeanLiveData().postValue(bean);
+ }
+ return Observable.just(path);
+ } else {
+ return Observable.error(new Exception(resultData.getMsg()));
+ }
+ }
+ });
+
+ observables.add(uploadObservable);
+ }
+ Observable.zip(observables, result -> result)
+ .flatMap(new Function<Object[], Observable<ResultData<String>>>() {
+ @Override
+ public Observable<ResultData<String>> apply(Object[] objects) throws Exception {
+ //绉婚櫎宸茬粡涓婁紶鐨勬枃浠�
+ //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄�
+ for (Object object : objects) {
+ uploadFileList.remove((String) object);
+ }
+ return model.addHomeDevices(beanLiveData.getValue());
+ }
+ })
+ .doOnSubscribe(new Consumer<Disposable>() {
+ @Override
+ public void accept(Disposable disposable) throws Exception {
+ changeStateView(StateViewEnum.DIALOG_LOADING);
+ }
+ })
+ .doFinally(new Action() {
+ @Override
+ public void run() throws Exception {
+ changeStateView(StateViewEnum.DIALOG_DISMISS);
+ }
+ })
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS) {
+ AppManager.getAppManager().finishCurrentActivity();
+ RxBus.getInstance().post(beanLiveData.getValue());
+ messageLiveData.postValue("娣诲姞鎴愬姛");
+ } else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }else {
+ model.addHomeDevices(beanLiveData.getValue())
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS){
+ AppManager.getAppManager().finishCurrentActivity();
+ RxBus.getInstance().post(beanLiveData.getValue());
+ messageLiveData.postValue("娣诲姞鎴愬姛");
+ }else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
}
- return beanLiveData;
+ }
+ /**
+ * 鍒犻櫎瀹跺涵璁惧
+ */
+ public void delete() {
+ if (beanLiveData.getValue() == null){
+ return;
+ }
+ model.deleteHomeDevices(String.valueOf(beanLiveData.getValue().getId()))
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS){
+ AppManager.getAppManager().finishCurrentActivity();
+ RxBus.getInstance().post(beanLiveData.getValue());
+ messageLiveData.postValue("鍒犻櫎鎴愬姛");
+ }else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+ /**
+ * 淇敼瀹跺涵璁惧
+ */
+ public void update() {
+ if (uploadFileList.size() > 0){
+ List<Observable<String>> observables = new ArrayList<>();
+ for (String path : uploadFileList) {
+ File file = new File(path);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
+ MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody);
+ Observable<String> uploadObservable = model.uploadFile(body)
+ .flatMap(new Function<ResultData<UploadFileResponseBean>, ObservableSource<String>>() {
+ @Override
+ public ObservableSource<String> apply(ResultData<UploadFileResponseBean> resultData) throws Exception {
+ if (resultData.getCode() == CODE_SUCCESS){
+ HomeDevicesBean bean = getBeanLiveData().getValue();
+ if (bean != null){
+ String urls = bean.getUrl();
+ //鏇挎崲鍥剧墖鍦板潃
+ urls = urls.replace(path,resultData.getData().getUrl());
+ bean.setUrl(urls);
+ getBeanLiveData().postValue(bean);
+ }
+ return Observable.just(path);
+ }else {
+ return Observable.error(new Exception(resultData.getMsg()));
+ }
+ }
+ });
+
+ observables.add(uploadObservable);
+ }
+ Observable.zip(observables,result -> result)
+ .flatMap(new Function<Object[], Observable<ResultData<String>>>() {
+ @Override
+ public Observable<ResultData<String>> apply(Object[] objects) throws Exception {
+ //绉婚櫎宸茬粡涓婁紶鐨勬枃浠�
+ //鎶妎bjects鏁扮粍杞崲鎴恖ist锛岀劧鍚庣Щ闄�
+ for (Object object : objects) {
+ uploadFileList.remove((String) object);
+ }
+ return model.updateHomeDevices(beanLiveData.getValue());
+ }
+ })
+ .doOnSubscribe(new Consumer<Disposable>() {
+ @Override
+ public void accept(Disposable disposable) throws Exception {
+ changeStateView(StateViewEnum.DIALOG_LOADING);
+ }
+ })
+ .doFinally(new Action() {
+ @Override
+ public void run() throws Exception {
+ changeStateView(StateViewEnum.DIALOG_DISMISS);
+ }
+ })
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS){
+ AppManager.getAppManager().finishCurrentActivity();
+ RxBus.getInstance().post(beanLiveData.getValue());
+ messageLiveData.postValue("淇敼鎴愬姛");
+ }else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }else {
+ model.updateHomeDevices(beanLiveData.getValue())
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS){
+ AppManager.getAppManager().finishCurrentActivity();
+ RxBus.getInstance().post(beanLiveData.getValue());
+ messageLiveData.postValue("淇敼鎴愬姛");
+ }else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+ }
+
+
+ /**
+ * 鑾峰彇澶囧繕褰�
+ */
+ public void getMemos() {
+ if (beanLiveData.getValue() == null) {
+ return;
+ }
+ model.getMemos(BaseConfig.MEMO_FID_HOME_DEVICES+"", String.valueOf(beanLiveData.getValue().getId()))
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<List<MemoBean>>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<List<MemoBean>> data) {
+ if (data.getCode() == CODE_SUCCESS){
+ memoListLiveData.postValue(data.getData());
+ }else {
+ messageLiveData.postValue(data.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ /**
+ * 娣诲姞澶囧繕褰�
+ */
+ public void addMemo(List<MemoBean> list) {
+ if (list == null || list.size() == 0) {
+ return;
+ }
+ for (MemoBean memoBean : list) {
+ model.addMemo(memoBean)
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> data) {
+ if (data.getCode() == CODE_SUCCESS) {
+ messageLiveData.postValue("娣诲姞澶囧繕褰曟垚鍔�");
+ } else {
+ messageLiveData.postValue(data.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ }
+
+ /**
+ * 鍒犻櫎澶囧繕褰�
+ */
+ public void deleteMemo(List<MemoBean> list) {
+ if (list == null || list.size() == 0) {
+ return;
+ }
+ StringBuffer sb = new StringBuffer();
+ list.forEach(HomeDevicesBean -> sb.append(HomeDevicesBean.getId()).append(","));
+ sb.deleteCharAt(sb.length()-1);
+ model.deleteMemo(sb.toString())
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> stringResultData) {
+ if (stringResultData.getCode() == CODE_SUCCESS){
+ messageLiveData.postValue("鍒犻櫎澶囧繕褰曟垚鍔�");
+ }else {
+ messageLiveData.postValue(stringResultData.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ /**
+ * 淇敼澶囧繕褰�
+ */
+ public void updateMemo(List<MemoBean> list) {
+ if (list == null || list.size() == 0) {
+ return;
+ }
+ for (MemoBean memoBean : list) {
+ model.updateMemo(memoBean)
+ .compose(RxUtils.schedulersTransformer())
+ .subscribe(new Observer<ResultData<String>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ addSubscribe(d);
+ }
+
+ @Override
+ public void onNext(ResultData<String> data) {
+ if (data.getCode() == CODE_SUCCESS) {
+ messageLiveData.postValue("淇敼澶囧繕褰曟垚鍔�");
+ } else {
+ messageLiveData.postValue(data.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ messageLiveData.postValue(e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+ }
+
+
+ public MutableLiveData<Boolean> getTypeLiveData() {
+ if (typeLiveData == null){
+ typeLiveData = new MutableLiveData<>();
+ }
+ return typeLiveData;
+ }
+
+ public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) {
+ this.typeLiveData = typeLiveData;
}
public void setBeanLiveData(MutableLiveData<HomeDevicesBean> beanLiveData) {
this.beanLiveData = beanLiveData;
}
+
+ public MutableLiveData<HomeDevicesBean> getBeanLiveData() {
+ if (beanLiveData == null){
+ beanLiveData = new MutableLiveData<>();
+ }
+ if (beanLiveData.getValue() == null){
+ beanLiveData.setValue(new HomeDevicesBean());
+ }
+ return beanLiveData;
+ }
+
+ public MutableLiveData<List<MemoBean>> getMemoListLiveData() {
+ if (memoListLiveData == null){
+ memoListLiveData = new MutableLiveData<>();
+ }
+ return memoListLiveData;
+ }
+
+ public void setMemoListLiveData(MutableLiveData<List<MemoBean>> memoListLiveData) {
+ this.memoListLiveData = memoListLiveData;
+ }
+ public List<String> getUploadFileList() {
+ return uploadFileList;
+ }
+
+ public void addUploadFile(String url) {
+ uploadFileList.add(url);
+ }
+
}
--
Gitblit v1.9.1