Browse Source

增加IM头像点击

Pq 9 months ago
parent
commit
8fcb512520

+ 1 - 0
BaseLibrary/build.gradle

@@ -147,6 +147,7 @@ dependencies {
     api "de.hdodenhof:circleimageview:2.2.0"
 
     api 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+//    api 'io.github.lucksiege:pictureselector:v2.7.3-rc10'
 
     api "com.github.tbruyelle:rxpermissions:0.12"
 

+ 7 - 2
BaseLibrary/src/main/java/com/cooleshow/base/utils/TimeUtils.java

@@ -183,7 +183,7 @@ public final class TimeUtils {
     public static Date string2Date(final String time, @NonNull final DateFormat format) {
         try {
             return format.parse(time);
-        } catch (ParseException e) {
+        } catch (Exception e) {
             e.printStackTrace();
         }
         return null;
@@ -219,7 +219,12 @@ public final class TimeUtils {
      * @return the formatted time string
      */
     public static String date2String(final Date date, @NonNull final DateFormat format) {
-        return format.format(date);
+        try {
+            return format.format(date);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return "";
     }
 
     /**

+ 1 - 0
TUIKit/TIMCommon/timcommon/src/main/java/com/tencent/qcloud/tuikit/timcommon/component/MessageProperties.java

@@ -284,5 +284,6 @@ public class MessageProperties implements IMessageProperties {
 
     public interface OnEventListener {
         boolean onMessageClick(TUIMessageBean messageBean);
+        boolean onAvatarClick(TUIMessageBean messageBean);
     }
 }

+ 4 - 0
TUIKit/TUIChat/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIBaseChatFragment.java

@@ -196,6 +196,10 @@ public class TUIBaseChatFragment extends BaseFragment {
                 if (null == message) {
                     return;
                 }
+                MessageProperties.OnEventListener eventListener = MessageProperties.getInstance().getEventListener();
+                if (eventListener != null && eventListener.onAvatarClick(message)) {
+                    return;
+                }
 
                 String userID = null;
                 if (message.getV2TIMMessage().getGroupID() != null) {

+ 4 - 1
TUIKit/TUIChat/tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/page/TUIGroupChatFragment.java

@@ -82,7 +82,10 @@ public class TUIGroupChatFragment extends TUIBaseChatFragment {
                 if (null == messageBean) {
                     return;
                 }
-
+                MessageProperties.OnEventListener eventListener = MessageProperties.getInstance().getEventListener();
+                if (eventListener != null && eventListener.onAvatarClick(messageBean)) {
+                    return;
+                }
                 ChatInfo info = new ChatInfo();
                 info.setId(messageBean.getSender());
 

+ 1 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/adapter/ContactListAdapter.java

@@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView;
 public class ContactListAdapter extends BaseQuickAdapter<ContactListBean, BaseViewHolder> {
     public ContactListAdapter() {
         super(R.layout.tc_item_contact_person_list_layout);
+        addChildClickViewIds(R.id.iv_icon);
     }
 
     @Override

+ 1 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/adapter/GroupMemberAdapter.java

@@ -28,6 +28,7 @@ public class GroupMemberAdapter extends BaseQuickAdapter<GroupMemberBean, BaseVi
     public GroupMemberAdapter(List<GroupMemberBean> data) {
         super(R.layout.tc_group_member_list_item, data);
         currentId = UserHelper.getImUserId();
+        addChildClickViewIds(R.id.iv_icon);
     }
 
 

+ 10 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/api/IMApi.java

@@ -8,6 +8,7 @@ import com.cooleshow.chatmodule.bean.GroupApplyBean;
 import com.cooleshow.chatmodule.bean.GroupMemberBean;
 import com.cooleshow.chatmodule.bean.GroupNoticeBean;
 import com.cooleshow.chatmodule.bean.IMGroupInfo;
+import com.cooleshow.chatmodule.bean.IMUserInfo;
 import com.cooleshow.chatmodule.bean.MusicSheetListBean;
 
 import java.util.List;
@@ -176,4 +177,13 @@ public interface IMApi {
 
     @POST("{group_name}" + "/imGroup/muteAll")
     Observable<BaseResponse<Object>> groupMute(@Body RequestBody body,@Path("group_name")String group_name);
+
+    /**
+     * 根据用户编号获取用户基本信息-老师
+     *
+     * @param userId
+     * @return
+     */
+    @POST("{group_name}" + "/imUserFriend/getDetail/{imUserId}")
+    Observable<BaseResponse<IMUserInfo>> queryFriendDetail(@Path("group_name")String group_name,@Path("imUserId") String imUserId);
 }

+ 236 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/bean/IMUserInfo.java

@@ -0,0 +1,236 @@
+package com.cooleshow.chatmodule.bean;
+
+
+public class IMUserInfo {
+
+    /**
+     * "createTime": "",
+     * "friendAvatar": "",
+     * "friendId": 0,
+     * "friendNickname": "",
+     * "id": 0,
+     * "memo": "",
+     * "updateTime": "",
+     * "userId": 0
+     */
+    private String createTime;
+    private String friendAvatar;
+    private String friendId;
+    private String friendNickname;
+    private String friendBirthdate;
+    private String friendGender;
+    private String friendSubjectName;
+    private String friendType;
+    private String roleType;
+    private long id;
+    private String memo;
+    private String updateTime;
+    private String userId;
+    private String extra;
+    private String imFriendId;
+    private VipBean userVip;
+
+    public String getFriendType() {
+        return friendType;
+    }
+
+    public void setFriendType(String friendType) {
+        this.friendType = friendType;
+    }
+
+    public String getFriendBirthdate() {
+        return friendBirthdate;
+    }
+
+    public void setFriendBirthdate(String friendBirthdate) {
+        this.friendBirthdate = friendBirthdate;
+    }
+
+    public String getFriendGender() {
+        return friendGender;
+    }
+
+    public void setFriendGender(String friendGender) {
+        this.friendGender = friendGender;
+    }
+
+    public String getFriendSubjectName() {
+        return friendSubjectName;
+    }
+
+    public void setFriendSubjectName(String friendSubjectName) {
+        this.friendSubjectName = friendSubjectName;
+    }
+
+    public VipBean getUserVip() {
+        return userVip;
+    }
+
+    public void setUserVip(VipBean userVip) {
+        this.userVip = userVip;
+    }
+
+    public String getImFriendId() {
+        return imFriendId;
+    }
+
+    public void setImFriendId(String imFriendId) {
+        this.imFriendId = imFriendId;
+    }
+
+    public String getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(String roleType) {
+        this.roleType = roleType;
+    }
+
+    public String getExtra() {
+        return extra;
+    }
+
+    public void setExtra(String extra) {
+        this.extra = extra;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getFriendAvatar() {
+        return friendAvatar;
+    }
+
+    public void setFriendAvatar(String friendAvatar) {
+        this.friendAvatar = friendAvatar;
+    }
+
+    public String getFriendId() {
+        return friendId;
+    }
+
+    public void setFriendId(String friendId) {
+        this.imFriendId = friendId;
+    }
+
+    public String getFriendNickname() {
+        return friendNickname;
+    }
+
+    public void setFriendNickname(String friendNickname) {
+        this.friendNickname = friendNickname;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public static class VipBean {
+        private String expireVipType;
+        private String vipType;
+        private String vipEndDate;
+        private String svipEndDate;
+        private String vipEndDays;
+        private String svipEndDays;
+        private String svipExpireDays;
+        private String vipExpireDays;
+
+        public String getSvipExpireDays() {
+            return svipExpireDays;
+        }
+
+        public void setSvipExpireDays(String svipExpireDays) {
+            this.svipExpireDays = svipExpireDays;
+        }
+
+        public String getVipExpireDays() {
+            return vipExpireDays;
+        }
+
+        public void setVipExpireDays(String vipExpireDays) {
+            this.vipExpireDays = vipExpireDays;
+        }
+
+        public String getExpireVipType() {
+            return expireVipType;
+        }
+
+        public void setExpireVipType(String expireVipType) {
+            this.expireVipType = expireVipType;
+        }
+
+        public String getVipType() {
+            return vipType;
+        }
+
+        public void setVipType(String vipType) {
+            this.vipType = vipType;
+        }
+
+        public String getVipEndDate() {
+            return vipEndDate;
+        }
+
+        public void setVipEndDate(String vipEndDate) {
+            this.vipEndDate = vipEndDate;
+        }
+
+        public String getSvipEndDate() {
+            return svipEndDate;
+        }
+
+        public void setSvipEndDate(String svipEndDate) {
+            this.svipEndDate = svipEndDate;
+        }
+
+        public String getVipEndDays() {
+            return vipEndDays;
+        }
+
+        public void setVipEndDays(String vipEndDays) {
+            this.vipEndDays = vipEndDays;
+        }
+
+        public String getSvipEndDays() {
+            return svipEndDays;
+        }
+
+        public void setSvipEndDays(String svipEndDays) {
+            this.svipEndDays = svipEndDays;
+        }
+    }
+
+}

+ 22 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/ui/ChatFragment.java

@@ -18,9 +18,12 @@ import com.cooleshow.chatmodule.constants.TCChatRouterPath;
 import com.cooleshow.chatmodule.contract.IUnReadMessageObserver;
 import com.cooleshow.chatmodule.databinding.TcFragmentChatLayoutBinding;
 import com.cooleshow.chatmodule.manager.IMCenter;
+import com.cooleshow.chatmodule.utils.helper.ChatAvatarClickHelper;
 import com.cooleshow.chatmodule.utils.helper.IMThemManager;
 import com.google.android.material.tabs.TabLayout;
 import com.google.android.material.tabs.TabLayoutMediator;
+import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
+import com.tencent.qcloud.tuikit.timcommon.component.MessageProperties;
 
 import java.util.ArrayList;
 
@@ -90,6 +93,25 @@ public class ChatFragment extends BaseFragment<TcFragmentChatLayoutBinding> impl
             public void onTabReselected(TabLayout.Tab tab) {
             }
         });
+
+
+        MessageProperties.getInstance().setOnEventListener(new MessageProperties.OnEventListener() {
+            @Override
+            public boolean onMessageClick(TUIMessageBean messageBean) {
+                return false;
+            }
+
+            @Override
+            public boolean onAvatarClick(TUIMessageBean messageBean) {
+                if (messageBean == null) {
+                    return false;
+                }
+                if (ChatAvatarClickHelper.onAvatarClick(messageBean.getSender())) {
+                    return true;
+                }
+                return false;
+            }
+        });
     }
 
     @Override

+ 14 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/ui/ContactPersonListFragment.java

@@ -10,6 +10,7 @@ import android.view.View;
 import android.widget.PopupWindow;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.constanst.LoginStatusConstants;
@@ -27,6 +28,7 @@ import com.cooleshow.chatmodule.constants.IMConstants;
 import com.cooleshow.chatmodule.contract.ContactListFragmentContract;
 import com.cooleshow.chatmodule.databinding.TcFragmentContactListLayoutBinding;
 import com.cooleshow.chatmodule.presenter.ContactListPresenter;
+import com.cooleshow.chatmodule.utils.helper.ChatAvatarClickHelper;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.chatmodule.utils.helper.IMThemManager;
 import com.cooleshow.chatmodule.widget.CustomIndexBarDataHelperImpl;
@@ -120,6 +122,18 @@ public class ContactPersonListFragment extends BaseMVPFragment<TcFragmentContact
             }
         });
 
