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

[컨텐츠][New] 공유 포인트 api 및 모듈

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

+ 13 - 0
app/src/common/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java

@@ -66,6 +66,8 @@ import kr.co.zumo.app.lifeplus.bean.api.SearchPopularTagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SettingMemberResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TitleRequestBean;
@@ -512,6 +514,17 @@ public class LifeplusAPIService extends LifeplusRetrofitService implements Lifep
     return api().getContentsDetail(itemNumber);
   }
 
+  /**
+   * 공유 시 얻는 포인트 확인
+   *
+   * @param bean
+   * @return
+   */
+  @Override
+  public Single<SharePointResultBean> getSharePoint(SharePointRequestBean bean) {
+    return api().getSharePoint(bean);
+  }
+
   /**
    * 회원 설정
    *

+ 58 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/SharePointRequestBean.java

@@ -0,0 +1,58 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.bean.api;
+
+import com.google.gson.annotations.SerializedName;
+
+import kr.co.zumo.app.lifeplus.tool.Share;
+
+/**
+ * SharePointRequestBean
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019. 1. 18.]   [최초 작성]
+ * @since 2019. 1. 18.
+ */
+public class SharePointRequestBean extends RequestBean {
+  /*
+  "{
+ ""itemNo"" : ""1234567890"", ""listItemNo"": ""201610280000032759"", ""logDvsn"" : ""1""
+}"
+   */
+
+  @SerializedName("itemNo")
+  private String itemNo;
+  @SerializedName("listItemNo")
+  private String listItemNo;
+  @SerializedName("logDvsn")
+  private String shareType;
+
+  public String getItemNo() {
+    return itemNo;
+  }
+
+  public void setItemNo(String itemNo) {
+    this.itemNo = itemNo;
+  }
+
+  public String getListItemNo() {
+    return listItemNo;
+  }
+
+  public void setListItemNo(String listItemNo) {
+    this.listItemNo = listItemNo;
+  }
+  
+  @Share.Type
+  public String getShareType() {
+    return shareType;
+  }
+
+  public void setShareType(@Share.Type String shareType) {
+    this.shareType = shareType;
+  }
+}

+ 17 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/SharePointResultBean.java

@@ -0,0 +1,17 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.bean.api;
+
+/**
+ * SharePointResultBean
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019. 1. 18.]   [최초 작성]
+ * @since 2019. 1. 18.
+ */
+public class SharePointResultBean extends LifeplusAPIResultObjectBean<CoinValueBean> {
+}

+ 28 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/module/APISharePointModule.java

@@ -0,0 +1,28 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.model.module;
+
+import io.reactivex.Single;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointResultBean;
+import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIRepository;
+
+/**
+ * APISharePointModule
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019. 1. 18.]   [최초 작성]
+ * @since 2019. 1. 18.
+ */
+public class APISharePointModule extends LifeplusAPIModule<SharePointRequestBean, SharePointResultBean> {
+
+  @Override
+  protected Single<SharePointResultBean> getAPI(SharePointRequestBean requestBean) {
+    return new LifeplusAPIRepository().getSharePoint(requestBean);
+  }
+
+}

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPI.java

