From bebf19215eb23d77818f8b3532f945a0232e49b2 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Fri, 16 Sep 2022 17:04:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=B4=A1=E7=8C=AE=E6=A6=9C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9A=90=E8=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/NobleRankHideUserListModel.java | 56 +++++++++++ .../com/yunbao/common/http/PDLiveApi.java | 7 ++ .../common/http/live/LiveNetManager.java | 17 ++++ common/src/main/res/values-en/strings.xml | 2 + common/src/main/res/values/strings.xml | 2 + .../live/activity/LiveAudienceActivity.java | 2 + .../yunbao/live/views/LiveRoomViewHolder.java | 12 ++- .../main/activity/MainListActivity.java | 38 ++++++-- .../yunbao/main/adapter/MainListAdapter.java | 87 +++++++++--------- .../java/com/yunbao/main/bean/ListBean.java | 12 +++ .../views/MainListContributeViewHolder.java | 16 +++- .../main/res/layout/item_main_list_head.xml | 2 +- main/src/main/res/mipmap-xxxhdpi/hide.png | Bin 0 -> 30021 bytes 13 files changed, 198 insertions(+), 55 deletions(-) create mode 100644 common/src/main/java/com/yunbao/common/bean/NobleRankHideUserListModel.java create mode 100644 main/src/main/res/mipmap-xxxhdpi/hide.png diff --git a/common/src/main/java/com/yunbao/common/bean/NobleRankHideUserListModel.java b/common/src/main/java/com/yunbao/common/bean/NobleRankHideUserListModel.java new file mode 100644 index 000000000..f94c50172 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/NobleRankHideUserListModel.java @@ -0,0 +1,56 @@ +package com.yunbao.common.bean; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; +import java.util.List; + +/** + * 隐藏 + */ +public class NobleRankHideUserListModel extends BaseModel { + @SerializedName("in_rank_hide") + private List inRankHide = new ArrayList<>(); + @SerializedName("out_rank_hide")//目前客户端只使用这个字段 + private List outRankHide = new ArrayList<>(); + @SerializedName("week_rank_hide") + private List weekRankHide = new ArrayList<>(); + @SerializedName("active_rank_hide") + private List activeRankHide = new ArrayList<>(); + + public List getInRankHide() { + return inRankHide; + } + + public NobleRankHideUserListModel setInRankHide(List inRankHide) { + this.inRankHide = inRankHide; + return this; + } + + public List getOutRankHide() { + return outRankHide; + } + + public NobleRankHideUserListModel setOutRankHide(List outRankHide) { + this.outRankHide = outRankHide; + return this; + } + + public List getWeekRankHide() { + return weekRankHide; + } + + public NobleRankHideUserListModel setWeekRankHide(List weekRankHide) { + this.weekRankHide = weekRankHide; + return this; + } + + public List getActiveRankHide() { + return activeRankHide; + } + + public NobleRankHideUserListModel setActiveRankHide(List activeRankHide) { + this.activeRankHide = activeRankHide; + return this; + } +} diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java index 8145c8ee4..acaf1a8a9 100644 --- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java +++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java @@ -10,6 +10,7 @@ import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.bean.LiveInfoModel; import com.yunbao.common.bean.MsgSwitchDetailModel; import com.yunbao.common.bean.NewPeopleInfo; +import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.SearchModel; import com.yunbao.common.bean.SetAttentsModel; @@ -225,4 +226,10 @@ public interface PDLiveApi { */ @GET("/api/public/?service=User.getUserInstructor") Observable>> getUserInstructor(); + + /** + * 获取隐藏榜单的用户id + */ + @GET("/api/public/?service=Noble.getNobleRankHideUserList") + Observable> getNobleRankHideUserList(); } diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java index 58a5c0393..46fae1840 100644 --- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java +++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java @@ -5,6 +5,7 @@ import android.content.Context; import com.yunbao.common.bean.ActiveModel; import com.yunbao.common.bean.BaseModel; import com.yunbao.common.bean.LiveInfoModel; +import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.bean.NobleTrumpetModel; import com.yunbao.common.bean.SetAttentsModel; import com.yunbao.common.bean.VipModel; @@ -189,4 +190,20 @@ public class LiveNetManager { callback.onError(throwable.getMessage()); }).isDisposed(); } + + /** + * 获取隐藏榜单的用户id + */ + public void getNobleRankHideUserList(HttpCallback callback) { + API.get().pdLiveApi(mContext).getNobleRankHideUserList() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (callback != null) + callback.onSuccess(listResponseModel.getData().getInfo()); + }, throwable -> { + if (callback != null) + callback.onError(throwable.getMessage()); + }).isDisposed(); + } } diff --git a/common/src/main/res/values-en/strings.xml b/common/src/main/res/values-en/strings.xml index a36380085..908ddca52 100644 --- a/common/src/main/res/values-en/strings.xml +++ b/common/src/main/res/values-en/strings.xml @@ -875,4 +875,6 @@ Limited ride And limited avatar frame Pay attention to the channel that suits you. What do you say to everyone LiveConfig + No access to the mystery man\'s personal home page。 + The Mystery Man diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 1c8f3f578..e67596f74 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -901,5 +901,7 @@ 国王 皇帝 超皇 + 無法前往神秘人的個人主頁。 + 神秘人 diff --git a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java index 6856e207f..a5bb51a47 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveAudienceActivity.java @@ -688,6 +688,8 @@ public class LiveAudienceActivity extends LiveActivity { String nobleUrl = CommonAppConfig.HOST + "/h5/Nobility.html?nickname=" + userInfo.getUserNicename() + "&usernobId=" + userInfo.getNobleId() + "&token=" + userInfo.getToken() + + "&anchorUid=" + mLiveBean.getUid() + + "&ancherName=" + mLiveBean.getUserNiceName() + "&uid=" + userInfo.getId(); ZhuangBanActivity.forward(mContext, nobleUrl, false); break; diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 5e7a0c81f..31cbbc916 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -2253,11 +2253,15 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis mLiveGiftAnimPresenter.showBuyLiangNameGiftAnim(bean); } + /** + * 开通贵族的全服通知 + * @param bean + */ public void showBuyVipMessage(LiveReceiveGiftBean bean) { - if (mLiveGiftAnimPresenter == null) { - mLiveGiftAnimPresenter = new LiveGiftAnimPresenter(mContext, mContentView, mGifImageView, mSVGAImageView, mLiveGiftPrizePoolContainer, windowManager); - } - mLiveGiftAnimPresenter.showBuyVipGiftAnim(bean); +// if (mLiveGiftAnimPresenter == null) { +// mLiveGiftAnimPresenter = new LiveGiftAnimPresenter(mContext, mContentView, mGifImageView, mSVGAImageView, mLiveGiftPrizePoolContainer, windowManager); +// } +// mLiveGiftAnimPresenter.showBuyVipGiftAnim(bean); } public void showSysMessage(LiveReceiveGiftBean bean) { diff --git a/main/src/main/java/com/yunbao/main/activity/MainListActivity.java b/main/src/main/java/com/yunbao/main/activity/MainListActivity.java index 653573be5..6840dd6af 100644 --- a/main/src/main/java/com/yunbao/main/activity/MainListActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MainListActivity.java @@ -3,15 +3,19 @@ package com.yunbao.main.activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.ViewPager; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; +import androidx.viewpager.widget.ViewPager; + import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.adapter.ViewPagerAdapter; +import com.yunbao.common.bean.NobleRankHideUserListModel; import com.yunbao.common.event.FollowEvent; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.http.live.LiveNetManager; import com.yunbao.common.utils.WordUtil; import com.yunbao.main.R; import com.yunbao.main.views.AbsMainListChildViewHolder; @@ -43,19 +47,20 @@ public class MainListActivity extends AbsActivity { private MainListContributeViewHolder mContributeViewHolder;//贡献榜 private MagicIndicator mIndicator; private ViewPager mViewPager; + private List outRankHide = new ArrayList<>(); - public static void forward(Context context,int p) { - context.startActivity(new Intent(context, MainListActivity.class).putExtra("p",p)); + public static void forward(Context context, int p) { + context.startActivity(new Intent(context, MainListActivity.class).putExtra("p", p)); } @Override protected void onResume() { super.onResume(); - if(mProfitViewHolder!=null && mProfitViewHolder.mAdapter!=null) { + if (mProfitViewHolder != null && mProfitViewHolder.mAdapter != null) { mProfitViewHolder.mAdapter.notifyDataSetChanged(); } - if(mContributeViewHolder!=null && mContributeViewHolder.mAdapter!=null) { + if (mContributeViewHolder != null && mContributeViewHolder.mAdapter != null) { mContributeViewHolder.mAdapter.notifyDataSetChanged(); } } @@ -140,11 +145,27 @@ public class MainListActivity extends AbsActivity { mIndicator.setNavigator(commonNavigator); ViewPagerHelper.bind(mIndicator, mViewPager); //默认选择第几个 - mIndicator.onPageSelected(getIntent().getIntExtra("p",0)); - mViewPager.setCurrentItem(getIntent().getIntExtra("p",0)); + mIndicator.onPageSelected(getIntent().getIntExtra("p", 0)); + mViewPager.setCurrentItem(getIntent().getIntExtra("p", 0)); //加载数据 loadData(); EventBus.getDefault().register(MainListActivity.this); + //获取隐身的用户的ID + LiveNetManager.get(mContext) + .getNobleRankHideUserList(new HttpCallback() { + @Override + public void onSuccess(NobleRankHideUserListModel data) { + outRankHide = data.getOutRankHide(); + if (mContributeViewHolder != null) { + mContributeViewHolder.setHide(data.getOutRankHide()); + } + } + + @Override + public void onError(String error) { + Log.e("MainListActivity", error); + } + }); } private void loadPageData(int position) { @@ -163,6 +184,7 @@ public class MainListActivity extends AbsActivity { vh = mProfitViewHolder; } else if (position == 1) { mContributeViewHolder = new MainListContributeViewHolder(mContext, parent); + mContributeViewHolder.setHide(outRankHide); vh = mContributeViewHolder; } if (vh == null) { diff --git a/main/src/main/java/com/yunbao/main/adapter/MainListAdapter.java b/main/src/main/java/com/yunbao/main/adapter/MainListAdapter.java index 6d4f58960..6339f159f 100644 --- a/main/src/main/java/com/yunbao/main/adapter/MainListAdapter.java +++ b/main/src/main/java/com/yunbao/main/adapter/MainListAdapter.java @@ -23,6 +23,7 @@ import com.yunbao.common.custom.MyRadioButton; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.CommonHttpUtil; import com.yunbao.common.utils.CommonIconUtil; +import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.common.views.weight.ViewClicksAntiShake; import com.yunbao.main.R; @@ -53,6 +54,7 @@ public class MainListAdapter extends RefreshAdapter { private List mTopList; private HeadVh mHeadVh; private int mType; + private List outRankHide = new ArrayList<>(); public MainListAdapter(Context context, int type) { @@ -69,7 +71,13 @@ public class MainListAdapter extends RefreshAdapter { ViewClicksAntiShake.clicksAntiShake(v, () -> { Object tag = v.getTag(); if (tag != null && mOnItemClickListener != null) { - mOnItemClickListener.onItemClick((ListBean) tag, 0); + ListBean model = (ListBean) tag; + if (model.isHide()) { + ToastUtil.show(R.string.can_not_go); + } else { + mOnItemClickListener.onItemClick(model, 0); + } + } }); @@ -136,7 +144,13 @@ public class MainListAdapter extends RefreshAdapter { @Override public void refreshData(List list) { + for (ListBean model : list) { + for (String hideId : outRankHide) { + model.setHide(TextUtils.equals(model.getUid(), hideId)); + } + } mTopList.clear(); + int size = list.size(); if (size > 0) { mTopList.add(list.get(0)); @@ -219,11 +233,6 @@ public class MainListAdapter extends RefreshAdapter { SVGAImageView svga2; SVGAImageView svga3; -// View mDataGroup2; -// View mDataGroup3; -// View mNoData2; -// View mNoData3; - public HeadVh(View itemView) { super(itemView); mItem1 = itemView.findViewById(R.id.item_1); @@ -259,11 +268,6 @@ public class MainListAdapter extends RefreshAdapter { svga1 = (SVGAImageView) itemView.findViewById(R.id.svga1); svga2 = (SVGAImageView) itemView.findViewById(R.id.svga2); svga3 = (SVGAImageView) itemView.findViewById(R.id.svga3); - -// mDataGroup2 = itemView.findViewById(R.id.data_group_2); -// mDataGroup3 = itemView.findViewById(R.id.data_group_3); -// mNoData2 = itemView.findViewById(R.id.no_data_2); -// mNoData3 = itemView.findViewById(R.id.no_data_3); } void setData(Object payload) { @@ -301,8 +305,14 @@ public class MainListAdapter extends RefreshAdapter { if (payload == null) { mItem1.setTag(bean); mItem1.setVisibility(View.VISIBLE); - ImgLoader.display(mContext, bean.getAvatarThumb(), mAvatar1); - mName1.setText(bean.getUserNiceName()); + if (bean.isHide()) { + mName1.setText(R.string.mystery_man); + ImgLoader.display(mContext, R.mipmap.hide, mAvatar1); + } else { + ImgLoader.display(mContext, bean.getAvatarThumb(), mAvatar1); + mName1.setText(bean.getUserNiceName()); + } + mVotes1.setText(bean.getTotalCoinFormat()); mSex1.setImageResource(CommonIconUtil.getSexIcon(bean.getSex())); LevelBean levelBean = null; @@ -399,19 +409,6 @@ public class MainListAdapter extends RefreshAdapter { mBtnFollow2.setBackgroundResource(R.drawable.background_yellow); mBtnFollow2.setTextColor(Color.parseColor("#FFFFFF")); } -// if (mNoData2.getVisibility() == View.VISIBLE) { -// mNoData2.setVisibility(View.INVISIBLE); -// } -// if (mDataGroup2.getVisibility() != View.VISIBLE) { -// mDataGroup2.setVisibility(View.VISIBLE); -// } - } else { -// if (mDataGroup2.getVisibility() == View.VISIBLE) { -// mDataGroup2.setVisibility(View.INVISIBLE); -// } -// if (mNoData2.getVisibility() != View.VISIBLE) { -// mNoData2.setVisibility(View.VISIBLE); -// } } if (topSize > 2) { ListBean bean = mTopList.get(2); @@ -478,19 +475,6 @@ public class MainListAdapter extends RefreshAdapter { mBtnFollow3.setBackgroundResource(R.drawable.background_yellow); mBtnFollow3.setTextColor(Color.parseColor("#FFFFFF")); } -// if (mNoData3.getVisibility() == View.VISIBLE) { -// mNoData3.setVisibility(View.INVISIBLE); -// } -// if (mDataGroup3.getVisibility() != View.VISIBLE) { -// mDataGroup3.setVisibility(View.VISIBLE); -// } - } else { -// if (mDataGroup3.getVisibility() == View.VISIBLE) { -// mDataGroup3.setVisibility(View.INVISIBLE); -// } -// if (mNoData3.getVisibility() != View.VISIBLE) { -// mNoData3.setVisibility(View.VISIBLE); -// } } } } @@ -551,8 +535,15 @@ public class MainListAdapter extends RefreshAdapter { } itemView.setTag(bean); mOrder.setText("" + (position + 4)); - ImgLoader.display(mContext, bean.getAvatarThumb(), mAvatar); - mName.setText(bean.getUserNiceName()); + if (bean.isHide()) { + mName.setText(R.string.mystery_man); + ImgLoader.display(mContext, R.mipmap.hide, mAvatar); + } else { + ImgLoader.display(mContext, bean.getAvatarThumb(), mAvatar); + mName.setText(bean.getUserNiceName()); + } + + mVotes.setText(bean.getTotalCoinFormat() + " "); mSex.setImageResource(CommonIconUtil.getSexIcon(bean.getSex())); LevelBean levelBean = null; @@ -607,4 +598,18 @@ public class MainListAdapter extends RefreshAdapter { } } + /** + * 设置隐藏数据 + * + * @param outRankHide + */ + public void setHide(List outRankHide) { + this.outRankHide = outRankHide; + for (ListBean model : mList) { + for (String hideId : outRankHide) { + model.setHide(TextUtils.equals(model.getUid(), hideId)); + } + } + notifyDataSetChanged(); + } } diff --git a/main/src/main/java/com/yunbao/main/bean/ListBean.java b/main/src/main/java/com/yunbao/main/bean/ListBean.java index 83b8851c3..9434a52a0 100644 --- a/main/src/main/java/com/yunbao/main/bean/ListBean.java +++ b/main/src/main/java/com/yunbao/main/bean/ListBean.java @@ -19,11 +19,23 @@ public class ListBean { private int attention; private int islive; private String dress_head; + //是否隐藏 + private boolean isHide = false; + + public boolean isHide() { + return isHide; + } + + public ListBean setHide(boolean hide) { + isHide = hide; + return this; + } @JSONField(name = "dress_head") public String getDress_head() { return dress_head; } + @JSONField(name = "dress_head") public void setDress_head(String dress_head) { this.dress_head = dress_head; diff --git a/main/src/main/java/com/yunbao/main/views/MainListContributeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainListContributeViewHolder.java index 774369346..9d163a9ac 100644 --- a/main/src/main/java/com/yunbao/main/views/MainListContributeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainListContributeViewHolder.java @@ -12,6 +12,7 @@ import com.yunbao.main.bean.ListBean; import com.yunbao.main.http.MainHttpConsts; import com.yunbao.main.http.MainHttpUtil; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -21,6 +22,7 @@ import java.util.List; */ public class MainListContributeViewHolder extends AbsMainListChildViewHolder { + private List outRankHide = new ArrayList<>(); public MainListContributeViewHolder(Context context, ViewGroup parentView) { super(context, parentView); @@ -36,12 +38,13 @@ public class MainListContributeViewHolder extends AbsMainListChildViewHolder { mAdapter = new MainListAdapter(mContext, MainListAdapter.TYPE_CONTRIBUTE); mAdapter.setOnItemClickListener(MainListContributeViewHolder.this); } + mAdapter.setHide(outRankHide); return mAdapter; } @Override public void loadData(int p, HttpCallback callback) { - if(!mType.isEmpty()){ + if (!mType.isEmpty()) { MainHttpUtil.consumeList(mType, p, callback); } } @@ -73,6 +76,17 @@ public class MainListContributeViewHolder extends AbsMainListChildViewHolder { }); } + /** + * 设置隐藏数据 + * + * @param outRankHide + */ + public void setHide(List outRankHide) { + this.outRankHide = outRankHide; + if (mAdapter != null) + mAdapter.setHide(outRankHide); + } + @Override public void onDestroy() { super.onDestroy(); diff --git a/main/src/main/res/layout/item_main_list_head.xml b/main/src/main/res/layout/item_main_list_head.xml index cb4887455..0fb7abd0e 100644 --- a/main/src/main/res/layout/item_main_list_head.xml +++ b/main/src/main/res/layout/item_main_list_head.xml @@ -140,7 +140,7 @@ android:background="@drawable/background_dbdbdb" android:button="@null" android:gravity="center" - android:text="已关注" + android:text="@string/shield_gift_effect" android:textColor="@color/white" android:textSize="11sp" /> diff --git a/main/src/main/res/mipmap-xxxhdpi/hide.png b/main/src/main/res/mipmap-xxxhdpi/hide.png new file mode 100644 index 0000000000000000000000000000000000000000..35dfadbaa7ea6708b735330f81c107e5ef20183c GIT binary patch literal 30021 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�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