From da01c04dcc7df0d03fcf97e07db5dccdeca55e85 Mon Sep 17 00:00:00 2001 From: huangjian Date: Thu, 16 Mar 2023 17:10:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BE=E5=AF=B9banner=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E9=98=9F=E5=BC=80=E9=BB=91=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nnbc123/app/home/HomeViewModel.kt | 20 +++ .../app/home/fragment/HomePlayFragment.kt | 162 +++++++++--------- .../app/home/fragment/PartyFragment.kt | 6 +- .../app/home/fragment/RecommendFragment.kt | 24 ++- .../main/res/layout/fragment_recommend.xml | 25 +++ .../res/layout/fragment_square.xml | 4 +- .../com/nnbc123/core/home/model/HomeModel.kt | 15 ++ 7 files changed, 161 insertions(+), 95 deletions(-) diff --git a/app/src/main/java/com/nnbc123/app/home/HomeViewModel.kt b/app/src/main/java/com/nnbc123/app/home/HomeViewModel.kt index 4eb612db3..43e033033 100644 --- a/app/src/main/java/com/nnbc123/app/home/HomeViewModel.kt +++ b/app/src/main/java/com/nnbc123/app/home/HomeViewModel.kt @@ -23,6 +23,9 @@ class HomeViewModel : BaseViewModel() { private val _bannerLiveData = MutableLiveData>() val bannerLiveData: LiveData> = _bannerLiveData + private val _partyBannerLiveData = MutableLiveData?>() + val partyBannerLiveData: LiveData?> = _partyBannerLiveData + private val _hotRoomLiveData = MutableLiveData>() val hotRoomLiveData: LiveData> = _hotRoomLiveData @@ -120,6 +123,23 @@ class HomeViewModel : BaseViewModel() { ) } + fun getPartyBanner() { + safeLaunch( + onError = { + _partyBannerLiveData.value = null + }, + block = { + val result = HomeModel.getHotRoom() + var bannerInfoList: List? + bannerInfoList = result?.find { it.isBanner }?.bannerVoList + if (bannerInfoList == null) { + bannerInfoList = HomeModel.getPlayRoom()?.find { it.isBanner }?.bannerVoList + } + _partyBannerLiveData.value = bannerInfoList + } + ) + } + fun getGameRoom(pageNum: Int, pageSize: Int) { safeLaunch( diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/HomePlayFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/HomePlayFragment.kt index 8a6e6643c..a180000b0 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/HomePlayFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/HomePlayFragment.kt @@ -1,106 +1,104 @@ -package com.nnbc123.app.home.fragment; +package com.nnbc123.app.home.fragment -import android.annotation.SuppressLint; -import android.os.Bundle; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.nnbc123.app.R; -import com.nnbc123.app.avroom.activity.AVRoomActivity; -import com.nnbc123.app.base.BaseFragment; -import com.nnbc123.app.common.EmptyViewHelper; -import com.nnbc123.app.home.adapter.HomePlayAdapter; -import com.nnbc123.app.ui.utils.RVDelegate; -import com.nnbc123.core.home.bean.HomeRoomInfo; -import com.nnbc123.core.home.event.RefreshHomeDataEvent; -import com.nnbc123.core.home.model.GameHomeModel; -import com.nnbc123.core.statistic.StatisticManager; -import com.nnbc123.core.statistic.protocol.StatisticsProtocol; -import com.nnbc123.core.user.event.LoadLoginUserInfoEvent; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; +import com.nnbc123.app.base.BaseFragment +import androidx.recyclerview.widget.RecyclerView +import com.nnbc123.app.home.adapter.HomePlayAdapter +import com.nnbc123.app.ui.utils.RVDelegate +import com.nnbc123.core.home.bean.HomeRoomInfo +import org.greenrobot.eventbus.EventBus +import androidx.recyclerview.widget.LinearLayoutManager +import com.nnbc123.app.common.EmptyViewHelper +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol +import com.nnbc123.app.avroom.activity.AVRoomActivity +import android.annotation.SuppressLint +import com.nnbc123.core.home.model.GameHomeModel +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import com.nnbc123.core.user.event.LoadLoginUserInfoEvent +import com.nnbc123.core.home.event.RefreshHomeDataEvent +import com.nnbc123.app.home.fragment.HomePlayFragment +import android.os.Bundle +import android.view.View +import com.chad.library.adapter.base.BaseQuickAdapter +import com.nnbc123.app.R /** * create by lvzebiao @2020/1/7 */ -public class HomePlayFragment extends BaseFragment { +class HomePlayFragment : BaseFragment() { + private var recyclerView: RecyclerView? = null + private lateinit var playAdapter: HomePlayAdapter + private lateinit var rvDelegate: RVDelegate - private RecyclerView recyclerView; - - private HomePlayAdapter playAdapter; - private RVDelegate rvDelegate; - - public static HomePlayFragment newInstance() { - HomePlayFragment fragment = new HomePlayFragment(); - Bundle bundle = new Bundle(); - fragment.setArguments(bundle); - return fragment; + override fun getRootLayoutId(): Int { + return R.layout.fragment_home_play } - - @Override - public int getRootLayoutId() { - return R.layout.fragment_home_play; - } - - @Override - public void initiate() { - recyclerView = mView.findViewById(R.id.recycler_view); - EventBus.getDefault().register(this); - playAdapter = new HomePlayAdapter(); - rvDelegate = new RVDelegate.Builder() - .setAdapter(playAdapter) - .setLayoutManager(new LinearLayoutManager(mContext)) - .setRecyclerView(recyclerView) - .setEmptyView(EmptyViewHelper.createEmptyView(getContext(), "暂无数据")) - .build(); - playAdapter.setOnItemClickListener((adapter, view, position) -> { - HomeRoomInfo homePlayInfo = playAdapter.getItem(position); - if (homePlayInfo != null) { - StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_KH_ROOM_SUCCESS, "点击组队开黑进入房间"); - AVRoomActivity.startForFromType(mContext, homePlayInfo.getUid(), AVRoomActivity.FROM_TYPE_RECOMMEND); + override fun initiate() { + recyclerView = mView.findViewById(R.id.recycler_view) + EventBus.getDefault().register(this) + playAdapter = HomePlayAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(playAdapter) + .setLayoutManager(LinearLayoutManager(mContext)) + .setRecyclerView(recyclerView) + .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无数据")) + .build() + playAdapter.onItemClickListener = + BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>, _: View, position: Int -> + val homePlayInfo = playAdapter.getItem(position) + if (homePlayInfo != null) { + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_KH_ROOM_SUCCESS, "点击组队开黑进入房间") + AVRoomActivity.startForFromType( + mContext, + homePlayInfo.uid, + AVRoomActivity.FROM_TYPE_RECOMMEND + ) + } } - }); - } - @Override - public void onResume() { - super.onResume(); - loadData(true); + override fun onResume() { + super.onResume() + loadData(true) } @SuppressLint("CheckResult") - private void loadData(boolean refresh) { - GameHomeModel.get().getHomePlayV2() - .compose(bindToLifecycle()) - .subscribe((homePlayInfoList, throwable) -> { - if (throwable != null) { - rvDelegate.loadErr(refresh); - } else { - rvDelegate.loadData(homePlayInfoList, refresh); - } - }); + private fun loadData(refresh: Boolean) { + GameHomeModel.get().homePlayV2 + .compose(bindToLifecycle()) + .subscribe { homePlayInfoList: List?, throwable: Throwable? -> + if (throwable != null) { + rvDelegate.loadErr(refresh) + } else { + rvDelegate.loadData(homePlayInfoList?.filter { !it.isBanner }, refresh) + } + } } @Subscribe(threadMode = ThreadMode.MAIN) - public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) { - if (isResumed()) loadData(true); + fun onLoadLoginUserInfoEvent(event: LoadLoginUserInfoEvent?) { + if (isResumed) loadData(true) } @Subscribe(threadMode = ThreadMode.MAIN) - public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) { - if (isResumed()) loadData(true); + fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) { + if (isResumed) loadData(true) } - - @Override - public void onDestroyView() { - EventBus.getDefault().unregister(this); - super.onDestroyView(); + override fun onDestroyView() { + EventBus.getDefault().unregister(this) + super.onDestroyView() } -} + companion object { + fun newInstance(): HomePlayFragment { + val fragment = HomePlayFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment.kt index 8faf743f0..b5c944a25 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment.kt @@ -32,7 +32,7 @@ class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectList private val mFragments: ArrayList = ArrayList() private val mTabInfoList: ArrayList = ArrayList() private val homeViewModel: HomeViewModel by activityViewModels() - private var currentIndex = 1 + private var currentIndex = 0 companion object { fun newInstance(): PartyFragment { @@ -67,18 +67,18 @@ class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectList onGetHomeTagSuccess(it) } } - homeViewModel.bannerLiveData.observe(this) { + homeViewModel.partyBannerLiveData.observe(this) { BannerHelper.setBanner(mBinding.rollView, it) { _, _ -> StatisticManager.Instance() .onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner") } } - homeViewModel.getBannerInfo() } override fun onResume() { super.onResume() homeViewModel.getTagInfo() + homeViewModel.getPartyBanner() } private fun onGetHomeTagSuccess(tagInfoList: List) { diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/RecommendFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/RecommendFragment.kt index f5f25265c..a73eee4fb 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/RecommendFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/RecommendFragment.kt @@ -11,11 +11,6 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager -import com.nnbc123.core.auth.AuthModel -import com.nnbc123.core.home.event.RefreshHomeDataEvent -import com.nnbc123.core.initial.InitialModel -import com.nnbc123.core.statistic.StatisticManager -import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.app.R import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.avroom.adapter.RoomVPAdapter @@ -23,16 +18,21 @@ import com.nnbc123.app.base.BaseFragment import com.nnbc123.app.common.EmptyViewHelper import com.nnbc123.app.databinding.FragmentRecommendBinding import com.nnbc123.app.home.HomeViewModel -import com.nnbc123.app.home.adapter.* +import com.nnbc123.app.home.adapter.GiftServiceAdapter +import com.nnbc123.app.home.adapter.HomeSingleAnchorAdapter +import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter import com.nnbc123.app.home.dialog.RecommendRoomDialog +import com.nnbc123.app.home.helper.BannerHelper import com.nnbc123.app.ui.utils.RVDelegate import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.nnbc123.core.auth.AuthModel import com.nnbc123.core.home.bean.GiftServiceMsgVo -import com.nnbc123.core.home.bean.HomeRoomInfo +import com.nnbc123.core.home.event.RefreshHomeDataEvent +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.scwang.smartrefresh.layout.internal.ProgressDrawable -import com.yinyuan.doudou.pay.adapter.GiveSearchAdapter import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -95,6 +95,13 @@ class RecommendFragment : BaseFragment(), .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间")) .setLayoutManager(LinearLayoutManager(mContext)) .build() + + homeViewModel.bannerLiveData.observe(this) { + BannerHelper.setBanner(mBinding.rollView, it) { _, _ -> + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner") + } + } homeViewModel.resourceLiveData.observe(this) { if (it.isNullOrEmpty() || it.size != 3) { mBinding.llResource.isGone = true @@ -230,6 +237,7 @@ class RecommendFragment : BaseFragment(), private fun loadData() { homeViewModel.getHomeResource() + homeViewModel.getBannerInfo() //homeViewModel.getHomeSingleAnchorList() } diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml index d0ecb4ba1..39842af9e 100644 --- a/app/src/main/res/layout/fragment_recommend.xml +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -47,6 +47,31 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + + + + 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 9935a7468..6f7f560da 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 @@ -105,6 +105,11 @@ object HomeModel : BaseModel() { api.getHotRoom() } + suspend fun getPlayRoom(): List? = + launchRequest { + api.getPlayRoom() + } + suspend fun getHomeResource(): MutableList? = launchRequest { api.getHomeResource() @@ -269,6 +274,16 @@ object HomeModel : BaseModel() { @GET("home/hotRoom") suspend fun getHotRoom(): ServiceResult> + /** + * 首页热门房间 + * + * @return + */ + @GET("home/playV2") + suspend fun getPlayRoom(): ServiceResult> + + + /** * 首页资源位 *