diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/BlackRoomBean.kt b/BaseModule/src/main/java/com/xscm/moduleutil/bean/BlackRoomBean.kt new file mode 100644 index 00000000..c0422b89 --- /dev/null +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/BlackRoomBean.kt @@ -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*/ +} \ No newline at end of file diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoomMessageEvent.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoomMessageEvent.java index cd95924b..ae59f407 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoomMessageEvent.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/RoomMessageEvent.java @@ -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 userCharmList; @@ -116,6 +116,8 @@ public class RoomMessageEvent extends BaseEvent { private String play_image;//暴币播放动画地址 + private String meet_user_id="";//当是酒吧房的时候,就是被约的用户id + } @Data diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/EMMessageInfo.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/EMMessageInfo.java index 47a44db2..d171664f 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/EMMessageInfo.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/room/EMMessageInfo.java @@ -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; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java index f6a5bd77..c56ea4be 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -489,6 +489,10 @@ public interface ApiServer { @POST(Constants.POST_PAY_DECORATE) Call> payDecorate(@Field("did") String id, @Field("day") String day,@Field("num") String num); + @FormUrlEncoded + @POST(Constants.POST_BLACK_ROOM_LIST) + Call>>getBlackRoomList(@Field("room_id") String roomId); + @FormUrlEncoded @POST(Constants.POST_GZ) Call> userGuanz(@Field("user_id") String userId, @Field("type") String type); @@ -930,6 +934,10 @@ public interface ApiServer { @GET(Constants.GET_GIFT_INFO_TA) Call> getGiftInfoTa(@Query("room_id") String roomId, @Query("to_user_id") String user_id); + @FormUrlEncoded + @POST(Constants.POST_MEETING_TA) + Call> 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> roomUserReconnect(@Field("room_id") String room_id); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index bbd5cff5..3f0c6b00 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -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 observer) { + sApiServer.meetingTa(roomId, userId, giftId).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.code() == 200) { + onNextRetu(response, observer); + }else { + ToastUtils.showLong("约她进房间出现错误", response.code()); + LogUtils.e("meetingTa", response.message()); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + LogUtils.e("meetingTa", t.fillInStackTrace()); + } + }); + } public void roomUserReconnect(String roomId) { sApiServer.roomUserReconnect(roomId).enqueue(new Callback>() { @@ -2857,6 +2875,39 @@ public class RetrofitClient { } + public void getBlackRoomList(String roomId,BaseObserver> observer){ + sApiServer.getBlackRoomList(roomId).enqueue(new Callback>>() { + + @Override + public void onResponse(Call>> call, Response>> response) { + if (response.code() == 200) { + BaseModel> 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>> call, Throwable t) { + LogUtils.e("getBlackRoomList", t.getMessage()); + } + }); + + } + public void getDecorateDetail(String did, BaseObserver observer) { sApiServer.getDecorateDetail(did).enqueue(new Callback>() { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java index 4d188fa9..46708551 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -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";//动态打赏礼物 diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt index 2bea5c16..98c2fc2c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/activity/RoomActivity.kt @@ -1578,6 +1578,8 @@ class RoomActivity : BaseMvpActivity(), .displayChatEffectView(messageEvent.text.play_image) }else if( msgType == EMMessageInfo.QXRoomMessageTypeFlirtatious){ //酒吧房撩ta推送的信息 roomFragment?.handleRoomMessage(messageEvent) + }else if (msgType == EMMessageInfo.QXRoomMessageTypeFlirtatiousRoom) {//酒吧房约她进入小黑屋 + } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java index 881dac82..6dc0a616 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/ChatRoomFragment.java @@ -555,6 +555,7 @@ public class ChatRoomFragment extends BaseMvpFragment diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/FixedItemAdapter.kt b/MainModule/src/main/java/com/xscm/modulemain/adapter/FixedItemAdapter.kt index 63b78f69..bde18186 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/FixedItemAdapter.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/FixedItemAdapter.kt @@ -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() { +) : BaseQuickAdapter(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() { +// +// 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() - } -} +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/MakeFriendsDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/MakeFriendsDialog.kt index f6d1d359..7b2af045 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/MakeFriendsDialog.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/MakeFriendsDialog.kt @@ -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(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>() { -// override fun onSubscribe(d: Disposable) { -// } -// -// override fun onNext(t: MutableList) { -// 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>() { + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: MutableList) { + 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) + } + + }) } diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt index afad9da7..e2dd271a 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/barRoom/RoomAboutDialog.kt @@ -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() { + 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"