diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/adapter/GiftRoomAdapter.java b/BaseModule/src/main/java/com/xscm/moduleutil/adapter/GiftRoomAdapter.java index e0ef56b6..5fcb776c 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/adapter/GiftRoomAdapter.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/adapter/GiftRoomAdapter.java @@ -63,17 +63,20 @@ public class GiftRoomAdapter extends BaseAdapter { */ @Override public int getCount() { - return mDatas.size() > (curIndex + 1) * pageSize ? pageSize : (mDatas.size() - curIndex * pageSize); + return mDatas !=null ? mDatas.size() : 0; +// return mDatas.size() > (curIndex + 1) * pageSize ? pageSize : (mDatas.size() - curIndex * pageSize); } @Override public RoonGiftModel getItem(int position) { - return mDatas.get(position + curIndex * pageSize); + return mDatas.get(position); +// return mDatas.get(position + curIndex * pageSize); } @Override public long getItemId(int position) { - return position + (long) curIndex * pageSize; + return position; +// return position + (long) curIndex * pageSize; } private static class MyGestureDetector extends GestureDetector { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftWallUserBean.kt b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftWallUserBean.kt new file mode 100644 index 00000000..74089e62 --- /dev/null +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftWallUserBean.kt @@ -0,0 +1,22 @@ +package com.xscm.moduleutil.bean + +import java.util.ArrayList + +/** + * 项目名称:羽声语音 + * 时间:2026/1/23 9:59 + * 用途:礼物墙用户列表 + */ +class GiftWallUserBean { + var count : Int = 0 + + var users :List = ArrayList() + + class GiftWallUserItemBean { + var avatar : String = "" + var nickname : String = "" + var user_id : String = "" + var count : Int = 0 + + } +} \ No newline at end of file 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 2d4089e2..d31e7b72 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -40,6 +40,10 @@ public interface ApiServer { @POST(Constants.MODIFY_MOBILE) Call> mobileView(@Field("mobile") String mobile, @Field("new_mobile") String new_mobile, @Field("sms_code") String sms_code,@Field("new_sms_code") String new_sms_code); + @FormUrlEncoded + @POST(Constants.POST_GIFT_WALL_USER_LIST) //礼物墙礼物用户列表 + Call> giftWallUserList( @Field("user_id") String user_id,@Field("gift_id")String gift_id,@Field("page") int page); + @FormUrlEncoded @POST(Constants.SET_PIT_TIME) Call> setPitTime(@Field("room_id") String roomId, @Field("time") String time); 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 dc7644c0..41550702 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -329,6 +329,33 @@ public class RetrofitClient { }); } + public void giftWallUserList(String user_id,String gift_id,int page,BaseObserver observer) { + sApiServer.giftWallUserList(user_id,gift_id,page).enqueue(new Callback>() { + + @Override + public void onResponse(Call> call, Response> response) { + if (response.code() == 200) { + BaseModel body = response.body(); + if (body.getCode() == 1) + observer.onNext(body.getData()); + else if (body.getCode() == 0) { + ToastUtils.showLong(body.getMsg()); + }else if (body.getCode() == 301) { + setCode301(body.getMsg()); + } + }else { + ToastUtils.showLong("请求礼物用户错误", response.code()); + LogUtils.e("giftWallUserList", response.message()); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + LogUtils.e("giftWallUserList", t.toString()); + } + }); + } + public void mobileView(String mobile, String new_mobile, String sms_code, String new_sms_code, BaseObserver observer) { sApiServer.mobileView(mobile, new_mobile, sms_code, new_sms_code).enqueue(new Callback>() { @Override 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 c80e56e3..a36da93f 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -467,6 +467,7 @@ public class Constants { // public static final String MODIFY_MOBILE = "/api/UserData/modify_mobile";//手机换绑 public static final String MODIFY_MOBILE = "/api/UserData/modify_mobiles";//手机换绑 + public static final String POST_GIFT_WALL_USER_LIST = "/api/User/gift_wall_user_list";//礼物墙礼物用户列表 public static final String SET_PIT_TIME = "/api/BarRoom/set_pit_time";//房间麦位时长设置 public static final String BIND_MOBILE = "/api/UserData/bind_mobile";//手机绑定 public static final String GET_FESTIVAL_THEME = "/api/Theme/get_festival_theme";//节日主题接口 diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/GiftWallActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/GiftWallActivity.java index 7a45c3bf..8145a426 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/GiftWallActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/GiftWallActivity.java @@ -42,7 +42,7 @@ public class GiftWallActivity extends BaseMvpActivity 0) { + mOnUserClickListener.onUserClick(item); + } } } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/GiftWallListAdapter.kt b/MainModule/src/main/java/com/xscm/modulemain/adapter/GiftWallListAdapter.kt new file mode 100644 index 00000000..d30aef12 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/GiftWallListAdapter.kt @@ -0,0 +1,25 @@ +package com.xscm.modulemain.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.xscm.modulemain.R +import com.xscm.moduleutil.bean.GiftWallUserBean +import com.xscm.moduleutil.bean.GroupBean +import com.xscm.moduleutil.utils.ImageUtils + +/** + * 项目名称:羽声语音 + * 时间:2026/1/23 10:35 + * 用途:礼物墙用户显示列表 + */ +class GiftWallListAdapter : BaseQuickAdapter(R.layout.item_gift_wall_details) { + + override fun convert( + helper: BaseViewHolder, + item: GiftWallUserBean.GiftWallUserItemBean? + ) { + helper.setText(R.id.tv_gift_wheat_name, item?.nickname) + ImageUtils.loadHead(item?.avatar, helper.getView(R.id.riv_gift_wheat_head)) + helper.setText(R.id.tv_gift_wheat_count, item?.count.toString()) + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/SectionsGifPagerAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/SectionsGifPagerAdapter.java index 88c6d895..b7c85511 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/SectionsGifPagerAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/SectionsGifPagerAdapter.java @@ -25,16 +25,19 @@ public class SectionsGifPagerAdapter extends FragmentStateAdapter { private final Context mContext; private GiftUserWallBean giftData; // 添加数据字段 + private String userId; + // public SectionsPagerAdapter(Context context, FragmentManager fm, GiftUserWallBean giftData) { // super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); // this.mContext = context; // this.giftData = giftData; // } - public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData) { + public SectionsGifPagerAdapter(@NonNull FragmentActivity fragmentActivity, GiftUserWallBean giftData, String userId) { super(fragmentActivity); this.mContext = fragmentActivity; this.giftData = giftData; + this.userId = userId; } @NonNull @@ -55,6 +58,7 @@ public class SectionsGifPagerAdapter extends FragmentStateAdapter { } } args.putInt("section_number", position+1); + args.putString("userId", userId); fragment.setArguments(args); return fragment; } diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/GiftWallListDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/GiftWallListDialog.kt new file mode 100644 index 00000000..aad75cf7 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/GiftWallListDialog.kt @@ -0,0 +1,151 @@ +package com.xscm.modulemain.dialog + +import android.app.Dialog +import android.content.Context +import android.view.Gravity +import android.view.LayoutInflater +import android.view.ViewGroup +import com.blankj.utilcode.util.ScreenUtils +import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener +import com.xscm.modulemain.R +import com.xscm.modulemain.adapter.GiftWallListAdapter +import com.xscm.modulemain.databinding.DialogEmotionPickerBinding +import com.xscm.modulemain.databinding.DialogGiftWallListBinding +import com.xscm.moduleutil.bean.GiftWallUserBean +import com.xscm.moduleutil.http.BaseObserver +import com.xscm.moduleutil.http.RetrofitClient +import com.xscm.moduleutil.widget.dialog.BaseDialog +import io.reactivex.disposables.Disposable + +/** + * 项目名称:羽声语音 + * 时间:2026/1/22 18:55 + * 用途:礼物墙展示人员信息 + */ +class GiftWallListDialog( + context: Context + +) : Dialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) { + + var page: Int = 1 + var userId: String = "" + var giftId: String = "" + var giftName: String = "" + var userSize: Int = 0 + private var mBinding: DialogGiftWallListBinding = + DialogGiftWallListBinding.inflate(LayoutInflater.from(context)) + + init { + setContentView(mBinding.root) + + // 设置对话框从底部弹出 + window?.setGravity(Gravity.CENTER) + // 设置对话框的宽度为屏幕宽度 + window?.setLayout( + (ScreenUtils.getScreenWidth() * 348f / 375).toInt(), + ViewGroup.LayoutParams.WRAP_CONTENT + ) + // 添加动画效果 + window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt) + setCancelable(false) + setCanceledOnTouchOutside(false) + } + + + private fun initView() { + mBinding.ivClose.setOnClickListener { + dismiss() + } + + mBinding.tvTitle.text = giftName + mBinding.tvName.text = giftName + mBinding.tvUserNum.text = userSize.toString() + + mBinding.rvGiftWall.adapter = GiftWallListAdapter() + + } + + private fun initData() { + + mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(object : + OnRefreshLoadMoreListener { + override fun onRefresh(refreshLayout: RefreshLayout) { + page = 1 + setHttp(page) + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + page++ + setHttp(page) + } + + }) + setHttp(page) + } + + private fun setAdapterDetails(giftWallUserItemBean: List) { + if (page == 1) { + (mBinding.rvGiftWall.adapter as GiftWallListAdapter).setNewData(giftWallUserItemBean) + } else { + + val adapter = mBinding.rvGiftWall.adapter as GiftWallListAdapter + val currentData = adapter.data + + // 过滤掉重复的数据 + val newData = giftWallUserItemBean.filter { newItem -> + currentData.none { existingItem -> + // 假设GiftWallUserItemBean有id字段用于比较 + existingItem.user_id == newItem.user_id + } + } + + // 只有当有新数据时才添加 + if (newData.isNotEmpty()) { + adapter.addData(newData) + } else { + page = 1 + } + } + + } + + private fun setHttp(page: Int) { + + RetrofitClient.getInstance() + .giftWallUserList(userId, giftId, page, object : BaseObserver() { + + + override fun onSubscribe(d: Disposable) { + } + + override fun onNext(t: GiftWallUserBean) { + + mBinding.tvNum.text = t.count.toString() + if (t.users.isNotEmpty()) { + setAdapterDetails(t.users) + } + } + }) + mBinding.smartRefreshLayout.finishRefresh() + mBinding.smartRefreshLayout.finishLoadMore() + } + + fun show( + userId: String, + giftId: String, + giftName: String, + userSize: Int + ) { + this.userSize = userSize + this.userId = userId + this.giftId = giftId + this.giftName = giftName + + super.show() + + initView() + initData() + } + +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java index 3d7bc77d..e448c63c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomSettingFragment.java @@ -34,6 +34,7 @@ import com.xscm.modulemain.activity.WebViewActivity; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.base.WebUrlConstants; import com.xscm.moduleutil.bean.BlindBoxStatus; +import com.xscm.moduleutil.bean.GiftLabelBean; import com.xscm.moduleutil.dialog.ConfirmDialog; import com.xscm.moduleutil.event.EffectEvent; import com.xscm.moduleutil.event.FloatingScreenEvent; @@ -899,6 +900,10 @@ public class RoomSettingFragment extends BaseMvpDialogFragment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_gift_wall_details.xml b/MainModule/src/main/res/layout/item_gift_wall_details.xml new file mode 100644 index 00000000..27361e2a --- /dev/null +++ b/MainModule/src/main/res/layout/item_gift_wall_details.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_top_user.xml b/MainModule/src/main/res/layout/item_top_user.xml index 456d22b6..872c666c 100644 --- a/MainModule/src/main/res/layout/item_top_user.xml +++ b/MainModule/src/main/res/layout/item_top_user.xml @@ -4,7 +4,7 @@ android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto"> - implements IView { +public class LaunchPageActivity extends BaseAppCompatActivity { private Handler handler; private PolicyDialog policyDialog; private AppStateListener appStateListener; @@ -82,7 +83,7 @@ public class LaunchPageActivity extends BaseMvpActivity() { @@ -372,6 +369,7 @@ public class LaunchPageActivity extends BaseMvpActivity implements LoginContacter.View, View.OnClickListener { private CountDownTimer mTimer; @@ -142,6 +148,7 @@ public class PasswordLoginActivity extends BaseMvpActivity() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(FestivalThemeBean festivalThemeBean) { + if (festivalThemeBean != null) { + CommonAppContext.getInstance().is_open = festivalThemeBean.is_open(); + } + } + }); + } private void initQuickLogin() { tokenResultListener = new TokenResultListener() { @Override