ソースを参照

feat: 观众展示和私信等级

tongmengxiao 1 年間 前
コミット
2f02ad19df

+ 13 - 0
baseswago/src/main/java/com/swago/baseswago/model/UserInfoModel.java

@@ -99,6 +99,11 @@ public class UserInfoModel {
      */
      */
     private int is_password;
     private int is_password;
 
 
+    /**
+     * 是否充值用户
+     */
+    private int is_recharge;
+
     public String getUser_constellation() {
     public String getUser_constellation() {
         return user_constellation;
         return user_constellation;
     }
     }
@@ -394,4 +399,12 @@ public class UserInfoModel {
     public void setIs_password(int is_password) {
     public void setIs_password(int is_password) {
         this.is_password = is_password;
         this.is_password = is_password;
     }
     }
+
+    public int getIs_recharge() {
+        return is_recharge;
+    }
+
+    public void setIs_recharge(int is_recharge) {
+        this.is_recharge = is_recharge;
+    }
 }
 }

+ 12 - 0
baseswago/src/main/java/com/swago/baseswago/model/live/RoomModel.java

@@ -1,5 +1,7 @@
 package com.swago.baseswago.model.live;
 package com.swago.baseswago.model.live;
 
 
+import com.swago.baseswago.model.im.CusNewMsgBean;
+
 /**
 /**
  * @date 2021/10/18 16:59
  * @date 2021/10/18 16:59
  * description:房间模型
  * description:房间模型
@@ -51,6 +53,8 @@ public class RoomModel {
 
 
     private String broadcast_bg_url;
     private String broadcast_bg_url;
 
 
+    private CusNewMsgBean<RoomUserChangeModel> join_im_data;
+
     public String getRtc_token() {
     public String getRtc_token() {
         return rtc_token;
         return rtc_token;
     }
     }
@@ -266,4 +270,12 @@ public class RoomModel {
     public void setBroadcast_bg_url(String broadcast_bg_url) {
     public void setBroadcast_bg_url(String broadcast_bg_url) {
         this.broadcast_bg_url = broadcast_bg_url;
         this.broadcast_bg_url = broadcast_bg_url;
     }
     }
+
+    public CusNewMsgBean<RoomUserChangeModel> getJoin_im_data() {
+        return join_im_data;
+    }
+
+    public void setJoin_im_data(CusNewMsgBean<RoomUserChangeModel> join_im_data) {
+        this.join_im_data = join_im_data;
+    }
 }
 }

+ 8 - 0
room/src/main/java/com/swago/room/base/BaseComFragment.kt

@@ -345,6 +345,14 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
             }
             }
         }
         }
 
 
+        roomVm.joinRoomUserDataLiveData.observe(this) {
+            it?.let {
+                roomUserList.clear()
+                roomUserList.addAll(it.users)
+                (iHeader as ComHeaderView).updateRoomUser(roomUserList, it.count)
+            }
+        }
+
         msgVm.updateUserRoom = { data, count ->
         msgVm.updateUserRoom = { data, count ->
             roomUserList.clear()
             roomUserList.clear()
             roomUserList.addAll(data)
             roomUserList.addAll(data)

+ 8 - 0
room/src/main/java/com/swago/room/vm/RoomVm.kt

@@ -60,6 +60,9 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
                 val roomModel = ApiManager.roomApi.joinRoom(iRoomInfo.getRoomId())
                 val roomModel = ApiManager.roomApi.joinRoom(iRoomInfo.getRoomId())
                 val roomInfo = iRoomInfo as UserRoomModel
                 val roomInfo = iRoomInfo as UserRoomModel
                 roomInfo.roomModel = roomModel
                 roomInfo.roomModel = roomModel
+                roomModel.join_im_data?.let {
+                    joinRoomUserDataLiveData.value = roomModel.join_im_data.data
+                }
                 callback.invoke(true)
                 callback.invoke(true)
             }
             }
 
 
@@ -138,6 +141,11 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
         MutableLiveData<RoomUserModel?>()
         MutableLiveData<RoomUserModel?>()
     }
     }
 
 
+    //进入直播间观众列表
+    val joinRoomUserDataLiveData by lazy {
+        MutableLiveData<RoomUserChangeModel?>()
+    }
+
     fun loadRoomData(page:Int=1) {
     fun loadRoomData(page:Int=1) {
         requestData2 {
         requestData2 {
             requestData {
             requestData {

+ 17 - 0
tuikit/src/main/java/com/tencent/qcloud/tim/uikit/component/dialog/TUIKitDialog.java

@@ -29,6 +29,7 @@ public class TUIKitDialog {
     private Button mSureButton;
     private Button mSureButton;
     private ImageView mLineImg;
     private ImageView mLineImg;
     private Display mDisplay;
     private Display mDisplay;
+    private TextView mContentTv;
 
 
     /**
     /**
      * 是否显示title
      * 是否显示title
@@ -44,6 +45,11 @@ public class TUIKitDialog {
      */
      */
     private boolean showNegBtn = false;
     private boolean showNegBtn = false;
 
 