+        mListAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < mListAdapter.getData().size()) {
+                    ContactListBean contactListBean = mListAdapter.getData().get(position);
+                    if (view.getId() == R.id.iv_icon) {
+                        ChatAvatarClickHelper.onAvatarClick(contactListBean.getImFriendId());
+                    }
+                }
+            }
+        });
+
         mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
             @Override
             public void onRefresh(@NonNull RefreshLayout refreshLayout) {

+ 16 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/ui/GroupMemberActivity.java

@@ -10,18 +10,22 @@ import android.widget.TextView;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemChildClickListener;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.DensityUtil;
 import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.chatmodule.R;
 import com.cooleshow.chatmodule.adapter.GroupMemberAdapter;
+import com.cooleshow.chatmodule.bean.ContactListBean;
 import com.cooleshow.chatmodule.bean.GroupMemberBean;
 import com.cooleshow.chatmodule.constants.TCChatRouterPath;
 import com.cooleshow.chatmodule.contract.GroupMemberContract;
 import com.cooleshow.chatmodule.databinding.TcActivityGroupMemberBinding;
 import com.cooleshow.chatmodule.presenter.GroupMemberPresenter;
+import com.cooleshow.chatmodule.utils.helper.ChatAvatarClickHelper;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.chatmodule.utils.helper.IMThemManager;
 import com.cooleshow.usercenter.helper.UserHelper;
@@ -105,6 +109,18 @@ public class GroupMemberActivity extends BaseMVPActivity<TcActivityGroupMemberBi
             }
         });
 
