소스 검색

- 주모1.0 이벤트로그 api 수정

yeongyun 6 년 전
부모
커밋
828179c264

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 818 - 819
app/src/common/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java


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

@@ -103,7 +103,6 @@ import kr.co.zumo.app.lifeplus.zumo.bean.api.MemberLoginResultBean;
 import okhttp3.MultipartBody;
 import okhttp3.RequestBody;
 import retrofit2.http.Body;
-import retrofit2.http.FieldMap;
 import retrofit2.http.GET;
 import retrofit2.http.Multipart;
 import retrofit2.http.POST;
@@ -123,331 +122,332 @@ import retrofit2.http.QueryMap;
  */
 public interface LifeplusAPI {
 
-  /***********************************
-   * 공통
-   ***********************************/
-  @POST("mapi/main/mainpopupinfo.plus")
-  Single<PopupInfoResultBean> getPopupInfo(@Body RequestBean bean);
+    /***********************************
+     * 공통
+     ***********************************/
+    @POST("mapi/main/mainpopupinfo.plus")
+    Single<PopupInfoResultBean> getPopupInfo(@Body RequestBean bean);
 
-  @POST("mapi/main/getWeather.plus")
-  Single<WeatherResultBean> getWeather(@Body WeatherRequestBean bean);
+    @POST("mapi/main/getWeather.plus")
+    Single<WeatherResultBean> getWeather(@Body WeatherRequestBean bean);
 
-  @POST("mapi/push/saveClientKey.plus")
-  Single<LifeplusAPIBean> saveFcmToken(@Body TokenRequestBean bean);
+    @POST("mapi/push/saveClientKey.plus")
+    Single<LifeplusAPIBean> saveFcmToken(@Body TokenRequestBean bean);
 
-  /***********************************
-   * Contents
-   ***********************************/
-  // 메인 컨텐츠, mainCtgrCntsCtlg
-  @POST("mapi/main/ctgrcntsctlg.plus")
-  Single<MainContentsResultBean> getMainContents(@Body RequestBean bean);
-
-  // 카테고리 별 추천 컨텐츠, ctgrRcmdCntsCtlg
-  @POST("mapi/categorys/rcmdcnts.plus")
-  Single<CategoryRecommendResultBean> getCategoryRecommendContents(@Body CategoryRequestBean bean);
+    /***********************************
+     * Contents
+     ***********************************/
+    // 메인 컨텐츠, mainCtgrCntsCtlg
+    @POST("mapi/main/ctgrcntsctlg.plus")
+    Single<MainContentsResultBean> getMainContents(@Body RequestBean bean);
+
+    // 카테고리 별 추천 컨텐츠, ctgrRcmdCntsCtlg
+    @POST("mapi/categorys/rcmdcnts.plus")
+    Single<CategoryRecommendResultBean> getCategoryRecommendContents(@Body CategoryRequestBean bean);
+
+    // 카테고리 별 배너 목록, ctgrBannerCtlg
+    @POST("mapi/categorys/banner.plus")
+    Single<CategoryBannerResultBean> getCategoryBanner(@Body CategoryRequestBean bean);
+
+    // 카테고리 별 콘텐츠 목록, 최신 순
+    @POST("mapi/categorys/contents.plus")
+    Single<CategoryContentsResultBean> getCategoryContents(@Body CategoryContentsRequestBean bean);
+
+    // 카테고리 별 콘텐츠 목록, 좋아요 순
+    @POST("mapi/categorys/contentslike.plus")
+    Single<CategoryContentsResultBean> getCategoryContentsOrderByLike(@Body CategoryContentsRequestBean bean);
+
+    // 카테고리 별 콘텐츠 목록, 북마크 순
+    @POST("mapi/categorys/contentsbook.plus")
+    Single<CategoryContentsResultBean> getCategoryContentsOrderByBookmark(@Body CategoryContentsRequestBean bean);
+
+    // 카테고리 별 필터 목록
+    @POST("mapi/categorys/listfilter.plus")
+    Single<CategoryFilterResultBean> getCategoryFilter(@Body CategoryRequestBean bean);
+
+    // 카테고리 별 필터 적용 컨텐츠 목록
+    @POST("mapi/categorys/selfilterlist.plus")
+    Single<CategoryFilterContentsResultBean> getCategoryFilterContents(@Body CategoryFilterContentsRequestBean bean);
+
+    // 카테고리 별 필터 세부 목록
+    @POST("mapi/categorys/getDtlListFilter.plus")
+    Single<CategoryFilterDetailResultBean> getCategoryFilterDetail(@Body CategoryFilterDetailRequestBean bean);
+
+    // 좋아요
+    @POST("mapi/categorys/cntslike.plus")
+    Single<LifeplusAPIBean> setLiked(@Body ContentsLikeRequestBean bean);
+
+    // 북마크
+    @POST("mapi/categorys/cntsbookmark.plus")
+    Single<LifeplusAPIBean> setBookmarked(@Body ContentsBookmarkRequestBean bean);
+
+    // 컨텐츠 상세
+    @GET("/mapi/contents/cntsdtlinfo.plus")
+    Single<ContentsDetailResultBean> getContentsDetail(@QueryMap Map<String, String> params);
+
+    // 위젯 - 추천 데이터
+    @POST("mapi/srch/getRecommendList.plus")
+    Single<WidgetResultBean> getWidgetData(@Body RequestBean bean);
+
+    // 컨텐츠 로그
+    @POST("mapi/contents/inslogapp.plus")
+    Single<ContentsLogResultBean> setContentsLog(@Body ContentsLogRequestBean bean);
+
+
+    /***********************************
+     * Event
+     ***********************************/
+    // 이벤트 전체 목록
+    @POST("mapi/event/evntlist.plus")
+    Single<EventListResultBean> getEventList(@Body RequestBean bean);
+
+    // 이벤트 참여 목록
+    @POST("mapi/event/myevntlist.plus")
+    Single<EventListResultBean> getEventMyList(@Body RequestBean bean);
+
+    // 이벤트 상세
+    @POST("mapi/event/evntdtlinfo.plus")
+    Single<EventDetailResultBean> getEventDetail(@Body ItemNoRequestBean bean);
+
+    // 이벤트 당첨 결과
+    @POST("mapi/event/evntwinlist.plus")
+    Single<EventWinnerResultBean> getEventWinner(@Body ItemNoRequestBean bean);
+
+    // 이벤트 파일 전송
+    @Multipart
+    @POST("mapi/event/answimagupload.plus")
+    Single<EventUploadImageResultBean> uploadImage(@Part("itemNo") RequestBody itemNo, @Part List<MultipartBody.Part> files);
+
+    // 이벤트 약관 전송
+    @POST("mapi/event/updevntjoinagre.plus")
+    Single<LifeplusAPIBean> setEventPolicy(@Body EventPolicyRequestBean bean);
+
+    // 이벤트 응모형 답변 전송
+    @POST("mapi/event/insevntptcpansw.plus")
+    Single<EventAnswerResultBean> setEventAnswer(@Body EventAnswerRequestBean bean);
+
+    // 이벤트 선택형 추천 목록
+    @POST("mapi/event/evntreercnts.plus")
+    Single<EventRecommendResultBean> getEventRecommendContents(@Body EventRecommendRequestBean bean);
+
+    // 이벤트 선택형 추천 태그 목록
+    @POST("mapi/event/evntreertag.plus")
+    Single<EventTagResultBean> getEventRecommendTag(@Body EventTagRequestBean bean);
+
+    // 이벤트 선택형 태그 연관 컨텐츠
+    @POST("mapi/event/evnttagcnts.plus")
+    Single<EventTagRelatedResultBean> getEventTagRelatedContents(@Body EventTagRelatedRequestBean bean);
+
+    // 이벤트 참여 결과
+    @POST("mapi/event/evntrspnresl.plus")
+    Single<EventAnswerRecordResultBean> getEventAnswerRecord(@Body EventAnswerRecordRequestBean bean);
+
+
+    /***********************************
+     * Bookmark
+     ***********************************/
+    // 나의 북마크 목록 조회
+    @POST("mapi/my/bookmarkctlg.plus")
+    Single<BookmarkResultBean> getMyBookmarkList(@Body RequestBean bean);
+
+    // 최근 많이 한 북마크 목록 조회
+    @POST("mapi/my/latsbookmarkctlg.plus")
+    Single<BookmarkResultBean> getBestBookmarkList(@Body RequestBean bean);
+
+    // 북마크 목록 - 북마크 없는 경우, 카테고리 별 최근 많이 한 북마크 목록
+    @POST("mapi/my/catebookmarkctlg.plus")
+    Single<BookmarkListResultBean> getLatestBestBookmarkListAtCategory(@Body CategoryRequestBean bean);
+
+    // 북마크 목록 - 북마크 있는 경우, 카테고리 별 내 북마크 리스트
+    @POST("mapi/my/latestbookmarkctlg.plus")
+    Single<BookmarkListResultBean> getBookmarkListAtCategory(@Body PageRequestBean bean);
+
+    // 북마크 목록 - 많이 한 북마크 리스트
+    @Deprecated
+    @POST("mapi/my/bestbookmarkctlg.plus")
+    Single<BookmarkListResultBean> getBestBookmarkList(@Body PageRequestBean bean);
+
+    /***********************************
+     * 버킷 리스트
+     ***********************************/
+    // 베스트 버킷 리스트 조회
+    @POST("mapi/my/bestbucket.plus")
+    Single<BucketBestListResultBean> getBestBucketList(@Body RequestBean bean);
+
+    // 버킷 리스트 목록 조회
+    @POST("mapi/my/bucketctlg.plus")
+    Single<BucketListResultBean> getBucketList(@Body BucketListRequestBean bean);
+
+    // 나의 버킷 리스트 목록 조회
+    @POST("mapi/my/buckets.plus")
+    Single<BucketMyListResultBean> getMyBucketList(@Body RequestBean bean);
+
+    // 나의 버킷 리스트 연관 태그 목록 조회
+    @POST("mapi/my/bucketlatstag.plus")
+    Single<BucketListTagResultBean> getMyBucketTagList(@Body TitleRequestBean bean);
+
+    // 나의 태그 컨텐츠 목록 조회
+    @POST("mapi/my/bucketdtl.plus")
+    Single<TagRelatedContentsResultBean> getTagRelatedContentsList(@Body TagRelatedContentsRequestBean bean);
+
+    // 버킷 리스트 배경 이미지 목록 조회
+    @Deprecated
+    @POST("mapi/my/bucketImag.plus")
+    Single<BucketBackgroundListResultBean> getMyBucketBackgroundList(@Body RequestBean bean);
+
+    // 버킷 리스트 등록
+    @POST("mapi/my/insbucket.plus")
+    Single<BucketRegisterResultBean> registerMyBucket(@Body BucketRegisterRequestBean bean);
+
+    // 버킷 리스트 수정
+    @POST("mapi/my/updbucket.plus")
+    Single<BucketRegisterResultBean> updateMyBucket(@Body BucketUpdateRequestBean bean);
+
+    // 버킷 리스트 달성
+    @POST("mapi/my/arhvbucket.plus")
+    Single<LifeplusAPIBean> finishMyBucket(@Body BucketCompleteRequestBean bean);
+
+    // 버킷 리스트 삭제
+    @POST("mapi/my/delbucket.plus")
+    Single<LifeplusAPIBean> deleteMyBucket(@Body BucketNumberRequestBean bean);
+
+    /***********************************
+     * 회원
+     ***********************************/
+    @POST("mapi/members/delmember.plus")
+    Single<LifeplusAPIBean> deleteMember(@Body UserNameRequestBean bean);
+
+    @POST("mapi/members/chkmember.plus")
+    Single<LoginResultBean> selectMember(@Body RequestBean bean);
+
+    @POST("mapi/categorys/mysimplelikebook.plus")
+    Single<ContentsFlagResultBean> getContentsFlagList(@Body RequestBean bean);
+
+    @POST("/mapi/my/updusername.plus")
+    Single<LifeplusAPIBean> updateUserName(@Body UserNameRequestBean bean);
+
+    @POST("/mapi/my/upduserpswd.plus")
+    Single<PasswordUpdateResultBean> updateUserPassword(@Body UserNamePasswordRequestBean bean);
+
+    @POST("/mapi/my/logout.plus")
+    Single<LifeplusAPIBean> logout(@Body UserNameRequestBean bean);
+
+    /***********************************
+     * 문의
+     ***********************************/
+    // 나의 문의 목록
+    @POST("mapi/faqs/myqalists.plus")
+    Single<QuestionResultBean> getQuestionList(@Body RequestBean bean);
+
+    // 문의 등록 하기
+    @POST("mapi/faqs/setmyqa.plus")
+    Single<LifeplusAPIBean> registerQuestion(@Body QuestionRequestBean bean);
+
+
+    /***********************************
+     * Setting
+     **********************************/
+    // member info
+    // -> 선택 약관 리스트가 포함되어있음.
+    @POST("mapi/members/memrsetinfo.plus")
+    Single<SettingMemberResultBean> getMemberInfo(@Body RequestBean bean);
+
+    // 사용자 약관 리스트
+    // 필수/선택 전체 약관 리스트 (memberinfo 의 선택 약관 표함)
+    @POST("mapi/members/stplctlg.plus")
+    Single<PolicyListResultBean> getMemberPolicyList(@Body RequestBean bean);
+
+    // 사용자 약관 상세
+    @POST("mapi/members/stpldtl.plus")
+    Single<PolicyResultBean> getPolicyDetail(@Body PolicyNoRequestBean bean);
+
+    // 사용자 선택 약관 동의 여부
+    @POST("mapi/members/updinfoagre.plus")
+    Single<LifeplusAPIBean> setMemberPolicyAgree(@Body MemberPolicyRequestBean bean);
+
+    // 사용자 스폐셜코드/추천인코드 등록
+    @POST("mapi/members/updsprecd.plus")
+    Single<MemberCodeResultBean> setMemberCode(@Body MemberCodeRequestBean bean);
+
+    // 사용자 Lifeplus 마케팅 정보 email/sms 수신동의
+    @POST("mapi/members/updmkagre.plus")
+    Single<LifeplusAPIBean> setMemberMarketingAgree(@Body MemberMarketingAgreeRequestBean bean);
+
+    // 사용자 PUSH 알림 / 푸시 마케팅 / 위치설정
+    @POST("mapi/members/updpushagre.plus")
+    Single<LifeplusAPIBean> setMemberPushAgree(@Body MemberPushAgreeRequestBean bean);
+
+    /***********************************
+     * 검색
+     ***********************************/
+    // 자동 완성
+    @POST("mapi/srch/autoComplete.plus")
+    Single<SearchAutoCompletionResultBean> getAutoCompletion(@Body KeywordRequestBean bean);
+
+    // 검색
+    @POST("mapi/srch/srch.plus")
+    Single<SearchResultBean> search(@Body SearchRequestBean bean);
+
+    // 인기 태그
+    @POST("mapi/srch/getTopKeyword.plus")
+    Single<SearchPopularTagResultBean> getPopularTag(@Body RequestBean bean);
+
+    // 전체 필터
+    @POST("mapi/srch/getFilter.plus")
+    Single<SearchFilterResultBean> getSearchFilter(@Body RequestBean bean);
+
+    // 필터 세부
+    @POST("mapi/srch/getDtlFilter.plus")
+    Single<SearchFilterDetailResultBean> getSearchFilterDetail(@Body FilterDetailRequestBean bean);
+
+    /***********************************
+     * 공지
+     ***********************************/
+    @POST("mapi/srch/getNoticeList.plus")
+    Single<NoticeResultBean> getNotice(@Body RequestBean bean);
+
+
+    /***********************************
+     * ZUMO API
+     ***********************************/
+    // 사용자정보조회
+    @POST("mapi/membernew/getMemberInfoByUserNo.plus")
+    Single<MemberInfoResultBean> getMemberInfoByUserNo(@Body MemberInfoByUserNoRequestBean bean);
+
+    // 회원가입가능 이메일,소셜 여부체크
+    @POST("mapi/membernew/isEmailSocialValidCheck.plus")
+    Single<IsEmailSocialValidCheckResultBean> isEmailSocialValidCheck(@Body IsEmailSocialValidCheckRequestBean bean);
+
+    // 회원가입
+    @POST("mapi/membernew/setMemberJoin.plus")
+    Single<kr.co.zumo.app.lifeplus.zumo.bean.api.MemberJoinResultBean> setMemberJoin(@Body kr.co.zumo.app.lifeplus.zumo.bean.api.MemberJoinRequestBean bean);
+
+    // 아이디찿기
+    @POST("mapi/membernew/getFindId.plus")
+    Single<FindIDResultBean> getFindId(@Body FindIDRequestBean bean);
+
+    // 비밀번호찿기
+    @POST("mapi/membernew/getPassWord.plus")
+    Single<LifeplusAPIBean> getFindPassword(@Body FindPWRequestBean bean);
+
+    // 회원 로그인
+    @POST("mapi/membernew/setMemberLogin.plus")
+    Single<MemberLoginResultBean> setMemberLogin(@Body MemberLoginRequestBean bean);
+
+    // 회원 로그인
+    @POST("mapi/membernew/dmcyUserCncl.plus")
+    Single<LifeplusAPIBean> dmcyUserCncl(@Body DmcyUserCnclRequestBean bean);
+
+    // 쿠키오븐
+    @GET("mapi/external/link/getCookieOvenData.zumonew")
+    Single<GetCookieOvenResultBean> getCookieOven(@Query("key") String value);
+
+    // 쿠키오븐 포스트백
+    @GET("https://postback-ao.adison.co/api/postbacks/server")
+    Single<LifeplusAPIBean> cookieOvenPostBack(@Query("click_key") String value);
+
+    // 이벤트 로그
+    @POST("/mapi/event/setEvnt.plus")
+    Single<LifeplusAPIBean> setEventLog(@Body HashMap<String, String> value);
 
-  // 카테고리 별 배너 목록, ctgrBannerCtlg
-  @POST("mapi/categorys/banner.plus")
-  Single<CategoryBannerResultBean> getCategoryBanner(@Body CategoryRequestBean bean);
-
-  // 카테고리 별 콘텐츠 목록, 최신 순
-  @POST("mapi/categorys/contents.plus")
-  Single<CategoryContentsResultBean> getCategoryContents(@Body CategoryContentsRequestBean bean);
-
-  // 카테고리 별 콘텐츠 목록, 좋아요 순
-  @POST("mapi/categorys/contentslike.plus")
-  Single<CategoryContentsResultBean> getCategoryContentsOrderByLike(@Body CategoryContentsRequestBean bean);
-
-  // 카테고리 별 콘텐츠 목록, 북마크 순
-  @POST("mapi/categorys/contentsbook.plus")
-  Single<CategoryContentsResultBean> getCategoryContentsOrderByBookmark(@Body CategoryContentsRequestBean bean);
-
-  // 카테고리 별 필터 목록
-  @POST("mapi/categorys/listfilter.plus")
-  Single<CategoryFilterResultBean> getCategoryFilter(@Body CategoryRequestBean bean);
-
-  // 카테고리 별 필터 적용 컨텐츠 목록
-  @POST("mapi/categorys/selfilterlist.plus")
-  Single<CategoryFilterContentsResultBean> getCategoryFilterContents(@Body CategoryFilterContentsRequestBean bean);
-
-  // 카테고리 별 필터 세부 목록
-  @POST("mapi/categorys/getDtlListFilter.plus")
-  Single<CategoryFilterDetailResultBean> getCategoryFilterDetail(@Body CategoryFilterDetailRequestBean bean);
-
-  // 좋아요
-  @POST("mapi/categorys/cntslike.plus")
-  Single<LifeplusAPIBean> setLiked(@Body ContentsLikeRequestBean bean);
-
-  // 북마크
-  @POST("mapi/categorys/cntsbookmark.plus")
-  Single<LifeplusAPIBean> setBookmarked(@Body ContentsBookmarkRequestBean bean);
-
-  // 컨텐츠 상세
-  @GET("/mapi/contents/cntsdtlinfo.plus")
-  Single<ContentsDetailResultBean> getContentsDetail(@QueryMap Map<String, String> params);
-
-  // 위젯 - 추천 데이터
-  @POST("mapi/srch/getRecommendList.plus")
-  Single<WidgetResultBean> getWidgetData(@Body RequestBean bean);
-
-  // 컨텐츠 로그
-  @POST("mapi/contents/inslogapp.plus")
-  Single<ContentsLogResultBean> setContentsLog(@Body ContentsLogRequestBean bean);
-
-
-  /***********************************
-   * Event
-   ***********************************/
-  // 이벤트 전체 목록
-  @POST("mapi/event/evntlist.plus")
-  Single<EventListResultBean> getEventList(@Body RequestBean bean);
-
-  // 이벤트 참여 목록
-  @POST("mapi/event/myevntlist.plus")
-  Single<EventListResultBean> getEventMyList(@Body RequestBean bean);
-
-  // 이벤트 상세
-  @POST("mapi/event/evntdtlinfo.plus")
-  Single<EventDetailResultBean> getEventDetail(@Body ItemNoRequestBean bean);
-
-  // 이벤트 당첨 결과
-  @POST("mapi/event/evntwinlist.plus")
-  Single<EventWinnerResultBean> getEventWinner(@Body ItemNoRequestBean bean);
-
-  // 이벤트 파일 전송
-  @Multipart
-  @POST("mapi/event/answimagupload.plus")
-  Single<EventUploadImageResultBean> uploadImage(@Part("itemNo") RequestBody itemNo, @Part List<MultipartBody.Part> files);
-
-  // 이벤트 약관 전송
-  @POST("mapi/event/updevntjoinagre.plus")
-  Single<LifeplusAPIBean> setEventPolicy(@Body EventPolicyRequestBean bean);
-
-  // 이벤트 응모형 답변 전송
-  @POST("mapi/event/insevntptcpansw.plus")
-  Single<EventAnswerResultBean> setEventAnswer(@Body EventAnswerRequestBean bean);
-
-  // 이벤트 선택형 추천 목록
-  @POST("mapi/event/evntreercnts.plus")
-  Single<EventRecommendResultBean> getEventRecommendContents(@Body EventRecommendRequestBean bean);
-
-  // 이벤트 선택형 추천 태그 목록
-  @POST("mapi/event/evntreertag.plus")
-  Single<EventTagResultBean> getEventRecommendTag(@Body EventTagRequestBean bean);
-
-  // 이벤트 선택형 태그 연관 컨텐츠
-  @POST("mapi/event/evnttagcnts.plus")
-  Single<EventTagRelatedResultBean> getEventTagRelatedContents(@Body EventTagRelatedRequestBean bean);
-
-  // 이벤트 참여 결과
-  @POST("mapi/event/evntrspnresl.plus")
-  Single<EventAnswerRecordResultBean> getEventAnswerRecord(@Body EventAnswerRecordRequestBean bean);
-
-
-  /***********************************
-   * Bookmark
-   ***********************************/
-  // 나의 북마크 목록 조회
-  @POST("mapi/my/bookmarkctlg.plus")
-  Single<BookmarkResultBean> getMyBookmarkList(@Body RequestBean bean);
-
-  // 최근 많이 한 북마크 목록 조회
-  @POST("mapi/my/latsbookmarkctlg.plus")
-  Single<BookmarkResultBean> getBestBookmarkList(@Body RequestBean bean);
-
-  // 북마크 목록 - 북마크 없는 경우, 카테고리 별 최근 많이 한 북마크 목록
-  @POST("mapi/my/catebookmarkctlg.plus")
-  Single<BookmarkListResultBean> getLatestBestBookmarkListAtCategory(@Body CategoryRequestBean bean);
-
-  // 북마크 목록 - 북마크 있는 경우, 카테고리 별 내 북마크 리스트
-  @POST("mapi/my/latestbookmarkctlg.plus")
-  Single<BookmarkListResultBean> getBookmarkListAtCategory(@Body PageRequestBean bean);
-
-  // 북마크 목록 - 많이 한 북마크 리스트
-  @Deprecated
-  @POST("mapi/my/bestbookmarkctlg.plus")
-  Single<BookmarkListResultBean> getBestBookmarkList(@Body PageRequestBean bean);
-
-  /***********************************
-   * 버킷 리스트
-   ***********************************/
-  // 베스트 버킷 리스트 조회
-  @POST("mapi/my/bestbucket.plus")
-  Single<BucketBestListResultBean> getBestBucketList(@Body RequestBean bean);
-
-  // 버킷 리스트 목록 조회
-  @POST("mapi/my/bucketctlg.plus")
-  Single<BucketListResultBean> getBucketList(@Body BucketListRequestBean bean);
-
-  // 나의 버킷 리스트 목록 조회
-  @POST("mapi/my/buckets.plus")
-  Single<BucketMyListResultBean> getMyBucketList(@Body RequestBean bean);
-
-  // 나의 버킷 리스트 연관 태그 목록 조회
-  @POST("mapi/my/bucketlatstag.plus")
-  Single<BucketListTagResultBean> getMyBucketTagList(@Body TitleRequestBean bean);
-
-  // 나의 태그 컨텐츠 목록 조회
-  @POST("mapi/my/bucketdtl.plus")
-  Single<TagRelatedContentsResultBean> getTagRelatedContentsList(@Body TagRelatedContentsRequestBean bean);
-
-  // 버킷 리스트 배경 이미지 목록 조회
-  @Deprecated
-  @POST("mapi/my/bucketImag.plus")
-  Single<BucketBackgroundListResultBean> getMyBucketBackgroundList(@Body RequestBean bean);
-
-  // 버킷 리스트 등록
-  @POST("mapi/my/insbucket.plus")
-  Single<BucketRegisterResultBean> registerMyBucket(@Body BucketRegisterRequestBean bean);
-
-  // 버킷 리스트 수정
-  @POST("mapi/my/updbucket.plus")
-  Single<BucketRegisterResultBean> updateMyBucket(@Body BucketUpdateRequestBean bean);
-
-  // 버킷 리스트 달성
-  @POST("mapi/my/arhvbucket.plus")
-  Single<LifeplusAPIBean> finishMyBucket(@Body BucketCompleteRequestBean bean);
-
-  // 버킷 리스트 삭제
-  @POST("mapi/my/delbucket.plus")
-  Single<LifeplusAPIBean> deleteMyBucket(@Body BucketNumberRequestBean bean);
-
-  /***********************************
-   * 회원
-   ***********************************/
-  @POST("mapi/members/delmember.plus")
-  Single<LifeplusAPIBean> deleteMember(@Body UserNameRequestBean bean);
-
-  @POST("mapi/members/chkmember.plus")
-  Single<LoginResultBean> selectMember(@Body RequestBean bean);
-
-  @POST("mapi/categorys/mysimplelikebook.plus")
-  Single<ContentsFlagResultBean> getContentsFlagList(@Body RequestBean bean);
-
-  @POST("/mapi/my/updusername.plus")
-  Single<LifeplusAPIBean> updateUserName(@Body UserNameRequestBean bean);
-
-  @POST("/mapi/my/upduserpswd.plus")
-  Single<PasswordUpdateResultBean> updateUserPassword(@Body UserNamePasswordRequestBean bean);
-
-  @POST("/mapi/my/logout.plus")
-  Single<LifeplusAPIBean> logout(@Body UserNameRequestBean bean);
-
-  /***********************************
-   * 문의
-   ***********************************/
-  // 나의 문의 목록
-  @POST("mapi/faqs/myqalists.plus")
-  Single<QuestionResultBean> getQuestionList(@Body RequestBean bean);
-
-  // 문의 등록 하기
-  @POST("mapi/faqs/setmyqa.plus")
-  Single<LifeplusAPIBean> registerQuestion(@Body QuestionRequestBean bean);
-
-
-  /***********************************
-   * Setting
-   **********************************/
-  // member info
-  // -> 선택 약관 리스트가 포함되어있음.
-  @POST("mapi/members/memrsetinfo.plus")
-  Single<SettingMemberResultBean> getMemberInfo(@Body RequestBean bean);
-
-  // 사용자 약관 리스트
-  // 필수/선택 전체 약관 리스트 (memberinfo 의 선택 약관 표함)
-  @POST("mapi/members/stplctlg.plus")
-  Single<PolicyListResultBean> getMemberPolicyList(@Body RequestBean bean);
-
-  // 사용자 약관 상세
-  @POST("mapi/members/stpldtl.plus")
-  Single<PolicyResultBean> getPolicyDetail(@Body PolicyNoRequestBean bean);
-
-  // 사용자 선택 약관 동의 여부
-  @POST("mapi/members/updinfoagre.plus")
-  Single<LifeplusAPIBean> setMemberPolicyAgree(@Body MemberPolicyRequestBean bean);
-
-  // 사용자 스폐셜코드/추천인코드 등록
-  @POST("mapi/members/updsprecd.plus")
-  Single<MemberCodeResultBean> setMemberCode(@Body MemberCodeRequestBean bean);
-
-  // 사용자 Lifeplus 마케팅 정보 email/sms 수신동의
-  @POST("mapi/members/updmkagre.plus")
-  Single<LifeplusAPIBean> setMemberMarketingAgree(@Body MemberMarketingAgreeRequestBean bean);
-
-  // 사용자 PUSH 알림 / 푸시 마케팅 / 위치설정
-  @POST("mapi/members/updpushagre.plus")
-  Single<LifeplusAPIBean> setMemberPushAgree(@Body MemberPushAgreeRequestBean bean);
-
-  /***********************************
-   * 검색
-   ***********************************/
-  // 자동 완성
-  @POST("mapi/srch/autoComplete.plus")
-  Single<SearchAutoCompletionResultBean> getAutoCompletion(@Body KeywordRequestBean bean);
-
-  // 검색
-  @POST("mapi/srch/srch.plus")
-  Single<SearchResultBean> search(@Body SearchRequestBean bean);
-
-  // 인기 태그
-  @POST("mapi/srch/getTopKeyword.plus")
-  Single<SearchPopularTagResultBean> getPopularTag(@Body RequestBean bean);
-
-  // 전체 필터
-  @POST("mapi/srch/getFilter.plus")
-  Single<SearchFilterResultBean> getSearchFilter(@Body RequestBean bean);
-
-  // 필터 세부
-  @POST("mapi/srch/getDtlFilter.plus")
-  Single<SearchFilterDetailResultBean> getSearchFilterDetail(@Body FilterDetailRequestBean bean);
-
-  /***********************************
-   * 공지
-   ***********************************/
-  @POST("mapi/srch/getNoticeList.plus")
-  Single<NoticeResultBean> getNotice(@Body RequestBean bean);
-
-
-  /***********************************
-   * ZUMO API
-   ***********************************/
-  // 사용자정보조회
-  @POST("mapi/membernew/getMemberInfoByUserNo.plus")
-  Single<MemberInfoResultBean> getMemberInfoByUserNo(@Body MemberInfoByUserNoRequestBean bean);
-
-  // 회원가입가능 이메일,소셜 여부체크
-  @POST("mapi/membernew/isEmailSocialValidCheck.plus")
-  Single<IsEmailSocialValidCheckResultBean> isEmailSocialValidCheck(@Body IsEmailSocialValidCheckRequestBean bean);
-
-  // 회원가입
-  @POST("mapi/membernew/setMemberJoin.plus")
-  Single<kr.co.zumo.app.lifeplus.zumo.bean.api.MemberJoinResultBean> setMemberJoin(@Body kr.co.zumo.app.lifeplus.zumo.bean.api.MemberJoinRequestBean bean);
-
-  // 아이디찿기
-  @POST("mapi/membernew/getFindId.plus")
-  Single<FindIDResultBean> getFindId(@Body FindIDRequestBean bean);
-
-  // 비밀번호찿기
-  @POST("mapi/membernew/getPassWord.plus")
-  Single<LifeplusAPIBean> getFindPassword(@Body FindPWRequestBean bean);
-
-  // 회원 로그인
-  @POST("mapi/membernew/setMemberLogin.plus")
-  Single<MemberLoginResultBean> setMemberLogin(@Body MemberLoginRequestBean bean);
-
-  // 회원 로그인
-  @POST("mapi/membernew/dmcyUserCncl.plus")
-  Single<LifeplusAPIBean> dmcyUserCncl(@Body DmcyUserCnclRequestBean bean);
-
-  // 쿠키오븐
-  @GET("mapi/external/link/getCookieOvenData.zumonew")
-  Single<GetCookieOvenResultBean> getCookieOven(@Query("key") String value);
-
-  // 쿠키오븐 포스트백
-  @GET("https://postback-ao.adison.co/api/postbacks/server")
-  Single<LifeplusAPIBean> cookieOvenPostBack(@Query("click_key") String value);
-
-  // 이벤트 로그
-  @POST("mapi/WebInterface/setEvnt.zumonew")
-  Single<LifeplusAPIBean> setEventLog(@FieldMap HashMap<String, String> value);
 }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenter.java

