1:修改家族展示续签按钮位置

2:修改购买爵位前,先请求一次接口
3:修改所有CP更改为心动
4:修改挚友,初始获取数据变更成40条
5:未实名认证不能进行歌手认证
6: 点唱房换麦出现页面展示不对
This commit is contained in:
2025-12-04 17:38:13 +08:00
parent ff2b5aa668
commit 5b22ebd218
6 changed files with 127 additions and 101 deletions

View File

@@ -32,13 +32,10 @@ import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.View.GONE
import android.view.ViewGroup
import android.view.WindowManager
import android.view.animation.AccelerateInterpolator
import android.view.animation.Animation
import android.view.animation.DecelerateInterpolator
import android.view.animation.TranslateAnimation
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
@@ -55,7 +52,6 @@ import com.alibaba.android.arouter.facade.annotation.Autowired
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.FileUtils
import com.blankj.utilcode.util.GsonUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ThreadUtils
@@ -71,9 +67,6 @@ import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMSDKListener
import com.tencent.imsdk.v2.V2TIMUserFullInfo
import com.tencent.imsdk.v2.V2TIMValueCallback
import com.tencent.qgame.animplayer.AnimConfig
import com.tencent.qgame.animplayer.AnimView
import com.tencent.qgame.animplayer.inter.IAnimListener
import com.xscm.modulemain.BaseMvpActivity
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.main.activity.MainActivity
@@ -112,7 +105,6 @@ import com.xscm.moduleutil.adapter.LikeUserAdapter
import com.xscm.moduleutil.base.AppStateListener
import com.xscm.moduleutil.base.AppStateManager
import com.xscm.moduleutil.base.CommonAppContext
import com.xscm.moduleutil.base.CommonAppContext.post
import com.xscm.moduleutil.bean.GiftBean
import com.xscm.moduleutil.bean.HeadlineBean
import com.xscm.moduleutil.bean.MqttXlhEnd
@@ -177,7 +169,6 @@ import com.xscm.moduleutil.utils.SystemUtils
import com.xscm.moduleutil.utils.roomview.GiftDisplayManager
import com.xscm.moduleutil.widget.CircularProgressView
import com.xscm.moduleutil.widget.CustomMusicFloatingView
import com.xscm.moduleutil.widget.GiftAnimView
import com.xscm.moduleutil.widget.QXGiftPlayerManager
import com.xscm.moduleutil.widget.RoomKtvWheatView
import com.xscm.moduleutil.widget.SilentCountDownTimer
@@ -189,20 +180,12 @@ import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import okhttp3.Call
import okhttp3.Callback
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import pub.devrel.easypermissions.AppSettingsDialog
import pub.devrel.easypermissions.EasyPermissions
import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.lang.ref.WeakReference
import java.nio.charset.StandardCharsets
import java.util.Arrays
@@ -1500,10 +1483,11 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
qxRedPacketManager!!.addRedPacket(messageEvent.text.redpacketInfo)
} else if (msgType == EMMessageInfo.QXRoomMessageTypeQXRoomMessageRedRemove) {
qxRedPacketManager!!.removeRedPacket(messageEvent.text.redpacket_id)
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSongerNum //房间点歌数量变化
|| msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomCurrentSongDidChanged //点歌房当前歌曲发生变化
|| msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomNextSongDidChanged
) { //点歌房下一首歌曲发生变化
} else if (msgType == EMMessageInfo.QXRoomMessageTypeSongerNum|| //房间点歌数量变化
msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomNextSongDidChanged) //点歌房下一首歌曲发生变化
{
roomFragment!!.handleRoomMessage(messageEvent)
}else if( msgType == EMMessageInfo.QXRoomMessageTypeSingerRoomCurrentSongDidChanged){ //点歌房当前歌曲发生变化)
if (mRoomInfoResp != null && mRoomInfoResp!!.room_info != null) {
if(messageEvent?.text?.song_info!=null){
mRoomInfoResp?.singer_info?.song_info = messageEvent.text.song_info
@@ -1513,7 +1497,8 @@ class RoomActivity : BaseMvpActivity<RoomPresenter?, ActivityRoomBinding?>(),
roomFragment?.upRoomInfo(mRoomInfoResp)
roomFragment!!.handleRoomMessage(messageEvent)
}
} else if (msgType == EMMessageInfo.QXRoomMessageTypeCPText) {
}
else if (msgType == EMMessageInfo.QXRoomMessageTypeCPText) {
LogUtils.e("CPText", messageEvent.text.rights_icon)
if (messageEvent.text.rights_icon.isNotEmpty()) {
QXGiftPlayerManager.getInstance(this).displayCPView(

View File

@@ -28,7 +28,7 @@ public class RoomJukeboxAdapter extends BaseQuickAdapter<RoomPitBean, BaseViewHo
RoomJukeboxWheatView roomJukeboxWheatView= helper.getView(R.id.wheatView);
// 确保pitNumber与数据匹配而不是使用位置
roomJukeboxWheatView.setRoomWheatNumber(item.getPit_number());
roomJukeboxWheatView.isMentorShip(false);
roomJukeboxWheatView.isMentorShip(true);
roomJukeboxWheatView.setImageType(item.isImageType());
roomJukeboxWheatView.setData(item);

View File

@@ -34,6 +34,18 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
notifyDataSetChanged();
}
public void addSongList(List<SongPlaylist.SongPlaylistBean> songList) {
if (songList != null) {
this.songList.addAll(songList);
notifyDataSetChanged();
}
}
public void clearSongList() {
this.songList.clear();
notifyDataSetChanged();
}
public void setOnSongClickListener(OnSongClickListener listener) {
this.onSongClickListener = listener;
}

View File

@@ -39,6 +39,7 @@ import com.xscm.moduleutil.utils.SpUtil;
import com.xscm.moduleutil.widget.RoomFriendshipWheatView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -60,6 +61,8 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
private RoomFragment parentFragment;
private int songId;//歌曲id当前歌曲的
List<RoomPitBean> roomPitBeans = new ArrayList<>();
public RoomJukeboxFragment() {
// Required empty public constructor
}
@@ -370,11 +373,11 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
this.roomInfoResp = roomInfoResp;
roomId = roomInfoResp == null ? "" : roomInfoResp.getRoom_info().getRoom_id();
setView();
// setView();
}
public void setView() {
List<RoomPitBean> roomPitBeans = new ArrayList<>();
for (int i = 0; i < roomInfoResp.getRoom_info().getPit_list().size(); i++) {
RoomPitBean roomPitBean = roomInfoResp.getRoom_info().getPit_list().get(i);
@@ -497,6 +500,11 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
pitBean.setCharm(fromUserInfo.getCharm());
pitBean.setDress(fromUserInfo.getDress());
pitBean.setIs_online(fromUserInfo.getIs_online());
if (roomInfoResp.getSinger_info().getSong_info().getSinger_user_id() == userId) {
pitBean.setImageType(true);
} else {
pitBean.setImageType(false);
}
// 使用set方法更新数据然后通知适配器
dataList.set(position, pitBean);
adapter.notifyItemChanged(position);
@@ -532,7 +540,6 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
pitBean.setNickname("");
pitBean.setSex("");
pitBean.setCharm("");
if (pitNumber.equals("9")) {
RoomJukeboxWheatView roomDefaultWheatView = mBinding.wvZc;
roomDefaultWheatView.setRoomWheatNumber("9");
@@ -568,7 +575,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
pitBean.setSex("");
pitBean.setCharm("");
pitBean.setDress("");
pitBean.setImageType(false);
// 使用set方法更新数据然后通知适配器
dataList.set(position, pitBean);
adapter.setNewData(dataList);
@@ -586,79 +593,44 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
String fromPit = event.getText().getFrom_pit_number();
String toPit = event.getText().getTo_pit_number();
if (fromPit == null || toPit == null) return;
List<RoomPitBean> dataList = new ArrayList<>(adapter.getData());
int fromIndex = Integer.parseInt(fromPit) - 1;
int toIndex = Integer.parseInt(toPit) - 1;
if (toIndex > adapter.getData().size() - 1) {
UserInfo fromUserInfo = event.getText().getFromUserInfo();
pitNumber = toPit;
RoomPitBean pitBean = new RoomPitBean();
pitBean.setPit_number(pitNumber);
pitBean.setUser_id(fromUserInfo.getUser_id() + "");
pitBean.setAvatar(fromUserInfo.getAvatar());
pitBean.setNickname(fromUserInfo.getNickname());
pitBean.setSex(fromUserInfo.getSex() + "");
pitBean.setCharm(fromUserInfo.getCharm());
pitBean.setDress(fromUserInfo.getDress());
pitBean.setIs_online(fromUserInfo.getIs_online());
// 确保视图的pitNumber与数据的pit_number匹配
if (pitNumber.equals("9")) {
mBinding.wvZc.setRoomWheatNumber("9");
mBinding.wvZc.setData(pitBean);
roomInfoResp.getRoom_info().getPit_list().set(8, pitBean);
if (fromUserInfo.getUser_id() == SpUtil.getUserId()) {
myPitNumber = Integer.parseInt(pitNumber);
if (pitNumber.equals("9")) {
if (toPit.equals("9")) {
RoomPitBean fromBean = adapter.getData().get(fromIndex);
fromBean.setPit_number(toPit);
mBinding.wvZc.setRoomWheatNumber("9");
mBinding.wvZc.setData(fromBean);
roomInfoResp.getRoom_info().getPit_list().set(8, fromBean);
if (fromBean.getUser_id().equals(SpUtil.getUserId() + "")) {
myPitNumber = 9;
configGameOptionBtn();
}
}
}
RoomPitBean temp = dataList.get(fromIndex);
RoomPitBean temp = adapter.getData().get(fromIndex);
temp.setUser_id("");
temp.setAvatar("");
temp.setNickname("");
temp.setSex("");
temp.setCharm("");
temp.setDress("");
dataList.set(fromIndex, temp);
temp.setImageType(false);
roomInfoResp.getRoom_info().getPit_list().set(fromIndex, temp);
adapter.getData().set(fromIndex, temp);
adapter.notifyItemChanged(fromIndex);
return;
}
// 获取当前数据列表
// 保存原始pit_number
String fromPitNumber = dataList.get(fromIndex).getPit_number();
String toPitNumber = dataList.get(toIndex).getPit_number();
// 交换两个位置的对象
RoomPitBean temp = dataList.get(fromIndex);
dataList.set(fromIndex, dataList.get(toIndex));
dataList.set(toIndex, temp);
// 确保pit_number正确
dataList.get(fromIndex).setPit_number(fromPitNumber);
dataList.get(toIndex).setPit_number(toPitNumber);
// 更新数据并通知适配器
adapter.getData().clear();
adapter.getData().addAll(dataList);
adapter.notifyItemChanged(fromIndex);
adapter.notifyItemChanged(toIndex);
List<RoomPitBean> pitList = roomInfoResp.getRoom_info().getPit_list();
if (pitList != null && dataList != null) {
for (int i = 0; i < Math.min(pitList.size(), dataList.size()); i++) {
pitList.set(i, dataList.get(i));
}
}
if (parentFragment != null) {
parentFragment.upRoomInfo(roomInfoResp);
}
if (getActivity() instanceof RoomActivity) {
((RoomActivity) getActivity()).upRoomInfoFragment(roomInfoResp);
} else {
RoomPitBean fromBean = adapter.getData().get(fromIndex);
fromBean.setPit_number(toPit);
RoomPitBean toBean = adapter.getData().get(toIndex);
toBean.setPit_number(fromPit);
roomInfoResp.getRoom_info().getPit_list().set(fromIndex, toBean);
roomInfoResp.getRoom_info().getPit_list().set(toIndex, fromBean);
roomPitBeans.set(fromIndex, toBean);
roomPitBeans.set(toIndex, fromBean);
adapter.notifyDataSetChanged();
}
}
@@ -806,7 +778,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
private void updateCharmForUser(UserInfo userInfo) {
String userId = String.valueOf(userInfo.getUser_id());
String charm = userInfo.getCharm();
if (mBinding.wvZc.getUserId()!=null && mBinding.wvZc.getUserId().equals(userId)) {
if (mBinding.wvZc.getUserId() != null && mBinding.wvZc.getUserId().equals(userId)) {
mBinding.wvZc.setCharm(charm);
}
// 更新麦位列表中的魅力值
@@ -821,7 +793,7 @@ public class RoomJukeboxFragment extends BaseMvpFragment<JukeboxPresenter, Fragm
public void event1059(RoomMessageEvent message) {
String userId = message.getText().getUser_id();
if (mBinding.wvZc.getUserId()!=null &&mBinding.wvZc.getUserId().equals(userId)) {
if (mBinding.wvZc.getUserId() != null && mBinding.wvZc.getUserId().equals(userId)) {
mBinding.wvZc.setCharm("0");
}
List<RoomPitBean> dataList = adapter.getData();

View File

@@ -32,7 +32,9 @@ import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.utils.SpUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
@@ -45,6 +47,8 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
private int selectedWheatPosition = 0; // 默认选中第一个麦位
private String roomId;
private int page = 0;
// 使用Map存储每个麦位的页码key为麦位位置value为页码
private Map<Integer, Integer> pageMap = new HashMap<>();
private SongAdapter adapter;
@@ -122,15 +126,37 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
// 获取当前麦位的页码并递增
int currentPage = pageMap.getOrDefault(selectedWheatPosition, 1);
currentPage++;
pageMap.put(selectedWheatPosition, currentPage);
page = currentPage;
// 根据当前麦位调用不同的接口
if (selectedWheatPosition == 0) {
// 第一个麦位不传用户id传roomId
MvpPre.getSong("", roomId, page + "", "10");
} else {
// 其他麦位传用户id不传roomId
MvpPre.getSong(selectedWheatPosition + "", "", page + "", "10");
}
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// EventBus.getDefault().post(new BannerRefreshEvent());
// 重置当前麦位的页码为1
pageMap.put(selectedWheatPosition, 1);
page = 1;
// 根据当前麦位调用不同的接口
if (selectedWheatPosition == 0) {
// 第一个麦位不传用户id传roomId
MvpPre.getSong("", roomId, page + "", "10");
} else {
// 其他麦位传用户id不传roomId
MvpPre.getSong(selectedWheatPosition + "", "", page + "", "10");
}
}
});
@@ -163,10 +189,21 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
private void updateSongList(int wheatPosition) {
// 根据选中的麦位更新歌曲列表
// 可以在这里调用接口获取对应麦位的歌曲列表
// 先清空适配器避免显示上一个tab的数据
adapter.clearSongList();
// 获取当前麦位的页码如果没有则初始化为1
int currentPage = pageMap.getOrDefault(wheatPosition, 1);
// 重置当前麦位的页码为1
pageMap.put(wheatPosition, 1);
page = currentPage;
// 调用接口获取对应麦位的歌曲列表
if (wheatPosition==0){
// 第一个麦位不传用户id传roomId
MvpPre.getSong( "", roomId, "1", "10");
}else {
// 其他麦位传用户id不传roomId
MvpPre.getSong(wheatPosition + "", "", "1", "10");
}
@@ -179,13 +216,34 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
@Override
public void getSong(SongPlaylist s) {
// 获取当前麦位的页码判断是否为刷新操作page=1还是加载更多操作page>1
int currentPage = pageMap.getOrDefault(selectedWheatPosition, 1);
boolean isRefresh = currentPage == 1;
if (s != null && s.getLists() != null && s.getLists().size() > 0) {
// 有数据的情况
if (isRefresh) {
// 刷新操作,替换所有数据
adapter.setSongList(s.getLists());
} else {
// 加载更多操作,添加新数据
adapter.addSongList(s.getLists());
}
mBinding.smartRefreshLayout.finishRefresh();
mBinding.smartRefreshLayout.finishLoadMore();
} else {
// 没有数据的情况
// 如果是第一页且没有数据确保适配器为空已经在updateSongList中清空
// 这里不需要再次清空因为已经在切换tab时清空了
mBinding.smartRefreshLayout.finishRefresh();
mBinding.smartRefreshLayout.finishLoadMore();
// 如果没有更多数据,设置没有更多数据的状态
mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData();
// 如果是第一页且没有数据需要重置页码为1以便下次刷新能正常工作
if (isRefresh) {
pageMap.put(selectedWheatPosition, 1);
page = 1;
}
}
}

View File

@@ -76,7 +76,6 @@ public class RoomJukeboxWheatView extends BaseWheatView {
handleOffState(bean);
}
// iv_tag_type.setVisibility(bean.isImageType()?VISIBLE:GONE);
iv_tag_type.setImageResource(com.xscm.moduleutil.R.mipmap.mu_yc);
}
@@ -106,6 +105,7 @@ public class RoomJukeboxWheatView extends BaseWheatView {
mIvFrame.setSource(bean.getDress(), 3);
}
// if(pitNumber.equals("9")){
// iv_tag_type.setVisibility(GONE);
// mTvName.setBackgroundColor(com.xscm.moduleutil.R.color.transparent);
@@ -132,7 +132,6 @@ public class RoomJukeboxWheatView extends BaseWheatView {
mRiv.setVisibility(VISIBLE);
mRiv.setImageResource(R.mipmap.jukebox_room_mask);
mIvShutup.setVisibility( GONE);
iv_tag_type.setVisibility(GONE);
// ImageUtils.loadRes(com.xscm.moduleutil.R.mipmap.room_microphone_off, mIvShutup);
mIvFrame.stopAll();
mIvFrame.setVisibility(GONE);