+    /***
+     * 是否显示内容按钮
+     * */
+    private boolean showContentBtn = false;
+
     /**
     /**
      * dialog  宽度
      * dialog  宽度
      */
      */
@@ -69,6 +75,8 @@ public class TUIKitDialog {
         mSureButton.setVisibility(View.GONE);
         mSureButton.setVisibility(View.GONE);
         mLineImg = (ImageView) view.findViewById(R.id.img_line);
         mLineImg = (ImageView) view.findViewById(R.id.img_line);
         mLineImg.setVisibility(View.GONE);
         mLineImg.setVisibility(View.GONE);
+        mContentTv = (TextView) view.findViewById(R.id.tv_content);
+        mContentTv.setVisibility(View.GONE);
 
 
         dialog = new Dialog(mContext, R.style.TUIKit_AlertDialogStyle);
         dialog = new Dialog(mContext, R.style.TUIKit_AlertDialogStyle);
         dialog.setContentView(view);
         dialog.setContentView(view);
@@ -126,6 +134,12 @@ public class TUIKitDialog {
         return this;
         return this;
     }
     }
 
 
+    public TUIKitDialog setContentButton(String text){
+        showContentBtn = true;
+        mContentTv.setText(text);
+        return this;
+    }
+
     public TUIKitDialog setPositiveButton(final View.OnClickListener listener) {
     public TUIKitDialog setPositiveButton(final View.OnClickListener listener) {
         setPositiveButton(TUIKit.getAppContext().getString(R.string.sure), listener);
         setPositiveButton(TUIKit.getAppContext().getString(R.string.sure), listener);
         return this;
         return this;
@@ -190,6 +204,9 @@ public class TUIKitDialog {
         if (!showPosBtn && showNegBtn) {
         if (!showPosBtn && showNegBtn) {
             mCancelButton.setVisibility(View.VISIBLE);
             mCancelButton.setVisibility(View.VISIBLE);
         }
         }
+        if (showContentBtn){
+            mContentTv.setVisibility(View.VISIBLE);
+        }
     }
     }
 
 
     public void show() {
     public void show() {

+ 38 - 9
tuikit/src/main/java/com/tencent/qcloud/tim/uikit/modules/chat/layout/input/InputLayout.java

@@ -30,6 +30,7 @@ import com.tencent.qcloud.tim.uikit.R;
 import com.tencent.qcloud.tim.uikit.TUIKit;
 import com.tencent.qcloud.tim.uikit.TUIKit;
 import com.tencent.qcloud.tim.uikit.base.IUIKitCallBack;
 import com.tencent.qcloud.tim.uikit.base.IUIKitCallBack;
 import com.tencent.qcloud.tim.uikit.component.AudioPlayer;
 import com.tencent.qcloud.tim.uikit.component.AudioPlayer;
+import com.tencent.qcloud.tim.uikit.component.dialog.TUIKitDialog;
 import com.tencent.qcloud.tim.uikit.component.face.Emoji;
 import com.tencent.qcloud.tim.uikit.component.face.Emoji;
 import com.tencent.qcloud.tim.uikit.component.face.FaceFragment;
 import com.tencent.qcloud.tim.uikit.component.face.FaceFragment;
 import com.tencent.qcloud.tim.uikit.component.face.FaceManager;
 import com.tencent.qcloud.tim.uikit.component.face.FaceManager;
@@ -541,19 +542,24 @@ public class InputLayout extends InputLayoutUI implements View.OnClickListener,
                     if (UserInfo.INSTANCE.getUserInfo().getPrivate_msg_status()==1){
                     if (UserInfo.INSTANCE.getUserInfo().getPrivate_msg_status()==1){
                         Toast.makeText(AppContext.getContext(), AppContext.getContext().getResources().getString(R.string.you_are_been_forbid), Toast.LENGTH_SHORT).show();
                         Toast.makeText(AppContext.getContext(), AppContext.getContext().getResources().getString(R.string.you_are_been_forbid), Toast.LENGTH_SHORT).show();
                     }else {
                     }else {
-                        if (mMessageHandler != null) {
-                            if(mChatLayout.getChatInfo().getType() == V2TIMConversation.V2TIM_GROUP && !atUserInfoMap.isEmpty()) {
-                                //发送时通过获取输入框匹配上@的昵称list,去从map中获取ID list。
-                                List<String> atUserList = updateAtUserList(mTextInput.getMentionList(true));
-                                if (atUserList == null || atUserList.isEmpty()) {
-                                    mMessageHandler.sendMessage(MessageInfoUtil.buildTextMessage(mTextInput.getText().toString().trim()));
+                        if (Integer.parseInt(UserInfo.INSTANCE.getUserInfo().getUser_level()) >=5 || Integer.parseInt(UserInfo.INSTANCE.getUserInfo().getUser_wealth_level()) >=5 || UserInfo.INSTANCE.getUserInfo().getIs_recharge() ==1){
+                            if (mMessageHandler != null) {
+                                if(mChatLayout.getChatInfo().getType() == V2TIMConversation.V2TIM_GROUP && !atUserInfoMap.isEmpty()) {
+                                    //发送时通过获取输入框匹配上@的昵称list,去从map中获取ID list。
+                                    List<String> atUserList = updateAtUserList(mTextInput.getMentionList(true));
+                                    if (atUserList == null || atUserList.isEmpty()) {
+                                        mMessageHandler.sendMessage(MessageInfoUtil.buildTextMessage(mTextInput.getText().toString().trim()));
+                                    }else {
+                                        mMessageHandler.sendMessage(MessageInfoUtil.buildTextAtMessage(atUserList, mTextInput.getText().toString().trim()));
+                                    }
                                 }else {
                                 }else {
-                                    mMessageHandler.sendMessage(MessageInfoUtil.buildTextAtMessage(atUserList, mTextInput.getText().toString().trim()));
+                                    mMessageHandler.sendMessage(MessageInfoUtil.buildTextMessage(mTextInput.getText().toString().trim()));
                                 }
                                 }
-                            }else {
-                                mMessageHandler.sendMessage(MessageInfoUtil.buildTextMessage(mTextInput.getText().toString().trim()));
+                            } else {
+                                showLevelDialog();
                             }
                             }
                         }
                         }
+
                     }
                     }
                 }else {
                 }else {
                     if (mMessageHandler != null) {
                     if (mMessageHandler != null) {
@@ -575,6 +581,29 @@ public class InputLayout extends InputLayoutUI implements View.OnClickListener,
         }
         }
     }
     }
 
 
+    private void showLevelDialog() {
+        TUIKitDialog tipsDialog = new TUIKitDialog(getContext())
+                .builder()
+                .setCancelable(true)
+                .setCancelOutside(true)
+                .setTitle(getContext().getString(R.string.use_chats_fulfilment_of_one_condition))
+                .setDialogWidth(0.75f)
+                .setContentButton(getContext().getString(R.string.use_chats_condition_content))
+                .setPositiveButton(getContext().getString(R.string.recharge), new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+
+                    }
+                })
+                .setNegativeButton(getContext().getString(R.string.ok), new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+
+                    }
+                });
+        tipsDialog.show();
+    }
+
     private List<String> updateAtUserList(List<String> atMentionList){
     private List<String> updateAtUserList(List<String> atMentionList){
         if (atMentionList == null || atMentionList.isEmpty()){
         if (atMentionList == null || atMentionList.isEmpty()){
             return null;
             return null;

+ 10 - 0
tuikit/src/main/res/layout/view_dialog.xml

@@ -18,6 +18,16 @@
         android:textSize="16sp"
         android:textSize="16sp"
         android:textStyle="bold" />
         android:textStyle="bold" />
 
 
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="18dp"
+        android:layout_marginRight="18dp"
+        android:layout_marginTop="15dp"
+        android:textColor="@color/black"
+        android:textSize="16sp"
+        android:visibility="gone"/>
 
 
     <LinearLayout
     <LinearLayout
         android:id="@+id/ll_alert"
         android:id="@+id/ll_alert"

+ 4 - 0
tuikit/src/main/res/values-zh-rCN/strings.xml

@@ -207,6 +207,10 @@
     <string name="video_extra">[视频]</string>
     <string name="video_extra">[视频]</string>
     <string name="audio_extra">[语音]</string>
     <string name="audio_extra">[语音]</string>
     <string name="file_extra">[文件]</string>
     <string name="file_extra">[文件]</string>
+    <string name="use_chats_fulfilment_of_one_condition">使用聊天功能需满足以下一个条件:</string>
+    <string name="use_chats_condition_content">\n1. 充值金额>0 \n2. 等级≥5级</string>
+    <string name="recharge">充值</string>
+    <string name="ok">好的</string>
 
 
     <string name="etc">等</string>
     <string name="etc">等</string>
     <string name="join_group">加入群组</string>
     <string name="join_group">加入群组</string>

+ 4 - 0
tuikit/src/main/res/values/strings.xml

@@ -207,6 +207,10 @@
     <string name="video_extra">[Video]</string>
     <string name="video_extra">[Video]</string>
     <string name="audio_extra">[Voice]</string>
     <string name="audio_extra">[Voice]</string>
     <string name="file_extra">[File]</string>
     <string name="file_extra">[File]</string>
+    <string name="use_chats_fulfilment_of_one_condition">Use of the chat function is subject to one of the following conditions:</string>
+    <string name="use_chats_condition_content">1. Recharge amount > 0 \n2. Level ≥5</string>
+    <string name="recharge">recharge</string>
+    <string name="ok">ok</string>
 
 
     <string name="etc">, etc.</string>
     <string name="etc">, etc.</string>
     <string name="join_group">Join Group</string>
     <string name="join_group">Join Group</string>