@@ -298,7 +298,7 @@ public class ContentsPresenter extends ContentsBasePresenter<ContentsModel, ICon
         break;
       case Event.GET_EVENT_LOG:
         if(event.getInteger() == Event.SUCCESS) {
-          showToast(R.string.event_complete_title);
+          showErrorDialog(R.string.event_complete_title, () -> finish());
         } else {
           showErrorDialog(event.getString());
         }

+ 70 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/web/WebFromContentsFragment.java

@@ -6,12 +6,14 @@ package kr.co.zumo.app.lifeplus.view.screen.web;
 import android.annotation.SuppressLint;
 import android.net.http.SslError;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.webkit.JavascriptInterface;
 import android.webkit.SslErrorHandler;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
@@ -19,12 +21,26 @@ import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.ImageView;
 
+import com.google.gson.Gson;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.HtmlBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
+import kr.co.zumo.app.lifeplus.model.module.APIError;
+import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.WebConstant;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
+import kr.co.zumo.app.lifeplus.zumo.bean.api.GetEventLogRequestBean;
+import kr.co.zumo.app.lifeplus.zumo.model.module.APIGetEventLogModule;
 
 /**
  * WebFromContentsFragment
@@ -177,4 +193,58 @@ public class WebFromContentsFragment extends FragmentBase<WebFromContentsPresent
   public void setVisibleShare(boolean isVisible) {
     shareView.setVisibility(isVisible ? View.VISIBLE : View.GONE);
   }
+
+  @JavascriptInterface
+  public void sendMessage(String json) {
+    try {
+      HtmlBean bean = new Gson().fromJson(json, HtmlBean.class);
+      if (null != bean) {
+        presenter.onEvent(new Event.Builder(Event.CLICK_HTML).json(json).build());
+      }
+    } catch (Exception e) {
+      //e.printStackTrace();
+      Log.e("APP#  ListicleHtmlViewHolder | sendMessage", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
+    }
+  }
+
+  @JavascriptInterface
+  public void partiEvent(final String url) {
+    Log.d(getClass().getSimpleName(), "@JavascriptInterface: partiEvent(" + url + ")");
+    new Handler().post(new Runnable() {
+      public void run() {
+        try {
+          final HashMap<String, String> mapData = new HashMap<>();
+          JSONObject jsonObject = new JSONObject(url);
+          Iterator<String> iterator = jsonObject.keys();
+          while (iterator.hasNext()) {
+            String key = iterator.next();
+            String value = jsonObject.getString(key);
+            mapData.put(key, value);
+          }
+
+          if (mapData.containsKey("evntmt_no")) {
+            GetEventLogRequestBean requestBean = new GetEventLogRequestBean();
+            requestBean.setMap(mapData);
+            new APIGetEventLogModule().call(requestBean, new APIModuleListener<LifeplusAPIBean>() {
+              @Override
+              public void onApiSuccess(LifeplusAPIBean resultBean) {
+                if(resultBean.isSuccess()) {
+                  presenter.onEvent(new Event.Builder(Event.GET_EVENT_LOG).integer(Event.SUCCESS).build());
+                } else {
+                  presenter.onEvent(new Event.Builder(Event.GET_EVENT_LOG).integer(Event.FAIL).string(resultBean.getReturnMessage()).build());
+                }
+              }
+
+              @Override
+              public void onApiError(String errorMessage, APIError error) {
+                presenter.onEvent(new Event.Builder(Event.GET_EVENT_LOG).integer(Event.FAIL).string(errorMessage).build());
+              }
+            });
+          }
+        } catch (JSONException e) {
+          Log.e(getClass().getSimpleName(), "partiEvent");
+        }
+      }
+    });
+  }
 }

+ 230 - 200
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/web/WebFromContentsPresenter.java

@@ -5,7 +5,9 @@ package kr.co.zumo.app.lifeplus.view.screen.web;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.ContentsWebDeliveryBean;
+import kr.co.zumo.app.lifeplus.bean.HtmlBean;
 import kr.co.zumo.app.lifeplus.helper.FacebookHelper;
+import kr.co.zumo.app.lifeplus.helper.GoogleAnalyticsHelper;
 import kr.co.zumo.app.lifeplus.helper.NavigationBar;
 import kr.co.zumo.app.lifeplus.share.IShareListener;
 import kr.co.zumo.app.lifeplus.share.Share;
@@ -13,11 +15,13 @@ import kr.co.zumo.app.lifeplus.share.ShareClipBoard;
 import kr.co.zumo.app.lifeplus.share.ShareEmail;
 import kr.co.zumo.app.lifeplus.share.ShareFacebook;
 import kr.co.zumo.app.lifeplus.share.ShareKakaoTalk;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.ToastProvider;
 import kr.co.zumo.app.lifeplus.view.command.EmailSendingCommand;
+import kr.co.zumo.app.lifeplus.view.command.WebCommand;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
 import kr.co.zumo.app.lifeplus.view.dialog.ICustomDialogListener;
@@ -36,230 +40,256 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  */
 public class WebFromContentsPresenter extends Presenter<WebFromContentsModel, IWebFromContentsView> {
 
-  protected Share share;
+    protected Share share;
 
-  public WebFromContentsPresenter(WebFromContentsModel model, IWebFromContentsView view) {
-    super(model, view);
-    ContentsWebDeliveryBean targetUrl = model.getDeliveryPackaging(ContentsWebDeliveryBean.class);
-    if(model != null && targetUrl != null) {
-      model.setUrl(targetUrl.getWebUrl());
-      model.setSharePageIndex(targetUrl.getPageIndex());
-      model.setShareContents(targetUrl.getContentsItemBean());
+    public WebFromContentsPresenter(WebFromContentsModel model, IWebFromContentsView view) {
+        super(model, view);
+        ContentsWebDeliveryBean targetUrl = model.getDeliveryPackaging(ContentsWebDeliveryBean.class);
+        if (model != null && targetUrl != null) {
+            model.setUrl(targetUrl.getWebUrl());
+            model.setSharePageIndex(targetUrl.getPageIndex());
+            model.setShareContents(targetUrl.getContentsItemBean());
+        }
     }
-  }
-
-  @Override
-  protected void createViewInternal() {
-
-  }
-
-  @Override
-  protected void destroyInternal() {
-    hideWaiter();
-  }
-
-  @Override
-  protected void destroyViewInternal() {
-  }
 
-  @Override
-  protected void startInternal() {
+    @Override
+    protected void createViewInternal() {
 
-  }
-
-  @Override
-  protected void startInternalOnce() {
-
-  }
+    }
 
-  @Override
-  protected void stopInternal() {
+    @Override
+    protected void destroyInternal() {
+        hideWaiter();
+    }
 
-  }
+    @Override
+    protected void destroyViewInternal() {
+    }
 
-  @Override
-  protected void resumeInternal() {
-  }
+    @Override
+    protected void startInternal() {
 
-  @Override
-  protected void pauseInternal() {
+    }
 
-  }
+    @Override
+    protected void startInternalOnce() {
 
-  @Override
-  protected void onEventInternal(Event event) {
-    switch (event.getEventId()) {
-      case Event.PREV:
-        view.onClickPrev();
-        break;
-      case Event.NEXT:
-        view.onClickNext();
-        break;
-      case Event.REFRESH:
-        view.onClickRefresh();
-        break;
-      case Event.SHARE:
-        showShareDialog();
-        break;
-      case Event.COMPLETED:
-        hideWaiter();
-        break;
-      default:
-        break;
     }
 
-  }
+    @Override
+    protected void stopInternal() {
 
-  @Override
-  public void onScreenReady() {
+    }
 
-    showWaiter(0);
+    @Override
+    protected void resumeInternal() {
+    }
 
-    view.loadUrl(model.getUrl());
+    @Override
+    protected void pauseInternal() {
 
-    if (null == model.getShareContents()) {
-      view.setVisibleShare(false);
     }
-  }
-
-  @Override
-  public void onResult(Event event) {
-  }
-
-  /**
-   * 닫기 클릭
-   *
-   * @param navigationBar
-   */
-
-
-  public void onNavigationClickClose(NavigationBar navigationBar) {
-    onBackPressed();
-  }
-
-  private void showShareDialog() {
-    String url = model.getUrl();
-    if (StringUtil.isFull(url)) {
-      //추천 팝업 띄우기
-      new DialogBuilder<ShareDialog, ICustomDialogListener>(getFragmentManager(), DialogID.SHARE)
-        .listener(new ICustomDialogListener<ShareDialog>() {
-          @Override
-          public void onDialogResult(ShareDialog dialog, Event event) {
-            dialog.dispose();
-
-            switch (event.getEventId()) {
-              case Event.CLOSE:
+
+    @Override
+    protected void onEventInternal(Event event) {
+        switch (event.getEventId()) {
+            case Event.PREV:
+                view.onClickPrev();
                 break;
-              case Event.KAKAO_TALK:
-                sendKakaoLink();
+            case Event.NEXT:
+                view.onClickNext();
                 break;
-              case Event.FACE_BOOK:
-                sendFaceBook();
+            case Event.REFRESH:
+                view.onClickRefresh();
                 break;
-              case Event.CODE_COPY:
-                sendClipBoardCopy();
+            case Event.SHARE:
+                showShareDialog();
                 break;
-              case Event.EMAIL_CLICK:
-                sendEmail();
+            case Event.COMPLETED:
+                hideWaiter();
                 break;
-              default:
+            case Event.CLICK_HTML:
+                // html 의 자바스크립트를 통해서 전달된 데이터
+                HtmlBean htmlBean = event.fromJson(HtmlBean.class);
+
+                if (htmlBean != null) {
+                    googleAnalyticsHelper.sendGA(GoogleAnalyticsHelper.Category.CONTENTS_DETAIL_HTML, htmlBean.getKey(), htmlBean.getUrl());
+                }
+
+                if (htmlBean.getType() == HtmlBean.TYPE_APP) {
+                    shipToWeb(htmlBean.getUrl(), ScreenID.WEB_FROM_CONTENTS);
+                    go(ScreenID.WEB_FROM_CONTENTS);
+                } else if (htmlBean.getType() == HtmlBean.TYPE_LINK) {
+                    onCommand(new WebCommand(htmlBean.getUrl()));
+                }
                 break;
-            }
-          }
-
-          @Override
-          public void onDialogCanceled(ShareDialog dialog) {
-            dialog.dispose();
-          }
-        })
-        .attribute(dialog -> {
-          dialog.setDialogType(ShareDialog.TYPE_PAGE_CURRENT);
-        })
-        .show();
+            case Event.GET_EVENT_LOG:
+                if (event.getInteger() == Event.SUCCESS) {
+                    showErrorDialog(R.string.event_complete_title, () -> finish());
+                } else {
+                    showErrorDialog(event.getString());
+                }
+                break;
+            default:
+                break;
+        }
+
     }
-  }
-
-  protected void sendKakaoLink() {
-    share = new ShareKakaoTalk(view.getActivity());
-    share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
-      @Override
-      public void onSuccess(String result) {
-      }
-
-      @Override
-      public void onFailure(int errorCode, String result) {
-        if (ShareKakaoTalk.CLIENT_ERROR_CODE == errorCode) {
-          showErrorDialog(ResourceUtil.getString(R.string.please_install_kakaotalk));
+
+    @Override
+    public void onScreenReady() {
+
+        showWaiter(0);
+
+        view.loadUrl(model.getUrl());
+
+        if (null == model.getShareContents()) {
+            view.setVisibleShare(false);
         }
-        else {
-          showErrorDialog(result);
+    }
+
+    @Override
+    public void onResult(Event event) {
+    }
+
+    /**
+     * 닫기 클릭
+     *
+     * @param navigationBar
+     */
+
+
+    public void onNavigationClickClose(NavigationBar navigationBar) {
+        onBackPressed();
+    }
+
+    private void showShareDialog() {
+        String url = model.getUrl();
+        if (StringUtil.isFull(url)) {
+            //추천 팝업 띄우기
+            new DialogBuilder<ShareDialog, ICustomDialogListener>(getFragmentManager(), DialogID.SHARE)
+                    .listener(new ICustomDialogListener<ShareDialog>() {
+                        @Override
+                        public void onDialogResult(ShareDialog dialog, Event event) {
+                            dialog.dispose();
+
+                            switch (event.getEventId()) {
+                                case Event.CLOSE:
+                                    break;
+                                case Event.KAKAO_TALK:
+                                    sendKakaoLink();
+                                    break;
+                                case Event.FACE_BOOK:
+                                    sendFaceBook();
+                                    break;
+                                case Event.CODE_COPY:
+                                    sendClipBoardCopy();
+                                    break;
+                                case Event.EMAIL_CLICK:
+                                    sendEmail();
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }
+
+                        @Override
+                        public void onDialogCanceled(ShareDialog dialog) {
+                            dialog.dispose();
+                        }
+                    })
+                    .attribute(dialog -> {
+                        dialog.setDialogType(ShareDialog.TYPE_PAGE_CURRENT);
+                    })
+                    .show();
         }
-      }
-    });
-  }
-
-  protected void sendFaceBook() {
-    share = new ShareFacebook(view.getActivity(), getHelper(FacebookHelper.class).getCallbackManager());
-    share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
-      @Override
-      public void onSuccess(String result) {
-        showShareToast(ResourceUtil.getString(R.string.share_completed_message));
-      }
-
-      @Override
-      public void onCancel() {
-      }
-
-      @Override
-      public void onFailure(int errorCode, String result) {
-        showErrorDialog(result);
-      }
-
-
-    });
-
-
-  }
-
-  protected void sendClipBoardCopy() {
-    share = new ShareClipBoard(view.getActivity());
-    share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
-      @Override
-      public void onSuccess(String result) {
-        resumeInternal();
-
-        showShareToast(ResourceUtil.getString(R.string.url_copy_message));
-      }
-
-      @Override
-      public void onFailure(int errorCode, String result) {
-        showErrorDialog(ResourceUtil.getString(R.string.share_error_message));
-      }
-    });
-  }
-
-
-  protected void sendEmail() {
-
-    share = new ShareEmail(view.getActivity());
-    share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
-      @Override
-      public void onSuccess(String result) {
-        String subject;
-        subject = ResourceUtil.getString(R.string.lifeplus_app);
-        String url = result;
-        String contents = ResourceUtil.getString(R.string.share_current_page_contents, subject, url);
-        onCommand(new EmailSendingCommand("", subject, contents));
-      }
-
-      @Override
-      public void onFailure(int errorCode, String result) {
-        //
-      }
-    });
-  }
-
-  protected void showShareToast(String detail) {
-    ToastProvider.of(view.getActivity()).showSimple(detail);
-  }
+    }
+
+    protected void sendKakaoLink() {
+        share = new ShareKakaoTalk(view.getActivity());
+        share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
+            @Override
+            public void onSuccess(String result) {
+            }
+
+            @Override
+            public void onFailure(int errorCode, String result) {
+                if (ShareKakaoTalk.CLIENT_ERROR_CODE == errorCode) {
+                    showErrorDialog(ResourceUtil.getString(R.string.please_install_kakaotalk));
+                } else {
+                    showErrorDialog(result);
+                }
+            }
+        });
+    }
+
+    protected void sendFaceBook() {
+        share = new ShareFacebook(view.getActivity(), getHelper(FacebookHelper.class).getCallbackManager());
+        share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
+            @Override
+            public void onSuccess(String result) {
+                showShareToast(ResourceUtil.getString(R.string.share_completed_message));
+            }
+
+            @Override
+            public void onCancel() {
+            }
+
+            @Override
+            public void onFailure(int errorCode, String result) {
+                showErrorDialog(result);
+            }
+
+
+        });
+
+
+    }
+
+    protected void sendClipBoardCopy() {
+        share = new ShareClipBoard(view.getActivity());
+        share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
+            @Override
+            public void onSuccess(String result) {
+                resumeInternal();
+
+                showShareToast(ResourceUtil.getString(R.string.url_copy_message));
+            }
+
+            @Override
+            public void onFailure(int errorCode, String result) {
+                showErrorDialog(ResourceUtil.getString(R.string.share_error_message));
+            }
+        });
+    }
+
+
+    protected void sendEmail() {
+
+        share = new ShareEmail(view.getActivity());
+        share.shareUrl(model.getShareContents(), model.getUrl(), model.getSharePageIndex(), new IShareListener() {
+            @Override
+            public void onSuccess(String result) {
+                String subject;
+                subject = ResourceUtil.getString(R.string.lifeplus_app);
+                String url = result;
+                String contents = ResourceUtil.getString(R.string.share_current_page_contents, subject, url);
+                onCommand(new EmailSendingCommand("", subject, contents));
+            }
+
+            @Override
+            public void onFailure(int errorCode, String result) {
+                //
+            }
+        });
+    }
+
+    protected void showShareToast(String detail) {
+        ToastProvider.of(view.getActivity()).showSimple(detail);
+    }
+
+    private void shipToWeb(String webUrl, int screenId) {
+        ContentsWebDeliveryBean contentsWebDeliveryBean = new ContentsWebDeliveryBean(model.getShareContents(), model.getSharePageIndex(), webUrl, screenId);
+        model.setDeliveryPackaging(contentsWebDeliveryBean);
+    }
 }

