Forráskód Böngészése

feat: 开播密码

tongmengxiao 11 hónapja
szülő
commit
6d30dbaf1a

+ 2 - 0
baseswago/src/main/java/com/swago/baseswago/baseroom/IRoomInfo.kt

@@ -44,4 +44,6 @@ interface IRoomInfo {
     fun getLikeNum():String //获取点赞数
 
     fun getRoomBg():String //获取房间背景图
+
+    fun getPassStatus():Int //是否密码房(1是0否)
 }

+ 2 - 2
baseswago/src/main/java/com/swago/baseswago/inter/RoomApi.kt

@@ -43,7 +43,7 @@ interface RoomApi {
      */
     @FormUrlEncoded
     @POST("/v3/rtc/start/broadcast")
-    suspend fun startLive(@Field("broadcast_type")broadcast_type:Int,@Field("broadcast_bg_url")broadcast_bg_url:String): RoomModel
+    suspend fun startLive(@Field("broadcast_type")broadcast_type:Int,@Field("broadcast_bg_url")broadcast_bg_url:String,@Field("broadcast_password_status")broadcast_password_status:Int,@Field("broadcast_password")broadcast_password:String): RoomModel
 
 
     /**
@@ -58,7 +58,7 @@ interface RoomApi {
      */
     @FormUrlEncoded
     @POST("/v1/rtc/join/broadcast")
-    suspend fun joinRoom(@Field("room_id") room_id: String): RoomModel
+    suspend fun joinRoom(@Field("room_id") room_id: String,@Field("broadcast_password")broadcast_password:String?=""): RoomModel
 
     /**
      * 退出房间

+ 11 - 0
baseswago/src/main/java/com/swago/baseswago/model/MomentModel.java

@@ -32,6 +32,7 @@ public class MomentModel implements Parcelable {
     private int is_crown;
     private int is_cup;
     private int user_broadcast_type; //直播间类型(1视频2语音)
+    private int broadcast_password_status;//是否密码房(1是0否)
 
     public MomentModel(){
 
@@ -53,6 +54,7 @@ public class MomentModel implements Parcelable {
         is_crown = in.readInt();
         is_cup = in.readInt();
         user_broadcast_type = in.readInt();
+        broadcast_password_status = in.readInt();
     }
 
     @Override
@@ -72,6 +74,7 @@ public class MomentModel implements Parcelable {
         dest.writeInt(is_crown);
         dest.writeInt(is_cup);
         dest.writeInt(user_broadcast_type);
+        dest.writeInt(broadcast_password_status);
     }
 
     @Override
@@ -226,4 +229,12 @@ public class MomentModel implements Parcelable {
     public void setUser_broadcast_type(int user_broadcast_type) {
         this.user_broadcast_type = user_broadcast_type;
     }
+
+    public int getBroadcast_password_status() {
+        return broadcast_password_status;
+    }
+
+    public void setBroadcast_password_status(int broadcast_password_status) {
+        this.broadcast_password_status = broadcast_password_status;
+    }
 }

+ 9 - 0
baseswago/src/main/java/com/swago/baseswago/model/live/EnterPasswordModel.kt

@@ -0,0 +1,9 @@
+package com.swago.baseswago.model.live
+
+import com.swago.baseswago.baseroom.IRoomInfo
+
+data class EnterPasswordModel(
+    var roleType: Int,
+    var iRoomInfo: IRoomInfo,
+    var callback: (canJoinRoom: Boolean) -> Unit
+)

+ 7 - 0
home/src/main/java/com/swago/home/innerhome/HomeAdapter.kt

@@ -42,6 +42,13 @@ class HomeAdapter  : BaseQuickAdapter<MomentModel, BaseViewHolder>(R.layout.item
             }else{
                 setVisible(R.id.ivLive,false)
             }
+
+            if (item.broadcast_password_status == 1){
+                setVisible(R.id.ivPassword , true)
+            } else {
+
+                setVisible(R.id.ivPassword , false)
+            }
 //            setImageResource(R.id.ivCountry,R.drawable.flag_ac)
         }
     }

+ 1 - 0
home/src/main/res/layout/item_home.xml

@@ -23,6 +23,7 @@
         android:layout_height="18dp"/>
 
     <ImageView
+        android:id="@+id/ivPassword"
         android:layout_width="22dp"
         android:layout_height="15dp"
         android:layout_marginTop="8dp"

+ 4 - 0
room/src/main/java/com/swago/room/anchor/AnchorRoomActivity.kt

@@ -253,6 +253,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
                                             userModel.roomType = roomType
                                             userModel.selectedBgUrl = selectedBgUrl
                                             userModel.password = password
+                                            userModel.passwordStatus = 1
                                             SwagoRoomManager.changeRoom(userModel)
                                             if (roomType == RoomType.VIDEO){
                                                 anchorRoomFragment?.setAudioRvState(false)
@@ -264,6 +265,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
                                     val userModel = UserRoomModel()
                                     userModel.roomType = roomType
                                     userModel.selectedBgUrl = selectedBgUrl
+                                    userModel.passwordStatus = 0
                                     SwagoRoomManager.changeRoom(userModel)
                                     if (roomType == RoomType.VIDEO){
                                         anchorRoomFragment?.setAudioRvState(false)
@@ -287,6 +289,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
                                 userModel.roomType = roomType
                                 userModel.selectedBgUrl = selectedBgUrl
                                 userModel.password = password
+                                userModel.passwordStatus = 1
                                 SwagoRoomManager.changeRoom(userModel)
                                 if (roomType == RoomType.VIDEO){
                                     anchorRoomFragment?.setAudioRvState(false)
@@ -298,6 +301,7 @@ class AnchorRoomActivity : AbsAnchorActivity<ActivityAnchorRoomBinding, IRoomInf
                         val userModel = UserRoomModel()
                         userModel.roomType = roomType
                         userModel.selectedBgUrl = selectedBgUrl
+                        userModel.passwordStatus = 0
                         SwagoRoomManager.changeRoom(userModel)
                         if (roomType == RoomType.VIDEO){
                             anchorRoomFragment?.setAudioRvState(false)

+ 6 - 0
room/src/main/java/com/swago/room/bean/UserRoomModel.kt

@@ -25,6 +25,8 @@ class UserRoomModel :  IRoomInfo{
 
     var password = ""
 
+    var passwordStatus:Int = 0 //是否密码房(1是0否)
+
     override fun getAnchorName(): String {
         return roomModel?.user_name?:""
     }
@@ -173,4 +175,8 @@ class UserRoomModel :  IRoomInfo{
     override fun getRoomBg(): String {
         return roomModel?.broadcast_bg_url?:""
     }
+
+    override fun getPassStatus(): Int {
+        return momentModel?.broadcast_password_status?:0
+    }
 }

+ 7 - 0
room/src/main/java/com/swago/room/user/UserRoomFragment.kt

@@ -8,6 +8,7 @@ import com.swago.baseswago.PersonDataDFragment
 import com.swago.baseswago.baseroom.IRoomInfo
 import com.swago.baseswago.baseroom.SwagoRoomManager
 import com.swago.baseswago.dialog.BenefitBagDialog
+import com.swago.baseswago.dialog.EnterPasswordDialog
 import com.swago.baseswago.dialog.ReportDialog
 import com.swago.baseswago.model.live.pk.ProcessPKModel
 import com.swago.baseswago.model.live.pk.PunishPKModel
@@ -209,6 +210,12 @@ class UserRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
         roomOtherVm.isFansLiveData.observe(this){
             (iHeader as ComHeaderView).setFansIcon()
         }
+
+        roomVm.passwordStatus.observe(this){
+            EnterPasswordDialog.newInstance(2).apply {
+                roomVm.doUserRoomChange(it.roleType , it.iRoomInfo , it.callback)
+            }.show(parentFragmentManager , "EnterPasswordDialog")
+        }
     }
 
 

+ 15 - 3
room/src/main/java/com/swago/room/vm/RoomVm.kt

@@ -36,6 +36,10 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
         MutableLiveData<AnchorClosedModel>()
     }
 
+    val passwordStatus by lazy {
+        MutableLiveData<EnterPasswordModel>()
+    }
+
     //显示禁播时长弹窗
     var showBannerTime:((time:Long)->Unit)? = null
 
@@ -45,13 +49,21 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
         callback: (canJoinRoom: Boolean) -> Unit
     ) {
         if (roleType == RoleType.user) {
-            doUserRoomChange(roleType, iRoomInfo, callback)
+            enterUserRoom(roleType, iRoomInfo, callback)
         } else if (roleType == RoleType.anchor) {
             doAnchorRoomChange(roleType, iRoomInfo, callback)
         }
     }
 
-    private fun doUserRoomChange(
+    private fun enterUserRoom( roleType: Int,
+                               iRoomInfo: IRoomInfo,
+                               callback: (canJoinRoom: Boolean) -> Unit){
+
+            passwordStatus.value = EnterPasswordModel(roleType , iRoomInfo , callback)
+
+    }
+
+    fun doUserRoomChange(
         roleType: Int,
         iRoomInfo: IRoomInfo,
         callback: (canJoinRoom: Boolean) -> Unit
@@ -109,7 +121,7 @@ class RoomVm(application: Application) : AbsRoomVm(application) {
             requestData {
                 SwagoLoading.showLoadingDialog(ActivityManagerUtil.get().currentActivity())
                 val roomInfo = iRoomInfo as UserRoomModel
-                val roomModel = ApiManager.roomApi.startLive(roomInfo.roomType.type,roomInfo.selectedBgUrl)
+                val roomModel = ApiManager.roomApi.startLive(roomInfo.roomType.type,roomInfo.selectedBgUrl,roomInfo.passwordStatus,roomInfo.password)
                 roomInfo.roomModel = roomModel
                 callback.invoke(true)
                 SwagoLoading.cancelLoadingDialog()

+ 5 - 3
room/src/main/res/layout/activity_anchor_room.xml

@@ -100,7 +100,7 @@
 
             <CheckBox
                 android:id="@+id/cbPassword"
-                android:layout_width="120dp"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:drawableTop="@drawable/live_password_check"
                 android:textColor="#ffffff"
@@ -110,7 +110,8 @@
                 android:drawablePadding="4dp"
                 android:gravity="center_horizontal"
                 android:background="@android:color/transparent"
-                android:layout_marginBottom="24dp"/>
+                android:layout_marginBottom="24dp"
+                android:layout_marginEnd="@dimen/dp_10"/>
 
             <TextView
                 android:id="@+id/tvWishGift"
@@ -121,7 +122,8 @@
                 android:drawablePadding="4dp"
                 android:text="Wish Gift"
                 android:textColor="#ffffff"
-                android:textSize="14dp" />
+                android:textSize="14dp"
+                android:layout_marginStart="@dimen/dp_10"/>
 
         </LinearLayout>