@@ -66,6 +66,8 @@ import kr.co.zumo.app.lifeplus.bean.api.SearchPopularTagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SettingMemberResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TitleRequestBean;
@@ -154,6 +156,10 @@ public interface LifeplusAPI {
   @GET("/mapi/contents/cntsdtlinfo.plus")
   Single<ContentsDetailResultBean> getContentsDetail(@Query("itemNo") String itemNumber);
 
+  // 공유 시 코인 획득
+  @POST("mapi/categorys/cntsshare.plus")
+  Single<SharePointResultBean> getSharePoint(@Body SharePointRequestBean bean);
+
 
   /***********************************
    * Bookmark

+ 10 - 39
app/src/main/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIRepository.java

@@ -3,9 +3,6 @@
  */
 package kr.co.zumo.app.lifeplus.network.api;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import io.reactivex.Single;
 import kr.co.zumo.app.lifeplus.bean.api.AuthConfirmRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.AuthNumberRequestBean;
@@ -34,15 +31,12 @@ import kr.co.zumo.app.lifeplus.bean.api.CoinInfoRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.CoinInfoResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsBookmarkRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailResultBean;
-import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsLikeRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.FAQResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.FilterDetailRequestBean;
-import kr.co.zumo.app.lifeplus.bean.api.ItemNumberBean;
 import kr.co.zumo.app.lifeplus.bean.api.KeywordRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
-import kr.co.zumo.app.lifeplus.bean.api.LifeplusData;
 import kr.co.zumo.app.lifeplus.bean.api.LoginResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.MainContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.MemberActivateResultBean;
@@ -72,6 +66,8 @@ import kr.co.zumo.app.lifeplus.bean.api.SearchPopularTagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SettingMemberResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TitleRequestBean;
@@ -335,19 +331,7 @@ public class LifeplusAPIRepository implements LifeplusAPI {
     }
     else {
       // 비회원 - 로컬에 저장
-      boolean toChecked = LifeplusData.isTrue(bean.getChecked());
-
-      GuestLikedManager guestLikedManager = new GuestLikedManager();
-      guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
-
-      if (toChecked) {
-        guestLikedManager.addLiked(bean.getItemNo());
-      }
-      else {
-        guestLikedManager.removeLiked(bean.getItemNo());
-      }
-      SuperModel.getInstance().setGuestLikedListBean(guestLikedManager.getGuestLikedListBean());
-
+      GuestLikedManager.applyLikedRequest(bean);
       return Single.fromCallable(() -> new LifeplusAPIBean(LifeplusAPIBean.RETURN_SUCCESS, ""));
     }
   }
@@ -367,26 +351,8 @@ public class LifeplusAPIRepository implements LifeplusAPI {
       return new LifeplusAPIService().getContentsFlagList(bean);
     }
     else {
-      return Single.fromCallable(() -> {
-
-        // 비회원 - 로컬에서 로딩
-
-        GuestLikedManager guestLikedManager = new GuestLikedManager();
-        guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
-
-        ContentsFlagResultBean contentsFlagResultBean = new ContentsFlagResultBean();
-        contentsFlagResultBean.setCode(LifeplusAPIBean.RETURN_SUCCESS);
-        ContentsFlagBean contentsFlagBean = new ContentsFlagBean();
-        contentsFlagBean.setBookmarkedList(new ArrayList<>());
-        List<ItemNumberBean> list = new ArrayList<>();
-        for (String s : guestLikedManager.getLikedList()) {
-          list.add(new ItemNumberBean(s));
-        }
-        contentsFlagBean.setLikedList(list);
-        contentsFlagResultBean.setData(contentsFlagBean);
-
-        return contentsFlagResultBean;
-      });
+      // 비회원 - 로컬에서 로딩
+      return Single.fromCallable(GuestLikedManager::getContentsFlagResultBean);
     }
   }
 
@@ -395,6 +361,11 @@ public class LifeplusAPIRepository implements LifeplusAPI {
     return new LifeplusAPIService().getContentsDetail(itemNumber);
   }
 