+        adapter.setOnItemChildClickListener(new OnItemChildClickListener() {
+            @Override
+            public void onItemChildClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < adapter.getData().size()) {
+                    GroupMemberBean groupMemberBean = GroupMemberActivity.this.adapter.getData().get(position);
+                    if (view.getId() == R.id.iv_icon) {
+                        ChatAvatarClickHelper.onAvatarClick(groupMemberBean.getImUserId());
+                    }
+                }
+            }
+        });
+
     }
 
     @Override

+ 22 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/utils/helper/ChatAvatarClickHelper.java

@@ -0,0 +1,22 @@
+package com.cooleshow.chatmodule.utils.helper;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.usercenter.helper.UserHelper;
+
+/**
+ * Author by pq, Date on 2024/7/23.
+ */
+public class ChatAvatarClickHelper {
+    public static boolean onAvatarClick(String targetId) {
+        boolean customerService = UserHelper.isCustomerService();
+        if (!customerService) {
+            //非客服账号,不予处理
+            return false;
+        }
+        ARouter.getInstance().build(RouterPath.MineCenter.LOOK_USER_DETAIL)
+                .withString("targetUserId", targetId)
+                .navigation();
+        return true;
+    }
+}

+ 3 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/UserDetailContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.chatmodule.bean.IMUserInfo;
 import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
 
 /**
@@ -12,6 +13,8 @@ import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
 public interface UserDetailContract {
     interface View extends BaseView {
 
+        void queryFriendDetailSuccess(IMUserInfo data);
+
     }
     interface Presenter {
     }

+ 9 - 13
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/LookUserDetailPresenter.java

@@ -3,6 +3,8 @@ package com.cooleshow.teacher.presenter.mine;
 import com.cooleshow.base.common.BaseConstant;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.chatmodule.api.IMApi;
+import com.cooleshow.chatmodule.bean.IMUserInfo;
 import com.cooleshow.teacher.contract.UserDetailContract;
 import com.cooleshow.usercenter.data.api.UserApi;
 
@@ -17,23 +19,17 @@ import java.util.Map;
  */
 public class LookUserDetailPresenter extends BasePresenter<UserDetailContract.View> implements UserDetailContract.Presenter {
     /**
-     * 图片验证码验证
+     * 查询人员详情信息
      *
-     * @param phone
-     * @param imgCode
+     * @param
+     * @param
      */
-    public void verifyImgCode(String phone, String imgCode) {
-        if (getView() != null) {
-            getView().showLoading();
-        }
-        Map<String, String> params = new HashMap<>();
-        params.put("code", imgCode);
-        params.put("phone", phone);
-        addSubscribe(create(UserApi.class).verifyImgCode(params, BaseConstant.getClientGroup()), new BaseObserver<Object>(getView()) {
+    public void queryFriendDetail(String imUserId) {
+        addSubscribe(create(IMApi.class).queryFriendDetail(BaseConstant.getClientGroup(),imUserId), new BaseObserver<IMUserInfo>(getView()) {
             @Override
-            protected void onSuccess(Object data) {
+            protected void onSuccess(IMUserInfo data) {
                 if (getView() != null) {
-//                    getView().verifyImgCodeSuccess(phone);
+                    getView().queryFriendDetailSuccess(data);
                 }
             }
 

+ 152 - 6
teacher/src/main/java/com/cooleshow/teacher/ui/mine/UserDetailActivity.java

@@ -1,19 +1,38 @@
 package com.cooleshow.teacher.ui.mine;
 
 import android.graphics.Color;
+import android.text.TextUtils;
+import android.view.View;
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.EVipType;
+import com.cooleshow.base.constanst.ExpireVipType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.DateUtil;
+import com.cooleshow.base.utils.GlideImageLoaderUtils;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.chatmodule.bean.IMUserInfo;
+import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.contract.UserDetailContract;
 import com.cooleshow.teacher.databinding.AcUserDetailLayoutBinding;
 import com.cooleshow.teacher.presenter.mine.LookUserDetailPresenter;
+import com.cooleshow.usercenter.bean.TeacherUserInfo;
+
+import java.util.Date;
 
 /**
  * Author by pq, Date on 2024/7/22.
  */
 @Route(path = RouterPath.MineCenter.LOOK_USER_DETAIL)
-public class UserDetailActivity extends BaseMVPActivity<AcUserDetailLayoutBinding, LookUserDetailPresenter> {
+public class UserDetailActivity extends BaseMVPActivity<AcUserDetailLayoutBinding, LookUserDetailPresenter> implements UserDetailContract.View {
+    public static final String VIP_STATUS_NOT_OPEN = "not_open";
+    public static final String VIP_STATUS_NORMAL = "isOpen";
+    public static final String VIP_STATUS_EXPIRE = "vip_expire";
+    private String mTargetUserId;
+
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "");
@@ -21,6 +40,29 @@ public class UserDetailActivity extends BaseMVPActivity<AcUserDetailLayoutBindin
     }
 
     @Override
+    public void initData() {
+        super.initData();
+        mTargetUserId = getIntent().getStringExtra("targetUserId");
+        if (TextUtils.isEmpty(mTargetUserId)) {
+            finish();
+            return;
+        }
+
+        viewBinding.tvSendMsg.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                ChatHelper.getInstance().goChat(mTargetUserId, "");
+            }
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        presenter.queryFriendDetail(mTargetUserId);
+    }
+
+    @Override
     protected AcUserDetailLayoutBinding getLayoutView() {
         return AcUserDetailLayoutBinding.inflate(getLayoutInflater());
     }
@@ -30,14 +72,118 @@ public class UserDetailActivity extends BaseMVPActivity<AcUserDetailLayoutBindin
         return new LookUserDetailPresenter();
     }
 
-    public void updateStyle() {
-        boolean issvip = false;
+    public void updateStyle(IMUserInfo info) {
+        if (viewBinding == null) {
+            return;
+        }
+        //名称
+        viewBinding.tvName.setText(info.getFriendNickname());
+        boolean isStudent = TextUtils.equals(info.getFriendType(), "STUDENT");
+        viewBinding.ivUserTag.setImageResource(isStudent ? R.drawable.icon_student_tag2 : R.drawable.icon_teacher_tag2);
+        //头像
+        GlideImageLoaderUtils.getInstance().loadImage(this, info.getFriendAvatar(), viewBinding.ivAvatar, R.drawable.icon_teacher_default_head);
+
+        //id
+        viewBinding.tvUserIdValue.setText(info.getFriendId());
+
+        if (!TextUtils.isEmpty(info.getFriendGender()) && TextUtils.equals(info.getFriendGender(), "0")) {
+            //女
+            viewBinding.tvSexValue.setText("女");
+        } else {
+            //男
+            viewBinding.tvSexValue.setText("男");
+        }
+
+        //出生年月日
+        Date date = TimeUtils.string2Date(info.getFriendBirthdate());
+        String s = TimeUtils.date2String(date, TimeUtils.getSafeDateFormatForDay());
+        viewBinding.tvBirthdayValue.setText(s);
+        //声部
+        viewBinding.tvSubjectValue.setText(info.getFriendSubjectName());
+
+        //vip
+        handleVipStyle(info);
+    }
+
+    private void handleVipStyle(IMUserInfo userInfo) {
+        //svip
+        String[] svipStatusAndTip = getVipStatusAndTip(userInfo.getUserVip(), EVipType.SVIP.getId());
+        boolean issvip = TextUtils.equals(svipStatusAndTip[0], VIP_STATUS_NORMAL);
         int svipDrawable = issvip ? com.cooleshow.base.R.drawable.icon_mine_svip_star : com.cooleshow.base.R.drawable.icon_mine_svip_star_disable;
-        int vipDrawable = issvip ? com.cooleshow.base.R.drawable.icon_mine_vip_star : com.cooleshow.base.R.drawable.icon_mine_vip_star_disable;
         viewBinding.tvSvipTitle.setCompoundDrawablesWithIntrinsicBounds(svipDrawable, 0, 0, 0);
+        viewBinding.tvSvipValue.setText(svipStatusAndTip[1]);
+        viewBinding.tvSvipValue.setTextColor(getResources().getColor(issvip ? com.cooleshow.base.R.color.color_ff623a : com.cooleshow.base.R.color.color_aaaaaa));
+
+        //vip
+        String[] vipStatusAndTip = getVipStatusAndTip(userInfo.getUserVip(), EVipType.VIP.getId());
+        boolean isVip = TextUtils.equals(vipStatusAndTip[0], VIP_STATUS_NORMAL);
+        int vipDrawable = isVip ? com.cooleshow.base.R.drawable.icon_mine_vip_star : com.cooleshow.base.R.drawable.icon_mine_vip_star_disable;
         viewBinding.tvVipTitle.setCompoundDrawablesWithIntrinsicBounds(vipDrawable, 0, 0, 0);
+        viewBinding.tvVipValue.setText(vipStatusAndTip[1]);
+        viewBinding.tvVipValue.setTextColor(getResources().getColor(isVip ? com.cooleshow.base.R.color.color_ff623a : com.cooleshow.base.R.color.color_aaaaaa));
+    }
 
-        boolean isStudent = false;
-        viewBinding.ivUserTag.setImageResource(isStudent ? R.drawable.icon_student_tag2 : R.drawable.icon_teacher_tag2);
+    private String[] getVipStatusAndTip(IMUserInfo.VipBean userVip, String target) {
+        String[] results = new String[2];
+        try {
+            EVipType eVipType;
+            if (userVip == null || TextUtils.isEmpty(userVip.getVipType())) {
+                eVipType = EVipType.NOT_VIP;
+            } else {
+                eVipType = EVipType.valueOf(userVip.getVipType());
+            }
+            if (eVipType == EVipType.NOT_VIP) {
+                //非会员
+                if (userVip != null && !TextUtils.isEmpty(userVip.getExpireVipType())) {
+                    //过期
+                    results[0] = VIP_STATUS_EXPIRE;
+                    results[1] = "暂未开通";
+                    if (TextUtils.equals(userVip.getExpireVipType(), ExpireVipType.ALL_VIP.getId())) {
+                        results[1] = "已过期%s天";
+                    }
+                    if (TextUtils.equals(userVip.getExpireVipType(), target)) {
+                        results[1] = String.format("已过期%s天", getExpireDaysTip(target, userVip));
+                    }
+                } else {
+                    //未开通会员
+                    results[0] = VIP_STATUS_NOT_OPEN;
+                    results[1] = "暂未开通";
+                }
+            } else {
+                //会员
+                results[0] = VIP_STATUS_NORMAL;
+                boolean isPermanentVip = eVipType == EVipType.PERMANENT_SVIP;
+                if (isPermanentVip) {
+                    results[1] = "永久有效";
+                } else {
+                    results[1] = String.format("剩余%s天", getDaysTip(target, userVip));
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return results;
+    }
+
+    private String getDaysTip(String target, IMUserInfo.VipBean userVip) {
+        if (TextUtils.equals(target, EVipType.SVIP.getId())) {
+            return userVip.getSvipEndDays();
+        }
+        return userVip.getVipEndDays();
+    }
+
+    private String getExpireDaysTip(String target, IMUserInfo.VipBean userVip) {
+        if (TextUtils.equals(target, EVipType.SVIP.getId())) {
+            return userVip.getSvipExpireDays();
+        }
+        return userVip.getVipExpireDays();
+    }
+
+    @Override
+    public void queryFriendDetailSuccess(IMUserInfo data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        updateStyle(data);
     }
 }