diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ddc202620..5793f2f55 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1245,6 +1245,10 @@
android:name=".vip.VipMainActivity"
android:screenOrientation="portrait" />
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java
index 13e5192fc..8a09b2d6f 100644
--- a/app/src/main/java/com/yizhuan/erban/MainActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java
@@ -123,6 +123,7 @@ import com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel;
import com.yizhuan.xchat_android_core.community.attachment.DynamicSysAttachment;
import com.yizhuan.xchat_android_core.community.event.SquareTaskEvent;
import com.yizhuan.xchat_android_core.community.event.UnReadCountEvent;
+import com.yizhuan.xchat_android_core.home.event.VisitorUnreadCountEvent;
import com.yizhuan.xchat_android_core.user.bean.ProtocolInfo;
import com.yizhuan.xchat_android_core.community.im.WorldDynamicAttachment;
import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
@@ -1106,6 +1107,13 @@ public class MainActivity extends BaseMvpActivity
CommonWebViewActivity.start(event.getContext(), event.getUrl());
}
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onVisitorUnreadCountEvent(VisitorUnreadCountEvent event) {
+ if (mMainTabLayout != null) {
+ mMainTabLayout.setUnreadVisitorCount(event.getVisitNum());
+ }
+ }
+
@Override
public void onClick(View v) {
switch (v.getId()) {
diff --git a/app/src/main/java/com/yizhuan/erban/home/activity/VisitorListActivity.kt b/app/src/main/java/com/yizhuan/erban/home/activity/VisitorListActivity.kt
new file mode 100644
index 000000000..357615283
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/activity/VisitorListActivity.kt
@@ -0,0 +1,77 @@
+package com.yizhuan.erban.home.activity
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.Intent
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.netease.nim.uikit.StatusBarUtil
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.common.EmptyViewHelper
+import com.yizhuan.erban.databinding.ActivityVisitorListBinding
+import com.yizhuan.erban.home.adapter.VisitorListAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.home.bean.VisitorInfo
+import com.yizhuan.xchat_android_core.user.UserModel
+import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
+
+@ActLayoutRes(R.layout.activity_visitor_list)
+class VisitorListActivity : BaseViewBindingActivity() {
+
+ private lateinit var rvDelegate: RVDelegate
+
+ companion object {
+ @JvmStatic
+ fun start(context: Context) {
+ val starter = Intent(context, VisitorListActivity::class.java)
+ context.startActivity(starter)
+ }
+ }
+
+ private var pageNum = 1
+ private val pageSize = 20
+
+ @SuppressLint("CheckResult")
+ override fun init() {
+ initTitleBar("访客记录")
+ rvDelegate = RVDelegate.Builder()
+ .setRefreshLayout(binding.swipeRefresh)
+ .setLayoutManager(LinearLayoutManager(this))
+ .setRecyclerView(binding.recyclerView)
+ .setAdapter(VisitorListAdapter())
+ .setPageSize(pageSize)
+ .setEmptyView(EmptyViewHelper.createEmptyView(this, "暂未有人到访"))
+ .build()
+
+ rvDelegate.adapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
+
+ binding.swipeRefresh.setOnRefreshListener {
+ loadData(true)
+ }
+
+ loadData(true)
+ }
+
+ @SuppressLint("CheckResult")
+ private fun loadData(refresh: Boolean) {
+ pageNum = if (refresh) 1 else pageNum + 1
+ UserModel.get().getVisitorUserList(pageNum, pageSize)
+ .compose(bindToLifecycle())
+ .subscribe(
+ {
+ rvDelegate.loadData(it, refresh)
+ },
+ {
+ rvDelegate.loadErr(true)
+ }
+ )
+ }
+
+ override fun needSteepStateBar() = true
+
+ override fun setStatusBar() {
+ super.setStatusBar()
+ StatusBarUtil.transparencyBar(this)
+ StatusBarUtil.StatusBarLightMode(this)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/VisitorListAdapter.java b/app/src/main/java/com/yizhuan/erban/home/adapter/VisitorListAdapter.java
new file mode 100644
index 000000000..6e1e3eb7a
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/adapter/VisitorListAdapter.java
@@ -0,0 +1,49 @@
+package com.yizhuan.erban.home.adapter;
+
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.yizhuan.erban.R;
+import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
+import com.yizhuan.erban.ui.user.UserInfoActivity;
+import com.yizhuan.erban.ui.utils.ImageLoadUtils;
+import com.yizhuan.xchat_android_core.home.bean.VisitorInfo;
+
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * create by lvzebiao @2019/11/13
+ * 人气主播更多
+ */
+public class VisitorListAdapter extends BaseQuickAdapter {
+
+
+ public VisitorListAdapter() {
+ super(R.layout.item_home_visitor_list);
+ }
+
+ @Override
+ protected void convert(@NotNull BaseViewHolder helper, VisitorInfo item) {
+ if (item == null) {
+ return;
+ }
+
+ ImageLoadUtils.loadAvatar(mContext,
+ item.getAvatar(),
+ helper.getView(R.id.iv_avatar)
+ );
+ helper.setText(R.id.tv_nickname, item.getNick())
+ .setText(R.id.tv_id, "大鹅号:" + item.getErbanNo())
+ .setText(R.id.tv_time, item.getVisitTimeDesc())
+ .setImageResource(R.id.iv_gender, item.getGender() == 1 ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);
+
+ helper.getView(R.id.iv_avatar).setOnClickListener(v ->
+ UserInfoActivity.Companion.start(mContext, item.getUid())
+ );
+
+ helper.getView(R.id.iv_msg).setOnClickListener(v ->
+ NimP2PMessageActivity.start(mContext, String.valueOf(item.getUid()))
+ );
+ }
+
+}
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
index 7c8e59471..d4f428660 100644
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.java
@@ -4,6 +4,7 @@ import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUS
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
+import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
@@ -22,6 +23,7 @@ import com.yizhuan.erban.decoration.view.MyDecorationActivity;
import com.yizhuan.erban.flutter.RouterConstants;
import com.yizhuan.erban.flutter.event.ShowInviteEvent;
import com.yizhuan.erban.home.activity.CollectionRoomActivity;
+import com.yizhuan.erban.home.activity.VisitorListActivity;
import com.yizhuan.erban.home.helper.OpenRoomHelper;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.module_hall.hall.activity.ModuleClanActivity;
@@ -37,6 +39,7 @@ import com.yizhuan.erban.vip.VipHelper;
import com.yizhuan.erban.vip.VipMainActivity;
import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo;
+import com.yizhuan.xchat_android_core.home.event.VisitorUnreadCountEvent;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RelationShipEvent;
@@ -241,6 +244,19 @@ public class MeFragment extends BaseFragment implements View.OnClickListener {
mBinding.meItemInviteFlag.setVisibility(event.mShowInvite ? View.VISIBLE : View.GONE);
}
+ @SuppressLint("SetTextI18n")
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onVisitorUnreadCountEvent(VisitorUnreadCountEvent event) {
+ if (mBinding == null) return;
+ if (event.getVisitNum() == 0) {
+ mBinding.tvRedDot.setVisibility(View.GONE);
+ } else {
+ mBinding.tvRedDot.setVisibility(View.VISIBLE);
+ mBinding.tvRedDot.setText(event.getVisitNum() > 99 ? "99+" : String.valueOf(event.getVisitNum()));
+ }
+ }
+
+
private void requestUpdateUserInfo() {
if (mUserInfo != null) {
UserModel.get().updateCurrentUserInfo().subscribe();
@@ -345,6 +361,10 @@ public class MeFragment extends BaseFragment implements View.OnClickListener {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.Event.EVENT_VIP_ENTRANCE_ME_CLICK, "贵族我的入口点击事件");
break;
+ case R.id.me_item_visitor:
+ EventBus.getDefault().post(new VisitorUnreadCountEvent(0));
+ VisitorListActivity.start(mContext);
+ break;
default:
break;
}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
index 62c2d5314..460b10d32 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoActivity.java
@@ -140,7 +140,9 @@ public class UserInfoActivity extends BaseBindingActivity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml
index 0020f72c8..4f46a7f6c 100644
--- a/app/src/main/res/layout/fragment_me.xml
+++ b/app/src/main/res/layout/fragment_me.xml
@@ -627,6 +627,47 @@
android:textColor="@color/text_normal_c6c6e9"
android:textSize="13sp" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/main_tab_layout.xml b/app/src/main/res/layout/main_tab_layout.xml
index b3225f30c..a1c760fa8 100644
--- a/app/src/main/res/layout/main_tab_layout.xml
+++ b/app/src/main/res/layout/main_tab_layout.xml
@@ -59,7 +59,7 @@
app:tab_text_color="@color/main_tab_normal"
app:tab_text_color_select="@color/color_333333" />
- getProtocolInfo();
+
+ Single visitUserDetail(long uid);
+
+ Single> getVisitorUserList(int pageNum, int pageSize);
}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java
index ed15f07c4..6d2852ac9 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/UserModel.java
@@ -17,6 +17,7 @@ import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.bean.response.result.GiftWallListResult;
import com.yizhuan.xchat_android_core.bean.response.result.UserListResult;
import com.yizhuan.xchat_android_core.bean.response.result.UserResult;
+import com.yizhuan.xchat_android_core.home.bean.VisitorInfo;
import com.yizhuan.xchat_android_core.level.event.CharmLevelUpEvent;
import com.yizhuan.xchat_android_core.level.event.LevelUpEvent;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
@@ -800,6 +801,21 @@ public final class UserModel extends BaseModel implements IUserModel {
.compose(RxHelper.handleSchedulers());
}
+ @Override
+ public Single visitUserDetail(long uid) {
+ return api.visitUserDetail(uid)
+ .compose(RxHelper.handleStringData())
+ .compose(RxHelper.handleSchedulers());
+ }
+
+ @Override
+ public Single> getVisitorUserList(int pageNum, int pageSize) {
+ return api.getVisitorUserList(pageNum, pageSize)
+ .compose(RxHelper.handleBeanData())
+ .compose(RxHelper.handleSchedulers());
+ }
+
+
private interface Api {
/**
@@ -1021,5 +1037,22 @@ public final class UserModel extends BaseModel implements IUserModel {
*/
@GET("/user/latestPrivacyPolicy")
Single> getProtocolInfo();
+
+ /**
+ * 访客列表
+ *
+ * @return
+ */
+ @GET("/user/detail/visitUserDetail")
+ Single> visitUserDetail(@Query("uid") long uid);
+
+ /**
+ * 访客列表
+ *
+ * @return -
+ */
+ @GET("/uservisitrecord/visitUserList")
+ Single>> getVisitorUserList(@Query("pageNum") int pageNum,
+ @Query("pageSize") int pageSize);
}
}