+  @Override
+  public Single<SharePointResultBean> getSharePoint(SharePointRequestBean bean) {
+    return new LifeplusAPIService().getSharePoint(bean);
+  }
+
   // -------------------------------------------------------
   @Override
   public Single<CoinInfoResultBean> getCoinInfo(CoinInfoRequestBean bean) {

+ 47 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/GuestLikedManager.java

@@ -7,6 +7,13 @@ import java.util.ArrayList;
 import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.GuestLikedListBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsLikeRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.ItemNumberBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusData;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 
 /**
  * GuestLikedManager
@@ -30,7 +37,7 @@ public class GuestLikedManager implements IFlags {
   }
 
   public void setGuestLikedListBean(GuestLikedListBean guestLikedListBean) {
-    if(null == guestLikedListBean) {
+    if (null == guestLikedListBean) {
       guestLikedListBean = new GuestLikedListBean();
       guestLikedListBean.setLikedList(new ArrayList<>());
     }
@@ -102,4 +109,43 @@ public class GuestLikedManager implements IFlags {
   public void dispose() {
     guestLikedListBean = null;
   }
+
+
+  /***********************************
+   * Guest api result
+   ***********************************/
+
+  public static ContentsFlagResultBean getContentsFlagResultBean() {
+    GuestLikedManager guestLikedManager = new GuestLikedManager();
+    guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
+
+    ContentsFlagResultBean contentsFlagResultBean = new ContentsFlagResultBean();
+    contentsFlagResultBean.setCode(LifeplusAPIBean.RETURN_SUCCESS);
+    ContentsFlagBean contentsFlagBean = new ContentsFlagBean();
+    contentsFlagBean.setBookmarkedList(new ArrayList<>());
+    List<ItemNumberBean> list = new ArrayList<>();
+    for (String s : guestLikedManager.getLikedList()) {
+      list.add(new ItemNumberBean(s));
+    }
+    contentsFlagBean.setLikedList(list);
+    contentsFlagResultBean.setData(contentsFlagBean);
+
+    return contentsFlagResultBean;
+  }
+
+  public static void applyLikedRequest(ContentsLikeRequestBean bean) {
+    boolean toChecked = LifeplusData.isTrue(bean.getChecked());
+
+    GuestLikedManager guestLikedManager = new GuestLikedManager();
+    guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
+
+    if (toChecked) {
+      guestLikedManager.addLiked(bean.getItemNo());
+    }
+    else {
+      guestLikedManager.removeLiked(bean.getItemNo());
+    }
+    SuperModel.getInstance().setGuestLikedListBean(guestLikedManager.getGuestLikedListBean());
+
+  }
 }

+ 15 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/tool/Share.java

@@ -3,6 +3,11 @@
  */
 package kr.co.zumo.app.lifeplus.tool;
 
+import android.support.annotation.StringDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 import kr.co.zumo.app.lifeplus.bean.api.ContentsItemBean;
 
 /**
@@ -16,6 +21,16 @@ import kr.co.zumo.app.lifeplus.bean.api.ContentsItemBean;
  * @since 2018. 11. 9.
  */
 public abstract class Share<T> {
+
+  public static final String TYPE_KAKAO = "1";
+  public static final String TYPE_FACEBOOK = "2";
+  public static final String TYPE_EMAIL = "3";
+  public static final String TYPE_URL = "4";
+
+  @Retention(RetentionPolicy.SOURCE)
+  @StringDef({TYPE_KAKAO, TYPE_FACEBOOK, TYPE_EMAIL, TYPE_URL})
+  public @interface Type {}
+
   T context;
 
   public Share(T context) {

+ 11 - 0
app/src/sandbox/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java

@@ -68,6 +68,8 @@ import kr.co.zumo.app.lifeplus.bean.api.SearchPopularTagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.SearchResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.SettingMemberResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SharePointResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TitleRequestBean;
@@ -280,6 +282,15 @@ public class LifeplusAPIService implements LifeplusAPI {
     }
   }
 
+  @Override
+  public Single<SharePointResultBean> getSharePoint(SharePointRequestBean bean) {
+    return Single.fromCallable(() -> {
+      String result = "{\"data\":{\"coin\":3000},\"sp_rtn\":0}";
+
+      return new Gson().fromJson(result, SharePointResultBean.class);
+    });
+  }
+
   @Override
   public Single<CategoryContentsResultBean> getCategoryContentsOrderByLike(CategoryRequestBean bean) {
     return getCategoryContents(bean);