Преглед на файлове

[검색][New] 필터 적용 안 할 때 기본 데이터 불러오기

hyodong.min преди 6 години
родител
ревизия
2fc36424a2

+ 4 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/FilterBean.java

@@ -26,6 +26,10 @@ public abstract class FilterBean extends JsonBeanBase implements ISelectable {
   public static final String FILTER_LEVEL_SECTION = "1";
   public static final String FILTER_LEVEL_ITEM = "2";
 
+  public static final String FILTER_ORDER_LATEST = "1";
+  public static final String FILTER_ORDER_LIKE = "2";
+  public static final String FILTER_ORDER_BOOKMARK = "3";
+
   @SerializedName("fltrNo")
   protected String filterNo;
   @SerializedName("fltrName")

+ 5 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/SearchRequestBean.java

@@ -33,7 +33,7 @@ public class SearchRequestBean extends KeywordRequestBean {
   public static final String ORDER_BY_BOOKMARK = "3";
 
   @SerializedName("ctgrNo")
-  private String categoryNumber = "";
+  private String categoryNo = "";
   @SerializedName("fltrTxt")    // "fltrTxt":"#1#2#2#2", -- 일반필터조건 ,필터코드(#filterNo)
   private String filter = "";
   @SerializedName("fltrAreaTxt")  // "fltrAreaTxt":"#서울", -- 필터 지역 조건 ,지역명(#tagName)
@@ -47,12 +47,12 @@ public class SearchRequestBean extends KeywordRequestBean {
     super(keyword);
   }
 
-  public String getCategoryNumber() {
-    return categoryNumber;
+  public String getCategoryNo() {
+    return categoryNo;
   }
 
-  public void setCategoryNumber(String categoryNumber) {
-    this.categoryNumber = categoryNumber;
+  public void setCategoryNo(String categoryNumber) {
+    this.categoryNo = categoryNumber;
   }
 
   public String getFilter() {

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/module/APISearchModule.java

@@ -39,7 +39,7 @@ public class APISearchModule extends LifeplusAPIModule<SearchRequestBean, Search
 
   @Override
   protected Single<SearchResultBean> getAPI(SearchRequestBean requestBean) {
-    String categoryNo = requestBean.getCategoryNumber();
+    String categoryNo = requestBean.getCategoryNo();
     String filters = requestBean.getFilter() + requestBean.getFilterArea() + requestBean.getFilterPlace();
 
     // 기본 데이터(필터/정렬 없이 전체 데이터, 동일 키워드, 동일 정렬)라면 캐쉬에서 리턴

+ 23 - 12
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/search/SearchResultModel.java

@@ -131,6 +131,13 @@ public class SearchResultModel extends Model {
     }
   }
 
+  /**
+   * 필터 취소 후 재 검색 시 이용
+   */
+  public void searchNofilter() {
+    search(selectedCategoryIndex);
+  }
+
   /**
    * 카테고리 선택하여 검색
    *
@@ -150,7 +157,8 @@ public class SearchResultModel extends Model {
     // 카테고리 필터 추가
     CategoryCheckBean categoryCheckBean = categoryCheckBeans.get(selectedCategoryIndex);
     SearchRequestBean requestBean = new SearchRequestBean(getSearchTag());
-    requestBean.setCategoryNumber(categoryCheckBean.getCategoryNo());
+    requestBean.setCategoryNo(categoryCheckBean.getCategoryNo());
+
     if (StringUtil.isEmpty(requestBean.getKeyword())) {
       Log.i("APP# SearchResultModel | search", "|" + " 검색어 없음.");
       waiterCaller.hideWaiter();
@@ -501,11 +509,11 @@ public class SearchResultModel extends Model {
         sectionBean.setSectionType(FilterBean.FILTER_TYPE_ORDER);
         sectionBean.setFilterBeans(new ArrayList<>());
         // 최신순, 좋아요순, 북마크순
-        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_latest, "1"));
+        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_latest, FilterBean.FILTER_ORDER_LATEST));
         sectionBean.getFilterBeans().get(0).setSelected(true);  // 최신순 기본 선택
         sectionBean.getFilterBeans().get(0).commit();
-        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_like, "2"));
-        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_bookmark, "3"));
+        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_like, FilterBean.FILTER_ORDER_LIKE));
+        sectionBean.getFilterBeans().add(getSearchFilterBean(R.string.order_by_bookmark, FilterBean.FILTER_ORDER_BOOKMARK));
         hashMap.put("order", sectionBean);
 
         if (null != list && list.size() > 0) {
@@ -558,23 +566,23 @@ public class SearchResultModel extends Model {
   public void loadFilteringContents(IWaiterCallable waiterCallable, IEventListener listener) {
     Log.w("APP# SearchResultModel | loadFilteringContents", "|" + " -------------------------- ");
 
-    // 카테고리 변경 없음.
     // 키워드는 변경 없음
-
     SearchRequestBean requestBean = new SearchRequestBean(getSearchTag());
 
-    // 카테고리 필터 추가
+    // 카테고리 변경 없음.
     if (null != categoryCheckBeans && categoryCheckBeans.size() > 0) {
       CategoryCheckBean categoryCheckBean = categoryCheckBeans.get(selectedCategoryIndex);
       if (null != categoryCheckBean) {
-        requestBean.setCategoryNumber(categoryCheckBean.getCategoryNo());
+        requestBean.setCategoryNo(categoryCheckBean.getCategoryNo());
       }
     }
 
     // 필터 적용
     if (applyFilter(requestBean) == false) {
+      isFilterApplied = false;
       filterSearchResultBean = null;
-      listener.onEvent(new Event.Builder(Event.SUCCESS).integer(0).build());
+      Log.i("APP# SearchResultModel | loadFilteringContents", "|" + " 선택 필터 없음.");
+      listener.onEvent(new Event.Builder(Event.SUCCESS).integer(getFilteredCount()).build());
       return;
     }
 
@@ -736,7 +744,10 @@ public class SearchResultModel extends Model {
                 requestBean.setFilterPlace(requestBean.getFilterPlace() + StringUtil.HASH + filterBean.getFilterNo());
                 break;
               case FilterBean.FILTER_TYPE_ORDER:
-                isApplied = true;
+                if (filterBean.getFilterNo().equals(FilterBean.FILTER_ORDER_LATEST) == false) {
+                  // 기본 값이 아닐 경우에만 필터링했음을 표시
+                  isApplied = true;
+                }
                 requestBean.setOrder(filterBean.getFilterNo());
                 break;
               case FilterBean.FILTER_TYPE_PROPERTY:
@@ -789,9 +800,9 @@ public class SearchResultModel extends Model {
     else {
       isFilterApplied = true;
       parseResult(filterSearchResultBean);
-
-      onResult(new Event.Builder(Event.SUCCESS).integer(Event.FILTER_COMMIT).build());
     }
+
+    onResult(new Event.Builder(Event.SUCCESS).integer(Event.FILTER_COMMIT).build());
   }
 
   /**

+ 8 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/search/SearchResultPresenter.java

@@ -61,7 +61,6 @@ public class SearchResultPresenter extends Presenter<SearchResultModel, ISearchR
 
   private void renderContents() {
     List<SearchContentsBean> list = model.getResultContentsBeans();
-    view.setFilterIcon(model.isFilterApplied());
     view.drawResultContents(list);
   }
 
@@ -176,7 +175,14 @@ public class SearchResultPresenter extends Presenter<SearchResultModel, ISearchR
         }
         else if (event.getInteger() == Event.FILTER_COMMIT) {
           // 필터 데이터 적용
-          renderWithFiltering();
+          if(model.isFilterApplied()) {
+            renderWithFiltering();
+          }
+          else {
+            model.searchNofilter();
+          }
+
+          view.setFilterIcon(model.isFilterApplied());
         }
         else if (event.getIndex() == Event.LOADED_FILTER) {
           showFilterDialog();