From 3e1ab090aa0efd32d8b47403c19579198e39841d Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 27 Dec 2023 17:14:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=9F=8B=E7=82=B9=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nnbc123/app/game_room/GameRoomActivity.kt | 34 +++++++++- .../app/game_room/GameRoomViewModel.kt | 8 +-- .../com/nnbc123/app/home/FriendsViewModel.kt | 10 +-- .../nnbc123/app/home/HomeChildViewModel.kt | 45 ------------- .../com/nnbc123/app/home/PartyViewModel.kt | 10 +-- .../nnbc123/app/home/fragment/MeFragment.kt | 9 ++- .../nnbc123/app/home/fragment/MsgFragment.kt | 9 +++ .../app/home/fragment/home/HomeFragment.kt | 32 ++++++++- .../fragment/home/friends/FriendsFragment.kt | 39 ++++++++--- .../home/friends/FriendsListFragment.kt | 9 ++- .../home/fragment/home/party/PartyFragment.kt | 67 ++++++++++++++----- .../home/party/PartyHotRoomFragment.kt | 2 +- .../nnbc123/app/ui/widget/MainTabLayout.java | 8 +-- .../app/community/square/SquareFragment.java | 8 +++ .../com/nnbc123/core/home/model/HomeModel.kt | 1 + .../nnbc123/core/bean/response/BeanResult.kt | 31 ++++++++- .../core/statistic/StatisticManager.java | 6 ++ .../protocol/StatisticsProtocol.java | 16 ++++- 18 files changed, 233 insertions(+), 111 deletions(-) delete mode 100644 app/src/main/java/com/nnbc123/app/home/HomeChildViewModel.kt diff --git a/app/src/main/java/com/nnbc123/app/game_room/GameRoomActivity.kt b/app/src/main/java/com/nnbc123/app/game_room/GameRoomActivity.kt index 6474df288..c640f12b6 100644 --- a/app/src/main/java/com/nnbc123/app/game_room/GameRoomActivity.kt +++ b/app/src/main/java/com/nnbc123/app/game_room/GameRoomActivity.kt @@ -5,16 +5,23 @@ import android.content.Intent import androidx.core.view.isVisible import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.gyf.immersionbar.BarHide import com.gyf.immersionbar.ImmersionBar import com.nnbc123.app.R import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.base.BaseBindingActivity import com.nnbc123.app.common.EmptyViewHelper +import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener import com.nnbc123.app.databinding.ActivityMoreRoomBinding import com.nnbc123.app.home.dialog.RecommendRoomDialog import com.nnbc123.app.ui.utils.RVDelegate +import com.nnbc123.app.ui.webview.CommonWebViewActivity +import com.nnbc123.core.UriProvider +import com.nnbc123.core.bean.response.observeResult import com.nnbc123.core.home.bean.HomeRoomInfo +import com.nnbc123.core.pay.PayModel.NOT_REAL_NAME_BEFORE_CHARGING +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol +import com.nnbc123.core.utils.net.ServerException import com.nnbc123.library.annatation.ActLayoutRes /** @@ -61,7 +68,7 @@ class GameRoomActivity : BaseBindingActivity() { } private fun initObserve() { - viewModel.jumpLiveData.observe(this) { + viewModel.jumpLiveData.observeResult(this, success = { dialogManager.dismissDialog() it?.let { if (it.isPick) { @@ -70,7 +77,24 @@ class GameRoomActivity : BaseBindingActivity() { RecommendRoomDialog.newInstance(it).show(context) } } - } + }, failed = { + dialogManager.dismissDialog() + if ((it as? ServerException)?.code == NOT_REAL_NAME_BEFORE_CHARGING) { + dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification), + getString(R.string.go_to_certification), + object : AbsOkDialogListener() { + override fun onOk() { + // 跳去实名认证页面 + CommonWebViewActivity.start( + this@GameRoomActivity.context, + UriProvider.getTutuRealNamePage() + ) + } + }) + } else { + toast(it.message) + } + }) viewModel.gameTabLiveData.observe(this) { gameTabAdapter.setNewData(it) mBinding.rvTop.isVisible = !it.isNullOrEmpty() @@ -83,6 +107,10 @@ class GameRoomActivity : BaseBindingActivity() { private fun initEvent() { gameTabAdapter.setOnItemClickListener { adapter, view, position -> gameTabAdapter.getItem(position)?.let { + StatisticManager.Instance().onEvent( + StatisticsProtocol.EVENT_HOMEPAGE_MORE_GAME_TAB_CLICK, + it.name + ) dialogManager.showProgressDialog(this) val type = if (it.isFriendsType == true) { 2 diff --git a/app/src/main/java/com/nnbc123/app/game_room/GameRoomViewModel.kt b/app/src/main/java/com/nnbc123/app/game_room/GameRoomViewModel.kt index 070f3cf9a..025dc7bc6 100644 --- a/app/src/main/java/com/nnbc123/app/game_room/GameRoomViewModel.kt +++ b/app/src/main/java/com/nnbc123/app/game_room/GameRoomViewModel.kt @@ -2,6 +2,7 @@ package com.nnbc123.app.game_room import androidx.lifecycle.MutableLiveData import com.nnbc123.app.base.BaseViewModel +import com.nnbc123.core.bean.response.BeanResult import com.nnbc123.core.bean.response.ListResult import com.nnbc123.core.home.bean.HomeGameBean import com.nnbc123.core.home.bean.HomeRoomInfo @@ -13,7 +14,7 @@ class GameRoomViewModel : BaseViewModel() { val gameTabLiveData = MutableLiveData>() val roomListLiveData = MutableLiveData>() - val jumpLiveData = MutableLiveData() + val jumpLiveData = MutableLiveData?>() fun getData() { safeLaunch( @@ -39,11 +40,10 @@ class GameRoomViewModel : BaseViewModel() { fun getJumpInfo(id: Long, type: Int) { safeLaunch( onError = { - jumpLiveData.value = null - it.message.toast() + jumpLiveData.value = BeanResult.failed(it) }, block = { - jumpLiveData.value = HomeModel.getResourceJumpInfo(id, type) + jumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, type)) } ) } diff --git a/app/src/main/java/com/nnbc123/app/home/FriendsViewModel.kt b/app/src/main/java/com/nnbc123/app/home/FriendsViewModel.kt index 9d4995e91..f05f5e80d 100644 --- a/app/src/main/java/com/nnbc123/app/home/FriendsViewModel.kt +++ b/app/src/main/java/com/nnbc123/app/home/FriendsViewModel.kt @@ -3,6 +3,7 @@ package com.nnbc123.app.home import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.nnbc123.app.base.BaseViewModel +import com.nnbc123.core.bean.response.BeanResult import com.nnbc123.core.bean.response.ListResult import com.nnbc123.core.home.bean.HomeGameTab import com.nnbc123.core.home.bean.HomeRoomInfo @@ -16,8 +17,8 @@ import com.nnbc123.core.utils.toast **/ class FriendsViewModel: BaseViewModel() { - private val _resourceJumpLiveData = MutableLiveData() - val resourceJumpLiveData: LiveData = _resourceJumpLiveData + private val _resourceJumpLiveData = MutableLiveData?>() + val resourceJumpLiveData: LiveData?> = _resourceJumpLiveData private val _homeChatPickLiveData = MutableLiveData() val homeChatPickLiveData: LiveData = _homeChatPickLiveData @@ -32,11 +33,10 @@ class FriendsViewModel: BaseViewModel() { fun getResourceJumpInfo(id: Long) { safeLaunch( onError = { - _resourceJumpLiveData.value = null - it.message.toast() + _resourceJumpLiveData.value = BeanResult.failed(it) }, block = { - _resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0) + _resourceJumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, 0)) } ) } diff --git a/app/src/main/java/com/nnbc123/app/home/HomeChildViewModel.kt b/app/src/main/java/com/nnbc123/app/home/HomeChildViewModel.kt deleted file mode 100644 index d22778205..000000000 --- a/app/src/main/java/com/nnbc123/app/home/HomeChildViewModel.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.nnbc123.app.home - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import com.nnbc123.app.base.BaseViewModel -import com.nnbc123.core.home.bean.HomeRoomInfo -import com.nnbc123.core.home.model.HomeModel -import com.nnbc123.core.utils.toast - -/** - * Created by Max on 2023/12/27 10:18 - * Desc: - **/ -class HomeChildViewModel: BaseViewModel() { - - private val _resourceJumpLiveData = MutableLiveData() - val resourceJumpLiveData: LiveData = _resourceJumpLiveData - - private val _homeChatPickLiveData = MutableLiveData() - val homeChatPickLiveData: LiveData = _homeChatPickLiveData - - fun getResourceJumpInfo(id: Long) { - safeLaunch( - onError = { - _resourceJumpLiveData.value = null - it.message.toast() - }, - block = { - _resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0) - } - ) - } - - fun getHomeChatPick() { - safeLaunch( - onError = { - _homeChatPickLiveData.value = null - it.message.toast() - }, - block = { - _homeChatPickLiveData.value = HomeModel.getHomeChatPick() - } - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/PartyViewModel.kt b/app/src/main/java/com/nnbc123/app/home/PartyViewModel.kt index ff794058f..9bcf0a4e8 100644 --- a/app/src/main/java/com/nnbc123/app/home/PartyViewModel.kt +++ b/app/src/main/java/com/nnbc123/app/home/PartyViewModel.kt @@ -3,6 +3,7 @@ package com.nnbc123.app.home import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.nnbc123.app.base.BaseViewModel +import com.nnbc123.core.bean.response.BeanResult import com.nnbc123.core.bean.response.ListResult import com.nnbc123.core.home.bean.BannerInfo import com.nnbc123.core.home.bean.GiftServiceMsgVo @@ -21,17 +22,16 @@ class PartyViewModel : BaseViewModel() { private val _bannerLiveData = MutableLiveData>() val bannerLiveData: LiveData> = _bannerLiveData - private val _resourceJumpLiveData = MutableLiveData() - val resourceJumpLiveData: LiveData = _resourceJumpLiveData + private val _resourceJumpLiveData = MutableLiveData?>() + val resourceJumpLiveData: LiveData?> = _resourceJumpLiveData fun getResourceJumpInfo(id: Long) { safeLaunch( onError = { - _resourceJumpLiveData.value = null - it.message.toast() + _resourceJumpLiveData.value = BeanResult.failed(it) }, block = { - _resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0) + _resourceJumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, 0)) } ) } diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt index 477525867..4f9862024 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt @@ -2,7 +2,6 @@ package com.nnbc123.app.home.fragment import android.annotation.SuppressLint import android.content.Intent -import android.text.TextUtils import android.util.SparseArray import android.view.View import android.view.ViewGroup @@ -39,7 +38,6 @@ import com.nnbc123.app.ui.patriarch.PatriarchModeActivity import com.nnbc123.app.ui.pay.ChargeActivity import com.nnbc123.app.ui.relation.AttentionListActivity import com.nnbc123.app.ui.relation.FansListActivity -import com.nnbc123.app.ui.utils.ImageLoadUtils import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.widget.OnPageSelectedListener import com.nnbc123.app.utils.UserUtils @@ -57,12 +55,10 @@ import com.nnbc123.core.room.bean.RoomInfo import com.nnbc123.core.statistic.StatisticManager import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.core.user.UserModel -import com.nnbc123.core.user.bean.UserExpInfo import com.nnbc123.core.user.bean.UserInfo import com.nnbc123.core.user.event.LoginUserInfoUpdateEvent import com.nnbc123.core.utils.CurrentTimeUtils import com.nnbc123.core.utils.StarUtils -import com.nnbc123.core.utils.net.BeanObserver import com.nnbc123.core.utils.toast import com.trello.rxlifecycle3.android.FragmentEvent import io.reactivex.Observable @@ -241,12 +237,15 @@ class MeFragment : BaseFragment(), View.OnClickListener { override fun onResume() { super.onResume() + if (!isHidden) { + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "我的") + } if (mUserInfo?.isReview == true) { requestUpdateUserInfo() } initUserDate() - } + @SuppressLint("CheckResult") private fun initUserDate() { UserModel.get().currentUserInfo diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/MsgFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/MsgFragment.kt index be918759c..0dc26c6cc 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/MsgFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/MsgFragment.kt @@ -17,6 +17,8 @@ import com.nnbc123.app.ui.im.friend.FriendListFragment import com.nnbc123.app.ui.im.recent.RecentListFragment import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol import org.greenrobot.eventbus.EventBus /** @@ -42,6 +44,13 @@ class MsgFragment : BaseViewBindingFragment(), binding.viewPager.currentItem = currentIndex } + override fun onResume() { + super.onResume() + if (!isHidden) { + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "消息") + } + } + override fun init() { val tagList = arrayListOf("消息", "好友") mFragments.clear() diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/home/HomeFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/home/HomeFragment.kt index 8c63ff340..9afb4a2d0 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/home/HomeFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/home/HomeFragment.kt @@ -3,6 +3,8 @@ package com.nnbc123.app.home.fragment.home import android.graphics.Color import android.view.Gravity import android.widget.LinearLayout +import androidx.viewpager.widget.ViewPager +import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.chuhai.utils.ktx.singleClick import com.gyf.immersionbar.ImmersionBar import com.nnbc123.app.R @@ -36,21 +38,28 @@ class HomeFragment : BaseBindingFragment() { initEvent() } + override fun onResume() { + super.onResume() + if (!isHidden) { + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "首页") + } + } + private fun initEvent() { mBinding.ivMyRoom.singleClick { StatisticManager.Instance() - .onEvent(StatisticsProtocol.EVENT_HOME_MY_ROOM_CLICK, "首页_我的房间") + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MY_ROOM_CLICK) OpenRoomHelper.openRoom(baseActivity) } mBinding.ivRanking.singleClick { StatisticManager.Instance() - .onEvent(StatisticsProtocol.EVENT_HOME_RANK_CLICK, "首页_榜单") + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_RANK_CLICK) CommonWebViewActivity.start(mContext, UriProvider.getRanking()) } mBinding.tvSearch.singleClick { - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SEARCH, "进入搜索页") + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_SEARCH_CLICK) SearchActivity.start(activity) //为啥触发条件这么恶心 我也不知道啊 if (DemoCache.readAnchorCardView() == 0) { @@ -78,6 +87,23 @@ class HomeFragment : BaseBindingFragment() { mBinding.viewPager.adapter = RoomVPAdapter(childFragmentManager, fragmentList) ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager) + mBinding.viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_TBA_CLICK, "${position + 1}") + } + + override fun onPageScrollStateChanged(state: Int) { + } + + }) InitialModel.get().cacheInitInfo?.defaultTab?.let { val tab = it - 1 if (it >= 0 && it < tagList.size) { diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsFragment.kt index 1685fe24a..0f02b9b79 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsFragment.kt @@ -8,6 +8,7 @@ import com.chuhai.utils.ktx.singleClick import com.nnbc123.app.R import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.base.BaseBindingFragment +import com.nnbc123.app.common.widget.dialog.DialogManager import com.nnbc123.app.databinding.HomeFriendsFragmentBinding import com.nnbc123.app.home.FriendsViewModel import com.nnbc123.app.home.HomeViewModel @@ -17,8 +18,13 @@ import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity import com.nnbc123.app.ui.utils.load import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.widget.NewFriendsFilterWindow +import com.nnbc123.core.UriProvider import com.nnbc123.core.auth.AuthModel +import com.nnbc123.core.bean.response.observeResult +import com.nnbc123.core.pay.PayModel import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol +import com.nnbc123.core.utils.net.ServerException import com.nnbc123.library.annatation.ActLayoutRes /** @@ -79,26 +85,38 @@ class FriendsFragment : BaseBindingFragment() { private fun initResource() { mBinding.ivResourceMatch.singleClick { + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MATCH_CLICK) dialogManager.showProgressDialog(mContext) viewModel.getHomeChatPick() } - viewModel.resourceJumpLiveData.observe(this) - { + viewModel.resourceJumpLiveData.observeResult(this, success = { dialogManager.dismissDialog() it?.let { if (it.isPick) { AVRoomActivity.start(context, it.uid) -// StatisticManager.Instance().onEvent( -// "${currMatchClick}_match_success", -// "资源位匹配成功", -// mapOf("user_id" to AuthModel.get().currentUid.toString()) -// ) } else { RecommendRoomDialog.newInstance(it).show(context) } } - } + }, failed = { + dialogManager.dismissDialog() + if ((it as? ServerException)?.code == PayModel.NOT_REAL_NAME_BEFORE_CHARGING) { + dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification), + getString(R.string.go_to_certification), + object : DialogManager.AbsOkDialogListener() { + override fun onOk() { + // 跳去实名认证页面 + CommonWebViewActivity.start( + this@FriendsFragment.context, + UriProvider.getTutuRealNamePage() + ) + } + }) + } else { + toast(it.message) + } + }) viewModel.homeChatPickLiveData.observe(viewLifecycleOwner) { dialogManager.dismissDialog() @@ -116,9 +134,8 @@ class FriendsFragment : BaseBindingFragment() { mBinding.ivResource0.load(item.icon) mBinding.ivResource0.singleClick { StatisticManager.Instance().onEvent( - "E_match_click", - "资源位点击", - mapOf("user_id" to AuthModel.get().currentUid.toString()) + StatisticsProtocol.EVENT_HOMEPAGE_TOP_RESOURCE_CLICK, + "E" ) when (item.resourceType) { 5 -> { diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsListFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsListFragment.kt index a0ecb48a8..80ac07ffb 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsListFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/home/friends/FriendsListFragment.kt @@ -13,14 +13,13 @@ import com.nnbc123.app.R import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.databinding.HomeFriendsListFragmentBinding import com.nnbc123.app.home.FriendsViewModel -import com.nnbc123.app.home.HomeViewModel import com.nnbc123.app.home.adapter.HomeFriendsUserAdapter import com.nnbc123.app.ui.user.UserInfoActivity import com.nnbc123.app.ui.utils.RVDelegate +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.core.user.bean.UserInfo import com.nnbc123.library.annatation.ActLayoutRes -import com.tencent.mm.opensdk.utils.Log -import kotlin.random.Random /** * Created by Max on 2023/12/18 19:35 @@ -87,6 +86,10 @@ class FriendsListFragment : BaseBindingFragment( private fun initEvent() { adapter.setOnItemClickListener { adapter, view, position -> (adapter.getItem(position) as? UserInfo)?.let { item -> + StatisticManager.Instance().onEvent( + StatisticsProtocol.EVENT_HOMEPAGE_MORE_GAME_USER_CLICK, + item.uid.toString() + ) UserInfoActivity.Companion.start(mContext, item.uid) } } diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyFragment.kt index b2aac4b26..914d75aa4 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyFragment.kt @@ -10,6 +10,7 @@ import com.nnbc123.app.R import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.base.BaseActivity import com.nnbc123.app.base.BaseBindingFragment +import com.nnbc123.app.common.widget.dialog.DialogManager import com.nnbc123.app.databinding.HomePartyFragmentBinding import com.nnbc123.app.home.HomeViewModel import com.nnbc123.app.game_room.GameRoomActivity @@ -17,15 +18,19 @@ import com.nnbc123.app.home.PartyViewModel import com.nnbc123.app.home.adapter.HomePartyMessageAdapter import com.nnbc123.app.home.dialog.RecommendRoomDialog import com.nnbc123.app.home.helper.BannerHelper -import com.nnbc123.app.home.helper.OpenRoomHelper import com.nnbc123.app.ui.utils.load import com.nnbc123.app.ui.webview.CommonWebViewActivity -import com.nnbc123.core.auth.AuthModel +import com.nnbc123.core.UriProvider +import com.nnbc123.core.bean.response.observeResult +import com.nnbc123.core.home.bean.BannerInfo import com.nnbc123.core.home.event.RefreshHomeDataEvent -import com.nnbc123.core.room.bean.RoomInfo +import com.nnbc123.core.im.custom.bean.RouterType +import com.nnbc123.core.pay.PayModel import com.nnbc123.core.statistic.StatisticManager import com.nnbc123.core.statistic.protocol.StatisticsProtocol +import com.nnbc123.core.utils.net.ServerException import com.nnbc123.library.annatation.ActLayoutRes +import com.nnbc123.library.utils.JavaUtil import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -85,8 +90,12 @@ class PartyFragment : BaseBindingFragment() { setAdapter(adapter) registerLifecycleObserver(lifecycle) setUserInputEnabled(false) - setOnPageClickListener { clickedView, position -> + setOnPageClickListener { _, position -> adapter.getItem(position)?.let { + StatisticManager.Instance().onEvent( + StatisticsProtocol.EVENT_HOMEPAGE_INFORM_CLICK, + it.roomUid.toString() + ) AVRoomActivity.start(mContext, it.roomUid) } } @@ -101,6 +110,8 @@ class PartyFragment : BaseBindingFragment() { private fun initResource() { mBinding.ivResourceMore.singleClick { + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MORE_ROOM_CLICK) GameRoomActivity.start(requireContext()) } @@ -121,9 +132,8 @@ class PartyFragment : BaseBindingFragment() { resourceViews[i].singleClick { _ -> currMatchClick = abcArray[i] StatisticManager.Instance().onEvent( - "${currMatchClick}_match_click", - "资源位点击", - mapOf("user_id" to AuthModel.get().currentUid.toString()) + StatisticsProtocol.EVENT_HOMEPAGE_TOP_RESOURCE_CLICK, + currMatchClick ) when (it[i].resourceType) { 5 -> { @@ -139,29 +149,50 @@ class PartyFragment : BaseBindingFragment() { } } - viewModel.resourceJumpLiveData.observe(this) - { + viewModel.resourceJumpLiveData.observeResult(this, success = { dialogManager.dismissDialog() it?.let { if (it.isPick) { AVRoomActivity.start(context, it.uid) - StatisticManager.Instance().onEvent( - "${currMatchClick}_match_success", - "资源位匹配成功", - mapOf("user_id" to AuthModel.get().currentUid.toString()) - ) } else { RecommendRoomDialog.newInstance(it).show(context) } } - } + }, failed = { + dialogManager.dismissDialog() + if ((it as? ServerException)?.code == PayModel.NOT_REAL_NAME_BEFORE_CHARGING) { + dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification), + getString(R.string.go_to_certification), + object : DialogManager.AbsOkDialogListener() { + override fun onOk() { + // 跳去实名认证页面 + CommonWebViewActivity.start( + this@PartyFragment.context, + UriProvider.getTutuRealNamePage() + ) + } + }) + } else { + toast(it.message) + } + }) } private fun initBanner() { viewModel.bannerLiveData.observe(this) { - BannerHelper.setBanner(mBinding.rollView, it) { _, _ -> - StatisticManager.Instance() - .onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner") + BannerHelper.setBanner(mBinding.rollView, it) { _, data -> + var roomId: Long? = null + if (data.skipType == BannerInfo.SKIP_TYPE_ROUTER) { + if (JavaUtil.str2int(data.routerType) == RouterType.ROOM) { + roomId = JavaUtil.str2long(data.routerValue) + } + } else if (data.skipType == BannerInfo.SKIP_TYP_CHAT_ROOM) { + roomId = JavaUtil.str2long(data.skipUri) + } + if (roomId != null) { + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BANNER_CLICK, roomId.toString()) + } } } } diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyHotRoomFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyHotRoomFragment.kt index 5889f3e12..3fa9cbb16 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyHotRoomFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/home/party/PartyHotRoomFragment.kt @@ -40,7 +40,7 @@ class PartyHotRoomFragment : BaseBindingFragment() adapter.getItem(position)?.let { AVRoomActivity.start(context, it.uid) StatisticManager.Instance() - .onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "派对-热门进入房间成功") + .onEvent(StatisticsProtocol.EVENT_HOMEPAGE_ROOM_CLICK, it.uid.toString()) } } homeViewModel.hotRoomLiveData.observe(this) { diff --git a/app/src/main/java/com/nnbc123/app/ui/widget/MainTabLayout.java b/app/src/main/java/com/nnbc123/app/ui/widget/MainTabLayout.java index d960d1dc1..3bee728ee 100644 --- a/app/src/main/java/com/nnbc123/app/ui/widget/MainTabLayout.java +++ b/app/src/main/java/com/nnbc123/app/ui/widget/MainTabLayout.java @@ -110,22 +110,22 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener switch (v.getId()) { case R.id.main_home_tab: select(mainTabInfoList.get(0).getTabType()); - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_FIRST_TAB, "首页tab"); + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "首页"); break; // case R.id.main_party_tab: // select(mainTabInfoList.get(1).getTabType()); // break; case R.id.main_square_tab: select(mainTabInfoList.get(1).getTabType()); - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SQUARE_DONG_TAI_CLICK, "点击广场动态页"); + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "广场"); break; case R.id.main_msg_tab: select(mainTabInfoList.get(2).getTabType()); - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MESSAGE, "消息页"); + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "消息"); break; case R.id.main_me_tab: select(mainTabInfoList.get(3).getTabType()); - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_MINE_TAB, "我的tab"); + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "我的"); break; } } diff --git a/app/src/module_community/java/com/nnbc123/app/community/square/SquareFragment.java b/app/src/module_community/java/com/nnbc123/app/community/square/SquareFragment.java index a63e599a5..bc2f50840 100644 --- a/app/src/module_community/java/com/nnbc123/app/community/square/SquareFragment.java +++ b/app/src/module_community/java/com/nnbc123/app/community/square/SquareFragment.java @@ -175,6 +175,14 @@ public class SquareFragment extends BaseFragment implements MainMagicIndicatorAd } + @Override + public void onResume() { + super.onResume(); + if (!isHidden()) { + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "广场"); + } + } + @Override public void onSetListener() { if (ivSquarePublish != null) { diff --git a/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt index 5b484aeca..68fcd8ff0 100644 --- a/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt +++ b/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt @@ -3,6 +3,7 @@ package com.nnbc123.core.home.model import com.nnbc123.core.DemoCache import com.nnbc123.core.auth.AuthModel import com.nnbc123.core.base.BaseModel +import com.nnbc123.core.bean.response.BeanResult import com.nnbc123.core.bean.response.ServiceResult import com.nnbc123.core.community.CommunityConstant import com.nnbc123.core.community.bean.UnReadCountInfo diff --git a/core/src/main/java/com/nnbc123/core/bean/response/BeanResult.kt b/core/src/main/java/com/nnbc123/core/bean/response/BeanResult.kt index 818b66f1d..433eeec56 100644 --- a/core/src/main/java/com/nnbc123/core/bean/response/BeanResult.kt +++ b/core/src/main/java/com/nnbc123/core/bean/response/BeanResult.kt @@ -1,12 +1,19 @@ package com.nnbc123.core.bean.response +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.chuhai.core.exceptions.SuperException import com.nnbc123.core.utils.net.ServerException data class BeanResult( val isSuccess: Boolean, + @Deprecated("建议使用throwable") val code: Int = 0, + @Deprecated("建议使用throwable") val message: String? = null, - val data: T? = null + val data: T? = null, + val throwable: Throwable? = null ) { companion object { @@ -20,14 +27,32 @@ data class BeanResult( fun failed(throwable: Throwable): BeanResult { return if (throwable is ServerException) { - failed(throwable.code, throwable.message) + BeanResult(false, throwable.code, throwable.message, null, throwable) } else { failed(-1, "网络异常,请检查你的网络再试!") } } } +} +fun LiveData?>.observeResult( + lifecycleOwner: LifecycleOwner, + success: ((T?) -> Unit)? = null, + failed: ((Throwable) -> Unit)? = null +) { + this.observe(lifecycleOwner) { + if (it == null) { + failed?.invoke(NullPointerException("Result null")) + } else if (it.isSuccess) { + success?.invoke(it.data) + } else { + if (it.throwable != null) { + failed?.invoke(it.throwable) + } else { + failed?.invoke(SuperException(it.message, it.code)) + } + } + } } - diff --git a/core/src/main/java/com/nnbc123/core/statistic/StatisticManager.java b/core/src/main/java/com/nnbc123/core/statistic/StatisticManager.java index 6a1223fd4..52cf87000 100644 --- a/core/src/main/java/com/nnbc123/core/statistic/StatisticManager.java +++ b/core/src/main/java/com/nnbc123/core/statistic/StatisticManager.java @@ -68,6 +68,12 @@ public class StatisticManager { mStatisticModel.onPageEnd(context, pageName); } + + public void onEvent(String eventId) { + LogUtil.e(eventId); + mStatisticModel.onEvent(BasicConfig.INSTANCE.getAppContext(), eventId, null, null); + } + public void onEvent(String eventId, String eventLabel) { LogUtil.e(eventId); mStatisticModel.onEvent(BasicConfig.INSTANCE.getAppContext(), eventId, eventLabel, null); diff --git a/core/src/main/java/com/nnbc123/core/statistic/protocol/StatisticsProtocol.java b/core/src/main/java/com/nnbc123/core/statistic/protocol/StatisticsProtocol.java index 9136f49ba..ea0477164 100644 --- a/core/src/main/java/com/nnbc123/core/statistic/protocol/StatisticsProtocol.java +++ b/core/src/main/java/com/nnbc123/core/statistic/protocol/StatisticsProtocol.java @@ -118,7 +118,7 @@ public interface StatisticsProtocol { String EVENT_MP_ROOM_SMASH_EGG_CLICK = "mp_room_smashEgg_click"; // 砸蛋入口 String EVENT_MP_ROOM_SMASHEGG_CHOOSE = "mp_room_smashEgg_choose"; // 开始砸蛋-多人房 String EVENT_MP_ROOM_RANKING_LIST_CLICK = "mp_room_rankingList_click"; // 房间榜 - String EVENT_CP_ROOM_RANKING_LIST_CLICK=("cp_room_rankingList_click");// 房间榜 + String EVENT_CP_ROOM_RANKING_LIST_CLICK = ("cp_room_rankingList_click");// 房间榜 String EVENT_MP_ROOM_SET_TOPIC_CLICK = "mp_room_setTopic_click"; // 设置房间话题 String EVENT_MP_ROOM_CLOSE_MIC_CLICK = "mp_room_close_mic_click"; // 关闭麦克风 String EVENT_MP_ROOM_CLOSE_SOUND_CLICK = "mp_room_close_sound_click"; // 关闭声音 @@ -440,4 +440,18 @@ public interface StatisticsProtocol { String EVENT_GRADE_PROFIT_POP_SHOW = "grade_profit_pop_show";//主播评级入口曝光 String EVENT_GRADE_PROFIT_CLOSE_CLICK = "grade_profit_close_click";//主播评级弹窗关闭点击 + String EVENT_HOMEPAGE_SHOW = "homepage_show";//首页曝光统计 + String EVENT_HOMEPAGE_BAR_CLICK = "homepage_bar_click";//底部工具栏bar统计 + String EVENT_HOMEPAGE_TOP_TBA_CLICK = "homepage_top_tab_click";//首页顶部tab切换点击 + String EVENT_HOMEPAGE_TOP_SEARCH_CLICK = "homepage_top_search_click";//首页顶部搜索框点击 + String EVENT_HOMEPAGE_TOP_RANK_CLICK = "homepage_top_rank_click";//首页顶部全服榜单点击 + String EVENT_HOMEPAGE_TOP_MY_ROOM_CLICK = "homepage_top_myroom_click";//首页顶部我的房间点击 + String EVENT_HOMEPAGE_TOP_RESOURCE_CLICK = "homepage_top_resource_click";//首页顶部资源位点击 + String EVENT_HOMEPAGE_TOP_MORE_ROOM_CLICK = "homepage_top_moregame_click";//首页顶部更多游戏跳转点击 + String EVENT_HOMEPAGE_INFORM_CLICK = "homepage_inform_click";//首页轮播通知的跳转点击 + String EVENT_HOMEPAGE_BANNER_CLICK = "homepage_banner_click";//首页banner的跳转点击 + String EVENT_HOMEPAGE_ROOM_CLICK = "homepage_room_click";//首页房间的跳转点击 + String EVENT_HOMEPAGE_MORE_GAME_TAB_CLICK = "homepage_moregame_tab_click";//更多游戏二级页顶部游戏分类点击 + String EVENT_HOMEPAGE_TOP_MATCH_CLICK = "homepage_top_match_click";//首页顶部匹配点击 + String EVENT_HOMEPAGE_MORE_GAME_USER_CLICK = "homepage_moregame_user_click";//首页用户主播卡片点击 }