+ 22 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/zumo/bean/api/GetEventLogRequestBean.java

@@ -0,0 +1,22 @@
+package kr.co.zumo.app.lifeplus.zumo.bean.api;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.util.HashMap;
+
+import kr.co.zumo.app.lifeplus.bean.api.ZumoRequestBean;
+
+public class GetEventLogRequestBean extends ZumoRequestBean {
+
+    @SerializedName("map")
+    private HashMap<String, String> map;
+
+    public HashMap<String, String> getMap() {
+        map.put("user_no", getUserNo());
+        return map;
+    }
+
+    public void setMap(HashMap<String, String> map) {
+        this.map = map;
+    }
+}

+ 15 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/zumo/model/module/APIGetEventLogModule.java

@@ -0,0 +1,15 @@
+package kr.co.zumo.app.lifeplus.zumo.model.module;
+
+import io.reactivex.Single;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
+import kr.co.zumo.app.lifeplus.model.module.ZumoAPIModule;
+import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIRepository;
+import kr.co.zumo.app.lifeplus.zumo.bean.api.GetEventLogRequestBean;
+
+public class APIGetEventLogModule extends ZumoAPIModule<GetEventLogRequestBean, LifeplusAPIBean> {
+
+    @Override
+    protected Single<LifeplusAPIBean> getAPI(GetEventLogRequestBean requestBean) {
+        return new LifeplusAPIRepository().setEventLog(requestBean.getMap()).map(lifePlusApiBean -> lifePlusApiBean);
+    }
+}