Переглянути джерело

[카테고리][New] 추천 컨텐츠 -> 시리즈 구분

hyodong.min 7 роки тому
батько
коміт
f5f96d270a

+ 49 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryMainModel.java

@@ -6,6 +6,7 @@ package kr.co.zumo.app.lifeplus.view.screen.category;
 import android.support.annotation.CallSuper;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryBannerBean;
@@ -15,10 +16,15 @@ import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRecommendResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailListBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
+import kr.co.zumo.app.lifeplus.bean.api.StringRequestBean;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.module.APICategoryBannerLoadModule;
 import kr.co.zumo.app.lifeplus.model.module.APICategoryContentsLoadModule;
 import kr.co.zumo.app.lifeplus.model.module.APICategoryRecommendLoadModule;
+import kr.co.zumo.app.lifeplus.model.module.APIContentsDetailModule;
 import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
 import kr.co.zumo.app.lifeplus.view.Event;
 
@@ -37,6 +43,7 @@ public abstract class CategoryMainModel extends Model {
   public static final int LOADED_RECOMMEND = 0;
   public static final int LOADED_BANNER = 1;
   public static final int LOADED_CONTENTS = 2;
+  public static final int LOADED_DETAIL = 3;
 
   private Disposable disposableBanner;
   private Disposable disposableContents;
@@ -44,10 +51,14 @@ public abstract class CategoryMainModel extends Model {
   private ArrayList<CategoryBannerBean> bannerBeans;
   private ArrayList<CategoryRecommendBean> recommendBeans;
   private ArrayList<CategoryContentsBean> contentsBeans;
+  private Disposable disposableDetail;
+  private ContentsDetailListBean contentsDetailListBean;
 
   @APICategoryContentsLoadModule.Order
   private int currentOrder = APICategoryContentsLoadModule.ORDER_BY_LATEST;
 
+  private int selectedRecommendedIndex;
+
   @Override
   protected void createViewInternal() {
   }
@@ -204,5 +215,42 @@ public abstract class CategoryMainModel extends Model {
     return contentsBeans;
   }
 
-  protected abstract void modifyContents(ArrayList<CategoryContentsBean> contentsBeans);
+  public void loadDetail(String itemNumber) {
+    disposableDetail = new APIContentsDetailModule().call(new StringRequestBean(itemNumber), new IAPIModuleListener<ContentsDetailResultBean>() {
+      @Override
+      public void onApiSuccess(ContentsDetailResultBean resultBean) {
+        contentsDetailListBean = resultBean.getData();
+
+        onResult(new Event.Builder(Event.SUCCESS).index(LOADED_DETAIL).build());
+      }
+
+      @Override
+      public void onApiReason(ContentsDetailResultBean resultBean) {
+        onResult(new Event.Builder(Event.ERROR).string(resultBean.getReturnMessage()).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+        onResult(new Event.Builder(Event.ERROR).string(errorMessage).build());
+      }
+    });
+  }
+
+  public ContentsDetailListBean getContentsDetailListBean() {
+    return contentsDetailListBean;
+  }
+
+  protected abstract void modifyContents(List<CategoryContentsBean> contentsBeans);
+
+  public int getSelectedRecommendedIndex() {
+    return selectedRecommendedIndex;
+  }
+
+  public void setSelectedRecommendedIndex(int selectedRecommendedIndex) {
+    this.selectedRecommendedIndex = selectedRecommendedIndex;
+  }
+
+  public LifeplusContentsBean getSelectedRecommendBean() {
+    return recommendBeans.get(selectedRecommendedIndex);
+  }
 }

+ 30 - 10
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryMainPresenter.java

@@ -41,6 +41,7 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
   }
 
   protected abstract String getCategoryNumber();
+
   protected abstract int getCategoryIndex();
 
   private void onContentsLoaded() {
@@ -116,9 +117,9 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
 
   @Override
   protected final void onEventInternal(Event event) {
+    Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + event);
     switch (event.getEventId()) {
       case Event.ORDER:
-        Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + event);
         int index = event.getIndex();
         if (model.getCurrentOrder() != index) {
           setContentsOrder(index);
@@ -126,21 +127,20 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
         }
         break;
       case Event.RECOMMEND:
-        if(getCategoryNumber().equals(CategoryID.CATEGORY_1)){
-          go(ScreenID.SERIES);
-        }else{
-          setContentsHelper(model.getRecommendBeans().get(event.getIndex()));
-          go(ScreenID.CONTENTS);
-        }
-        Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + event);
+        /**
+         * todo api 수정되면 디테일 로딩 없이 시리즈/디테일 구분
+         */
+        model.setSelectedRecommendedIndex(event.getIndex());
+        String itemNumber = model.getSelectedRecommendBean().getItemNumber();
+        Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + "recommened item number: " + itemNumber);
+        model.loadDetail(itemNumber);
+
         break;
       case Event.CONTENTS:
-        Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + event);
         setContentsHelper(model.getContents().get(event.getIndex()));
         go(ScreenID.CONTENTS);
         break;
       case Event.BANNER:
-        Log.i("APP# CategoryMainPresenter | onEventInternal", "|" + event);
         setContentsHelper(model.getBannerBeans().get(event.getIndex()));
         go(ScreenID.CONTENTS);
         break;
@@ -192,6 +192,26 @@ public abstract class CategoryMainPresenter<M extends CategoryMainModel, V exten
         else if (event.getIndex() == CategoryMainModel.LOADED_CONTENTS) {
           doubleCheckerContents.checkSecond();
         }
+        else if (event.getIndex() == CategoryMainModel.LOADED_DETAIL) {
+          // fixme 시리즈 뷰 테스트.
+          if (null != model.getContentsDetailListBean()
+            && null != model.getContentsDetailListBean().getSeriesItemList()
+            && model.getContentsDetailListBean().getSeriesItemList().size() > 0) {
+            Log.w("APP# CategoryMainPresenter | onResult", "|" + " series            --> ");
+
+            DeliveryHelper helper = getHelper(DeliveryHelper.class);
+            helper.setPackaging(model.getContentsDetailListBean());
+
+            go(ScreenID.SERIES);
+          }
+          else {
+            Log.w("APP# CategoryMainPresenter | onResult", "|" + " contents             --> ");
+
+            setContentsHelper(model.getSelectedRecommendBean());
+            go(ScreenID.CONTENTS);
+          }
+        }
+
         break;
       case Event.ERROR:
         if (event.getIndex() == CategoryMainModel.LOADED_RECOMMEND) {

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type1/FirstCategoryMainModel.java

@@ -3,7 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.category.type1;
 
-import java.util.ArrayList;
+import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.view.screen.category.CategoryMainModel;
@@ -51,7 +51,7 @@ public class FirstCategoryMainModel extends CategoryMainModel {
   }
 
   @Override
-  protected void modifyContents(ArrayList<CategoryContentsBean> contentsBeans) {
+  protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
 
   }
 

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type2/SecondCategoryMainModel.java

@@ -3,8 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.category.type2;
 
-import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.view.screen.category.CategoryMainModel;
@@ -52,7 +52,7 @@ public class SecondCategoryMainModel extends CategoryMainModel {
   }
 
   @Override
-  protected void modifyContents(ArrayList<CategoryContentsBean> contentsBeans) {
+  protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
     // 5번 째 6번 째 데이터 교체
     int len = contentsBeans.size();
     int j;

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type3/ThirdCategoryMainModel.java

@@ -3,7 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.category.type3;
 
-import java.util.ArrayList;
+import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.view.screen.category.CategoryMainModel;
@@ -51,7 +51,7 @@ public class ThirdCategoryMainModel extends CategoryMainModel {
   }
 
   @Override
-  protected void modifyContents(ArrayList<CategoryContentsBean> contentsBeans) {
+  protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
 
   }
 

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type4/FourthCategoryMainModel.java

@@ -3,7 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.category.type4;
 
-import java.util.ArrayList;
+import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
 import kr.co.zumo.app.lifeplus.view.screen.category.CategoryMainModel;
@@ -51,7 +51,7 @@ public class FourthCategoryMainModel extends CategoryMainModel {
   }
 
   @Override
-  protected void modifyContents(ArrayList<CategoryContentsBean> contentsBeans) {
+  protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
 
   }
 

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/type5/FifthCategoryMainModel.java

@@ -3,8 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.category.type5;
 
-import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.CategoryContentsBean;
@@ -55,7 +55,7 @@ public class FifthCategoryMainModel extends CategoryMainModel {
   }
 
   @Override
-  protected void modifyContents(ArrayList<CategoryContentsBean> contentsBeans) {
+  protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
 
   }