From 5325e22a184b53aadcc5e9552cb1ec54f9c8ad81 Mon Sep 17 00:00:00 2001
From: guoshen <3129367635@qq.com>
Date: 星期六, 29 六月 2024 16:33:11 +0800
Subject: [PATCH] 加入了直播、会议功能

---
 app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java |  362 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 362 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java
new file mode 100644
index 0000000..401c15b
--- /dev/null
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/WebcastDetailActivityViewModel.java
@@ -0,0 +1,362 @@
+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.StateViewEnum;
+import com.android.app_base.base.viewmodel.BaseViewModel;
+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.WebcastBean;
+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;
+
+public class WebcastDetailActivityViewModel extends BaseViewModel<DataRepository> {
+
+    private MutableLiveData<WebcastBean> beanLiveData;
+    private MutableLiveData<Boolean> typeLiveData;//true 缂栬緫鐘舵�� false 灞曠ず鐘舵��
+    private final List<String> uploadFileList = new ArrayList<>();//闇�瑕佷笂浼犵殑鏂囦欢鍒楄〃
+    public WebcastDetailActivityViewModel(@NonNull Application application) {
+        super(application);
+    }
+
+    @Override
+    protected DataRepository initModel() {
+        return DataRepository.getInstance();
+    }
+
+    /**
+     * 澧炲姞瀹跺ぇ浜嬭
+     */
+    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) {
+                                    WebcastBean 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.addWebcast(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.addWebcast(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 delete() {
+//        model.deleteWebcast(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){
+//                                    WebcastBean 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.updateWebcast(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.updateWebcast(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 MutableLiveData<WebcastBean> getBeanLiveData() {
+        if (beanLiveData == null){
+            beanLiveData = new MutableLiveData<>();
+        }
+        if (beanLiveData.getValue() == null){
+            beanLiveData.setValue(new WebcastBean());
+        }
+        return beanLiveData;
+    }
+
+    public void setBeanLiveData(MutableLiveData<WebcastBean> beanLiveData) {
+        this.beanLiveData = beanLiveData;
+    }
+
+    public MutableLiveData<Boolean> getTypeLiveData() {
+        if (typeLiveData == null){
+            typeLiveData = new MutableLiveData<>();
+        }
+        return typeLiveData;
+    }
+
+    public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) {
+        this.typeLiveData = typeLiveData;
+    }
+
+    public List<String> getUploadFileList() {
+        return uploadFileList;
+    }
+
+    public void addUploadFile(String url) {
+        uploadFileList.add(url);
+    }
+
+
+}

--
Gitblit v1.9.1