詹子聪 5 anni fa
parent
commit
6c6ea79926

+ 82 - 17
app/src/main/java/com/miekir/eden/ui/home/coupon/TemplatePresenter.java

@@ -1,14 +1,28 @@
 package com.miekir.eden.ui.home.coupon;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
 import com.miekir.eden.base.ApiService;
 import com.miekir.eden.constant.EdenError;
+import com.miekir.eden.kawayi.AES;
+import com.miekir.eden.kawayi.API;
+import com.miekir.eden.kawayi.WalkApp;
+import com.miekir.eden.kawayi.bean.BaseBean;
+import com.miekir.eden.kawayi.bean.EncryptBean;
+import com.miekir.eden.manager.EdenManager;
 import com.miekir.eden.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
 import com.miekir.network.core.base.BaseObserver;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import cn.hutool.http.HttpUtil;
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
 import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.functions.Action;
 import io.reactivex.schedulers.Schedulers;
 
 /**
@@ -20,28 +34,79 @@ import io.reactivex.schedulers.Schedulers;
  */
 public class TemplatePresenter extends BasePresenter<ITemplateView<String>> {
 
-
+    /**
+     * 获取照片
+     * @param pageNum
+     * @param pageSize
+     */
     public void getTemplateData(int pageNum, int pageSize) {
-        RetrofitHelper.getInstance()
-                .getRequestApi(ApiService.class)
-                .getCouponList(pageNum, pageSize)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new BaseObserver<List<String>>() {
-                    @Override
-                    public void onSuccess(int code, List<String> result) {
-                        if (getView() != null) {
-                            getView().onTemplateDataCome(true, EdenError.SUCCESS, result);
+        if (EdenManager.getInstance().isKwyPhotoReady()) {
+            Observable<List<String>> observable = Observable.create(new ObservableOnSubscribe<List<String>>() {
+                @Override
+                //将事件发射出去,持有观察者的对象
+                public void subscribe(ObservableEmitter<List<String>> e) throws Exception {
+                    String result = HttpUtil.get(API.PHOTO_LIST, 15000);
+                    List<String> photoList = new ArrayList<>();
+                    try {
+                        BaseBean homeBean = JSON.parseObject(result, BaseBean.class);
+                        if (homeBean != null) {
+                            String detailJson = AES.decryptKawayi(homeBean.getJson(), WalkApp.KEY_SECRET);
+                            List<EncryptBean> photoBeanList = JSON.parseObject(detailJson, new TypeReference<List<EncryptBean>>() {});
+                            if (photoBeanList != null && photoBeanList.size() > 0) {
+                                for (EncryptBean bean : photoBeanList) {
+                                    photoList.addAll(bean.getFiles());
+                                }
+                            }
+                            e.onNext(photoList);
                         }
+                    } catch (Exception photoException) {
+                        photoException.printStackTrace();
+                        e.onNext(null);
                     }
 
-                    @Override
-                    public void onFailure(int code, Throwable e, String errMsg) {
-                        if (getView() != null) {
-                            getView().onTemplateDataCome(false, code, null);
+                    e.onComplete();
+                }
+            });
+
+            observable.observeOn(AndroidSchedulers.mainThread())
+                    .subscribeOn(Schedulers.io())
+                    .doOnNext(result -> {
+                        if (result != null && result.size() > 0) {
+                            getView().onTemplateDataCome(true, EdenError.SUCCESS, result);
+                        } else {
+                            getView().onTemplateDataCome(false, EdenError.FAILED_COMMON, result);
                         }
-                    }
-                });
+                    })
+                    .doOnError(err -> {
+                        err.printStackTrace();
+                    })
+                    .doOnComplete(new Action() {
+                        @Override
+                        public void run() throws Exception { }
+                    }).subscribe();
+        } else {
+            RetrofitHelper.getInstance()
+                    .getRequestApi(ApiService.class)
+                    .getCouponList(pageNum, pageSize)
+                    .subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .subscribe(new BaseObserver<List<String>>() {
+                        @Override
+                        public void onSuccess(int code, List<String> result) {
+                            if (getView() != null) {
+                                getView().onTemplateDataCome(true, EdenError.SUCCESS, result);
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(int code, Throwable e, String errMsg) {
+                            if (getView() != null) {
+                                getView().onTemplateDataCome(false, code, null);
+                            }
+                        }
+                    });
+        }
+
     }