1:添加交友小屋接口

2:修改上下麦展示设置时长的问题
3:修改上主持麦出现选择礼物的弹框
4:添加上嘉宾麦的判断
This commit is contained in:
2026-01-07 20:35:23 +08:00
parent 9fbb12819f
commit fe78c968f2
12 changed files with 225 additions and 79 deletions

View File

@@ -0,0 +1,28 @@
package com.xscm.moduleutil.bean
/**
* 项目名称:羽声语音
* 时间2026/1/7 19:47
* 用途:
*/
class BlackRoomBean {
var id: Int = 0
var p_room_id: Int = 0
var room_id: Int = 0
var user_id: Int = 0
var meet_user_id: Int = 0
var end_time: Int = 0
var createtime: Int = 0
var status: Int = 0
var heart_value: String? = ""
/* "id": 1,
"p_room_id": 6065,
"room_id": 6071,
"user_id": 20142,
"meet_user_id": 20137,
"end_time": 1767957473,
"createtime": 1767784373,
"status": 1,
"heart_value": null*/
}

View File

@@ -52,8 +52,8 @@ public class RoomMessageEvent extends BaseEvent {
private String SendRoomId;//发起者所在的房间ID
private String AcceptRoomId;//接收者所在的房间id
private String PkId;
private String room_id;//当type==1的时候。这个roomId是对方的房间id
private String user_id = "";
private String room_id;//当type==1的时候。这个roomId是对方的房间id 当是酒吧房的时候就是需要进入的小房间的id
private String user_id = ""; //当是酒吧房的时候,这个值就是要进入小黑屋的房主信息
private String pk_end_times;//pk结束时间
private List<RoomPitBean> userCharmList;
@@ -116,6 +116,8 @@ public class RoomMessageEvent extends BaseEvent {
private String play_image;//暴币播放动画地址
private String meet_user_id="";//当是酒吧房的时候就是被约的用户id
}
@Data

View File

@@ -163,6 +163,8 @@ public class EMMessageInfo implements MultiItemEntity {
/// 酒吧房撩ta推送
public static final int QXRoomMessageTypeFlirtatious = 1200;
/// 进入酒吧房的小黑屋
public static final int QXRoomMessageTypeFlirtatiousRoom = 1201;
private RoomMessageEvent emMessage;

View File

@@ -489,6 +489,10 @@ public interface ApiServer {
@POST(Constants.POST_PAY_DECORATE)
Call<BaseModel<String>> payDecorate(@Field("did") String id, @Field("day") String day,@Field("num") String num);
@FormUrlEncoded
@POST(Constants.POST_BLACK_ROOM_LIST)
Call<BaseModel<List<BlackRoomBean>>>getBlackRoomList(@Field("room_id") String roomId);
@FormUrlEncoded
@POST(Constants.POST_GZ)
Call<BaseModel<String>> userGuanz(@Field("user_id") String userId, @Field("type") String type);
@@ -930,6 +934,10 @@ public interface ApiServer {
@GET(Constants.GET_GIFT_INFO_TA)
Call<BaseModel<RoonGiftModel>> getGiftInfoTa(@Query("room_id") String roomId, @Query("to_user_id") String user_id);
@FormUrlEncoded
@POST(Constants.POST_MEETING_TA)
Call<BaseModel<String>> meetingTa(@Field("room_id") String room_id, @Field("user_id") String user_id, @Field("gift_id") String gift_id);
@FormUrlEncoded
@POST(Constants.ROOM_USER_RECONNECT)
Call<BaseModel<String>> roomUserReconnect(@Field("room_id") String room_id);

View File

@@ -1281,7 +1281,7 @@ public class RetrofitClient {
ToastUtils.showLong(baseModel.getMsg());
}
}else {
ToastUtils.showLong("约她出现错误", response.code());
ToastUtils.showLong("约她获取礼物出现错误", response.code());
LogUtils.e("getGiftInfoTa", response.message());
}
}
@@ -1292,7 +1292,25 @@ public class RetrofitClient {
}
});
}
public void meetingTa(String roomId, String userId, String giftId, BaseObserver<String> observer) {
sApiServer.meetingTa(roomId, userId, giftId).enqueue(new Callback<BaseModel<String>>() {
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
if (response.code() == 200) {
onNextRetu(response, observer);
}else {
ToastUtils.showLong("约她进房间出现错误", response.code());
LogUtils.e("meetingTa", response.message());
}
}
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
LogUtils.e("meetingTa", t.fillInStackTrace());
}
});
}
public void roomUserReconnect(String roomId) {
sApiServer.roomUserReconnect(roomId).enqueue(new Callback<BaseModel<String>>() {
@@ -2857,6 +2875,39 @@ public class RetrofitClient {
}
public void getBlackRoomList(String roomId,BaseObserver<List<BlackRoomBean>> observer){
sApiServer.getBlackRoomList(roomId).enqueue(new Callback<BaseModel<List<BlackRoomBean>>>() {
@Override
public void onResponse(Call<BaseModel<List<BlackRoomBean>>> call, Response<BaseModel<List<BlackRoomBean>>> response) {
if (response.code() == 200) {
BaseModel<List<BlackRoomBean>> listBaseModel = response.body();
if (listBaseModel.getCode() == 1) {
if (listBaseModel.getData()==null){
observer.onNext(new ArrayList<>());
}else {
observer.onNext(listBaseModel.getData());
}
} else if (listBaseModel.getCode() == 301) {
setCode301(listBaseModel.getMsg());
}else if (listBaseModel.getCode() == 0) {
ToastUtils.showShort(listBaseModel.getMsg());
observer.onNext(new ArrayList<>());
}
}else {
ToastUtils.showLong("请求交友小屋列表错误", response.code());
LogUtils.e("getBlackRoomList", response.message());
}
}
@Override
public void onFailure(Call<BaseModel<List<BlackRoomBean>>> call, Throwable t) {
LogUtils.e("getBlackRoomList", t.getMessage());
}
});
}
public void getDecorateDetail(String did, BaseObserver<DecorateDetailBean> observer) {
sApiServer.getDecorateDetail(did).enqueue(new Callback<BaseModel<DecorateDetailBean>>() {

View File

@@ -269,6 +269,7 @@ public class Constants {
public static final String BEFORE_JOIN_ROOM_CHECK = "/api/Room/before_join_room_check";//加入房间前检查
public static final String TASK_JUMP_ROOM = "/api/Room/task_jump_room";//师徒任务 加入房间
public static final String GET_PIT_TIME = "/api/BarRoom/get_pit_time_list";//酒吧房麦位时长列表
public static final String POST_BLACK_ROOM_LIST = "/api/BarRoom/black_room_list";//小黑屋(酒吧房,交友小屋)列表
public static final String UPDATEPASSWORD = "/api/room/setRoomPassword";//更新房间秘密啊
public static final String GET_ROOM_ONLINE = "/api/Room/room_online_list";//房间在线列表
@@ -298,7 +299,8 @@ public class Constants {
public static final String GET_ROOM_USER = "/api/Room/room_user_home";//房间内点击头像
public static final String APPLY_PIT = "/api/RoomPit/apply_pit";//申请上麦
public static final String POST_LIAO_TA = "/api/BarRoom/liao_ta";//撩他
public static final String GET_GIFT_INFO_TA = "/api/BarRoom/get_gift_info_ta";//约她
public static final String GET_GIFT_INFO_TA = "/api/BarRoom/get_gift_info_ta";//约她获取礼物详情
public static final String POST_MEETING_TA = "/api/BarRoom/meeting_ta";//约她进房间
public static final String DOWN_PIT = "/api/RoomPit/down_pit";//下麦
public static final String ADDRESS_IP = "/api/User/update_user_ip";//修改ip地址
public static final String REWARD_ZONE = "/api/UserZone/reward_zone";//动态打赏礼物

View File

@@ -1578,6 +1578,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
.displayChatEffectView(messageEvent.text.play_image)
}else if( msgType == EMMessageInfo.QXRoomMessageTypeFlirtatious){ //酒吧房撩ta推送的信息
roomFragment?.handleRoomMessage(messageEvent)
}else if (msgType == EMMessageInfo.QXRoomMessageTypeFlirtatiousRoom) {//酒吧房约她进入小黑屋
}
}

View File

@@ -555,6 +555,7 @@ public class ChatRoomFragment extends BaseMvpFragment<ChatRoomPresenter, RoomFra
case 1071:
case 125:
case 1080:
case 1201:
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).roomInfoEvent(message);
}

View File

@@ -5,6 +5,7 @@ import android.text.TextUtils
import android.view.View
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ToastUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.room.activity.RoomActivity
import com.xscm.modulemain.activity.room.presenter.PubPresenter
@@ -204,15 +205,27 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
if (mRoomInfoResp?.user_info?.pit_number != 0) {
MvpPre!!.applyPit(
mRoomInfoResp?.room_info?.room_id!!,
view.pitNumber,""
view.pitNumber, ""
)
} else {
// TODO: 这是展示设置心愿礼物的,这里有个点,要考虑,当前用户在麦位上,点击的时候,直接走上麦按钮,如果不在麦上,就直接选择心愿礼物
WishGiftDialog(
ActivityUtils.getTopActivity(),
mRoomId,
view.pitNumber
).show()
// TODO: 2026年1月7日20:22:58添加了上主持麦进行判断主持麦不需要选择礼物
if (view.pitNumber == "9") {
MvpPre!!.applyPit(
mRoomInfoResp?.room_info?.room_id!!,
view.pitNumber,
""
)
} else if (view.pitNumber == "10") {
ToastUtils.showLong("需要主持才可以抱上去哟!")
} else {
// TODO: 这是展示设置心愿礼物的,这里有个点,要考虑,当前用户在麦位上,点击的时候,直接走上麦按钮,如果不在麦上,就直接选择心愿礼物
WishGiftDialog(
ActivityUtils.getTopActivity(),
mRoomId,
view.pitNumber
).show()
}
}
// MvpPre!!.applyPit(mRoomInfoResp?.room_info?.room_id!!, view.pitNumber)
} else {
@@ -318,12 +331,14 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1]
pitBean.end_time = messageEvent.text.end_time
viewList[viewPos].setData(pitBean)
if (mUserInfo?.user_id.toString() == pitBean.user_id) {
mBinding.ivSetTime.visibility = View.VISIBLE
if (pitNumber == "9") { // 添加判断麦位是否是9号麦
if (mUserInfo?.user_id.toString() == pitBean.user_id) {
mBinding.ivSetTime.visibility = View.VISIBLE
}
}
}
startTimer(messageEvent.text.end_time.toLong())
}
@@ -333,6 +348,10 @@ class RoomPubFragment(var mRoomInfoResp: RoomInfoResp?) :
val viewPos = indexList.indexOf(pitNumber)
val pitBean = mRoomInfoResp?.room_info?.pit_list!![pitNumber.toInt() - 1]
viewList[viewPos].setData(pitBean)
if (pitNumber == "9") { // 添加判断麦位是否是9号麦
mBinding.ivSetTime.visibility = View.GONE
}
}
var isMaiPit = false
viewList.forEach { it ->

View File

@@ -4,6 +4,8 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.xscm.modulemain.R
/**
@@ -13,40 +15,49 @@ import com.xscm.modulemain.R
class FixedItemAdapter(
private val itemCount: Int
) : RecyclerView.Adapter<FixedItemAdapter.ViewHolder>() {
) : BaseQuickAdapter<Int, BaseViewHolder>(R.layout.item_make_friends) {
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
// 在这里定义你的视图组件,例如:
// val imageView: ImageView = itemView.findViewById(R.id.imageView)
init {
setNewData(List(itemCount) { it })
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
// 使用你的实际布局资源替换 R.layout.item_fixed
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_make_friends, parent, false)
return ViewHolder(view)
// RecyclerView.Adapter<FixedItemAdapter.ViewHolder>() {
//
// class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
// // 在这里定义你的视图组件,例如:
// // val imageView: ImageView = itemView.findViewById(R.id.imageView)
// }
//
// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
// // 使用你的实际布局资源替换 R.layout.item_fixed
// val view = LayoutInflater.from(parent.context)
// .inflate(R.layout.item_make_friends, parent, false)
//
// return ViewHolder(view)
// }
//
// override fun onBindViewHolder(holder: ViewHolder, position: Int) {
// // 设置点击监听器
//// holder.itemView.setOnClickListener {
//// itemClickListener?.invoke(position)
//// }
//
// // 如果所有图片都一样,可以在这里设置相同的图片资源
// // holder.imageView.setImageResource(R.drawable.your_image)
// }
//
// override fun getItemCount(): Int {
// return itemCount
// }
//
// /**
// * 更新项目数量
// */
// fun updateCount(newCount: Int) {
// // 如果使用DiffUtil可以实现更高效的更新
// notifyDataSetChanged()
// }
//}
override fun convert(helper: BaseViewHolder, item: Int?) {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
// 设置点击监听器
// holder.itemView.setOnClickListener {
// itemClickListener?.invoke(position)
// }
// 如果所有图片都一样,可以在这里设置相同的图片资源
// holder.imageView.setImageResource(R.drawable.your_image)
}
override fun getItemCount(): Int {
return itemCount
}
/**
* 更新项目数量
*/
fun updateCount(newCount: Int) {
// 如果使用DiffUtil可以实现更高效的更新
notifyDataSetChanged()
}
}
}

View File

@@ -4,16 +4,14 @@ import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.adapter.FixedItemAdapter
import com.xscm.modulemain.adapter.RoomGiftGivingAdapter
import com.xscm.modulemain.databinding.DialogGiftGivingBinding
import com.xscm.modulemain.databinding.DialogMakeFriendsBinding
import com.xscm.moduleutil.bean.RoonGiftModel
import com.xscm.moduleutil.bean.BlackRoomBean
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.widget.CommonEmptyView
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
@@ -22,10 +20,11 @@ import io.reactivex.disposables.Disposable
* 时间2026/1/5 19:27
* 用途:交友小屋弹窗
*/
class MakeFriendsDialog(context: Context, val roomId: String?) :
class MakeFriendsDialog(context: Context, var roomId: String?) :
BaseDialog<DialogMakeFriendsBinding>(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
var adapter: FixedItemAdapter? = null
var mRoomId: String? = roomId
override fun getLayoutId(): Int {
return R.layout.dialog_make_friends
@@ -41,31 +40,41 @@ class MakeFriendsDialog(context: Context, val roomId: String?) :
override fun initData() {
// TODO: 这里调用的事设置插队礼物接口
// RetrofitClient.getInstance().getGiftList(1,roomId,object : BaseObserver<MutableList<RoonGiftModel>>() {
// override fun onSubscribe(d: Disposable) {
// }
//
// override fun onNext(t: MutableList<RoonGiftModel>) {
// if (t.isNotEmpty()) {
// adapter = RoomGiftGivingAdapter(t) { selectedValue, position ->
// // 处理选中事件
// LogUtils.e("选中了: $selectedValue, 位置: $position")
// }
//
// // 设置GridLayoutManager每行显示4个item
// val layoutManager =
// GridLayoutManager(context, 4)
// mBinding.recycleView.layoutManager = layoutManager
// mBinding.recycleView.adapter = adapter
// }
// }
// })
val layoutManager =
GridLayoutManager(context, 2)
adapter= FixedItemAdapter(15)
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
// val layoutManager =
// GridLayoutManager(context, 2)
// adapter = FixedItemAdapter(15)
// mBinding.recycleView.layoutManager = layoutManager
// mBinding.recycleView.adapter = adapter
}
override fun show(){
super.show()
RetrofitClient.getInstance().getBlackRoomList(roomId,object : BaseObserver<MutableList<BlackRoomBean>>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: MutableList<BlackRoomBean>) {
val layoutManager =
GridLayoutManager(context, 2)
if(t.isNotEmpty()){
adapter = FixedItemAdapter(t.size)
}else{
adapter = FixedItemAdapter(0)
}
mBinding.recycleView.layoutManager = layoutManager
mBinding.recycleView.adapter = adapter
val commonEmptyView = CommonEmptyView(context)
commonEmptyView.setImg(R.mipmap.ic_empty)
commonEmptyView.setTextColor(context.getResources().getColor(com.xscm.moduleutil.R.color.color_FFBDBDBC))
commonEmptyView.setEmptyText("暂无数据交友小屋数据")
adapter?.bindToRecyclerView(mBinding.recycleView)
adapter?.setEmptyView(commonEmptyView)
}
})
}

View File

@@ -40,6 +40,8 @@ class RoomAboutDialog(
private var mUserId: String = userId
private var mUsername: String = username
private var mAvatar: String = avatar
private var giftId: String =""
// 定义回调接口
private var onConfirmCallback: ((String) -> Unit)? = null
@@ -67,8 +69,16 @@ class RoomAboutDialog(
}
mBinding.tvConfirm.setOnClickListener {
onConfirmCallback?.invoke("")
dismiss()
RetrofitClient.getInstance().meetingTa(mRoomId, mUserId,giftId, object : BaseObserver<String>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: String) {
dismiss()
}
})
}
mBinding.tvRecharge.setOnClickListener {
@@ -105,6 +115,7 @@ class RoomAboutDialog(
mBinding.tvGiftPrice.text = t.gift_price
ImageUtils.loadHead(t.base_image, mBinding.ivGiftPic)
mBinding.tvGiftName.text = t.gift_name
giftId=t.gift_id
}
mBinding.tvBalance.text = t.user_wallet_coin ?: "0"