1:修改超时时间30秒

2:练歌房已点歌曲,添加展示用户code,
3:修改练歌房已点歌曲展示视图
4:练歌房已点歌曲添加删除功能(接口已经接入,但是隐藏了)
5:修改辅服务器
This commit is contained in:
2025-12-31 16:35:13 +08:00
parent 8bd22ae41a
commit aa96aa4a3b
11 changed files with 213 additions and 63 deletions

View File

@@ -20,6 +20,7 @@ public class MusicSongBean implements Serializable {
private String duration;//播放时长
private int sort;//
private String user_id;
private String user_code="";
private String nickname;
private String avatar;
private String dress;

View File

@@ -424,6 +424,10 @@ public interface ApiServer {
@GET(Constants.GET_MY_INFO)
Call<BaseModel<UserInfo>> getMyInfo();
@FormUrlEncoded
@POST(Constants.POST_DEL_SONG)
Call<BaseModel<String>> delSong(@Field("room_id") String room_id, @Field("did") String did);
@FormUrlEncoded
@POST(Constants.ED_USER_INFO)
Call<BaseModel<String>> editUserInfo(@Field("nickname") String nickname, @Field("birthday") String birthday, @Field("sex") String sex, @Field("avatar") String avatar, @Field("images") String images, @Field("profile") String profile, @Field("tag_id") String tag_id);

View File

@@ -63,7 +63,7 @@ public class RetrofitClient {
public static RetrofitClient INSTANCE;
private static ApiServer sApiServer;
public static final int DEFAULT_TIME_OUT = 10;
public static final int DEFAULT_TIME_OUT = 30;
private static OkHttpClient client;
private final Retrofit mRetrofit;
@@ -2445,6 +2445,27 @@ public class RetrofitClient {
});
}
public void delSong(String roomId,String did,BaseObserver<String> observer){
sApiServer.delSong(roomId,did).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("delSong", response.message());
}
}
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
LogUtils.e("delSong", t.getMessage());
}
});
}
public void getMyInfo(BaseObserver<UserInfo> observer) {//点击我的获取数据
sApiServer.getMyInfo().enqueue(new Callback<BaseModel<UserInfo>>() {
@Override

View File

@@ -23,7 +23,7 @@ public enum EnvironmentEnum {
Auxiliary(//辅助生产环境
//"https://vespa.qxyushen.top/",
"https://qixinghuishen.qxhs.xyz/",
"https://details.qxhs.xyz/",
"KvNmqZc+VMzO4CfGMd5zmG6w6OFwpFO/19TwXUWfHDOBgmnl9DgIuE+kbrjNNnxqhtP3pH7bBrnSaSeFtunr72q6sgpLsfuswcUroMvz2slaTBcNzCaLi+GSnM3gB/GdO47mwLdk+iYBTvPUOCIuT608Z29z09w+vPeUDoMCHJBGXu6uh7Nj6PtV1dfGoUvByk1ZF0WYVjIqKDcb3tXY4jonFh3XAWhzMy8xKwN6F2nuK2IcdIwaSPsvuMZmhatP6f9kOE+vnfweyCHS3RxiG474WIoZGJM8omrl3/pOVqE=",
"https://oss-cn-beijing.aliyuncs.com/",
"LTAI5tKgrfcFQxH46ZwWYgFW",
@@ -35,9 +35,9 @@ public enum EnvironmentEnum {
"3e8f3add448d4692bc1d04c75ffe801b",
//"tcp://1.13.101.98",
// "tcp://1.13.20.30",
"tcp://qixinghuishen.qxhs.xyz",
"tcp://details.qxhs.xyz",
// "https://vespa.qxyushen.top/h5",
"https://qixinghuishen.qxhs.xyz/h5",
"https://details.qxhs.xyz/h5",
0),
TEST(//测试环境

View File

@@ -242,6 +242,7 @@ public class Constants {
public static final String POST_MODIFY_HIDE_STATUS = "/api/UserData/modify_hide_status";//设置隐身进入
public static final String GET_MY_INFO = "/api/User/get_user_info";//点击我的获取个人数据
public static final String GET_USER_HOME = "/api/User/get_user_home";//点击获取个人数据
public static final String POST_DEL_SONG = "/api/RoomSong/del_song";//删除已点歌曲
public static final String ED_USER_INFO = "/api/User/edit_user_info";//编辑信息
public static final String ED_USER_BG = "/api/User/edit_user_bg";//编辑背景图片

View File

@@ -17,6 +17,8 @@ public class RequestContacts {
void song(List<SongMusicBean> music);
void delSong(String s);
}
public interface IRoomPre extends IPresenter {
void songList(String roomId,String page);
@@ -24,5 +26,7 @@ public class RequestContacts {
void upSong(String did,String type);
void song(String roomId,String user_id,String song_code,String song_name,String singer,String poster,String duration);
void delSong(String roomId,String did);
}
}

View File

@@ -1,7 +1,9 @@
package com.xscm.modulemain.activity.room.fragment;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
@@ -11,6 +13,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
@@ -26,6 +29,7 @@ import com.xscm.moduleutil.bean.MusicSongBean;
import com.xscm.moduleutil.bean.SongMusicBean;
import com.xscm.moduleutil.bean.room.RoomInfoResp;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.rtc.AgoraManager;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
@@ -87,6 +91,12 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
com.hjq.toast.ToastUtils.show("操作成功");
}
@Override
public void delSong(String s) {
ToastUtils.showShort(s);
MvpPre.songList(roomId, page + "");
}
public interface OnRequestFragmentListener {
void onCloseDialog();
}
@@ -188,19 +198,7 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
int position = helper.getLayoutPosition();
ImageView muisSy = helper.getView(R.id.muis_sy);
TextView muisPrice = helper.getView(R.id.muis_price);
if (position == 0) {
helper.setText(R.id.muis_price, "结束");
muisSy.setVisibility(View.GONE);
} else if (position == 1) {
muisSy.setVisibility(View.GONE);
muisPrice.setVisibility(View.GONE);
} else {
muisPrice.setVisibility(View.VISIBLE);
helper.setText(R.id.muis_price, "置顶");
muisSy.setVisibility(View.VISIBLE);
}
helper.setText(R.id.muis_name, item.getSong_name());
if (item.getDuration().isEmpty()) {
@@ -210,6 +208,12 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
}
helper.setText(R.id.muis_set, "\t" + item.getSinger());
helper.setText(R.id.muis_nickname, item.getNickname());
if (TextUtils.isEmpty(item.getUser_code())){
helper.setVisible(R.id.muis_nick_id,false);
}else {
helper.setVisible(R.id.muis_nick_id,true);
helper.setText(R.id.muis_nick_id,"ID:"+ item.getUser_code());
}
ImageUtils.loadHeadCC(item.getPoster(), helper.getView(R.id.muis_avatar));
@@ -233,10 +237,21 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
if (item.getIs_hot() == 1) {
helper.setVisible(R.id.muis_sy, true);
helper.setVisible(R.id.muis_price, true);
// helper.setVisible(R.id.muis_price, true);
if (position == 0) {
muisSy.setVisibility(View.INVISIBLE);
muisPrice.setVisibility(View.INVISIBLE);
// helper.setText(R.id.muis_price, "结束");
//
// muisSy.setVisibility(View.INVISIBLE);
} else {
muisPrice.setVisibility(View.VISIBLE);
helper.setText(R.id.muis_price, "置顶");
muisSy.setVisibility(View.VISIBLE);
}
} else {
helper.setVisible(R.id.muis_sy, false);
helper.setVisible(R.id.muis_price, false);
muisSy.setVisibility(View.INVISIBLE);
muisPrice.setVisibility(View.INVISIBLE);
}
TextView muis_price = helper.getView(R.id.muis_price);
@@ -244,10 +259,43 @@ public class MusicSongListFragment extends BaseMvpFragment<RequestPresenter, Fra
muis_price.setTextColor(ColorManager.getInstance().getButtonColorInt());
}
};
adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener(){
@Override
public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
// if (position<0 || position >= adapter.getData().size()){
// return false;
// }
// MusicSongBean musicSongBean= (MusicSongBean) adapter.getData().get(position);
// if (musicSongBean.getIs_hot() == 1) {
// showOptionsDialog(position);
// return true;
// }
return false;
}
});
mBinding.recycleView.setAdapter(adapter);
}
private void showOptionsDialog(int position) {
if (position < 0 || position >= adapter.getData().size()) {
return;
}
new ConfirmDialog(ActivityUtils.getTopActivity(),
"提示",
"您确定要删除当前歌曲吗?",
"确认",
"取消",
v -> {
// 点击“确认”按钮时执行删除操作
MvpPre.delSong(roomId,adapter.getData().get(position).getDid());
},
v -> {
// 点击“取消”按钮时什么都不做
}, false, 0).show();
}
@Override
protected int getLayoutId() {
return R.layout.fragment_muisc_song;

View File

@@ -70,6 +70,11 @@ public class RequestFragment extends BaseMvpFragment<RequestPresenter, FragmentR
ToastUtils.show("操作成功");
}
@Override
public void delSong(String s) {
}
public interface OnRequestFragmentListener {
void onCloseDialog(Music musicSongBean);
}

View File

@@ -8,19 +8,24 @@ import com.xscm.moduleutil.bean.SongMusicBean;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class RequestPresenter extends BasePresenter<RequestContacts.View> implements RequestContacts.IRoomPre{
public class RequestPresenter extends BasePresenter<RequestContacts.View> implements RequestContacts.IRoomPre {
RequestContacts.View mView;
public RequestPresenter(RequestContacts.View view, Context context) {
super(view, context);
mView = view;
}
@Override
public void songList(String roomId,String page) {
api.songList(roomId,page, new BaseObserver<List<MusicSongBean>>() {
public void songList(String roomId, String page) {
api.songList(roomId, page, new BaseObserver<List<MusicSongBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
@@ -28,6 +33,9 @@ public class RequestPresenter extends BasePresenter<RequestContacts.View> implem
@Override
public void onNext(List<MusicSongBean> musicSongBeans) {
if (MvpRef == null) {
MvpRef = new WeakReference<>(mView);
}
MvpRef.get().songList(musicSongBeans);
}
});
@@ -44,6 +52,9 @@ public class RequestPresenter extends BasePresenter<RequestContacts.View> implem
@Override
public void onNext(String s) {
if (MvpRef == null) {
MvpRef = new WeakReference<>(mView);
}
MvpRef.get().upSong(s);
}
});
@@ -54,14 +65,36 @@ public class RequestPresenter extends BasePresenter<RequestContacts.View> implem
api.song(roomId, user_id, song_code, song_name, singer, poster, duration, new BaseObserver<List<SongMusicBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
addDisposable(d);
}
@Override
public void onNext(List<SongMusicBean> songMusicBeans) {
if (MvpRef == null) {
MvpRef = new WeakReference<>(mView);
}
MvpRef.get().song(songMusicBeans);
}
});
}
@Override
public void delSong(String roomId, String did) {
api.delSong(roomId,did,new BaseObserver<String>(){
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
if (MvpRef == null) {
MvpRef = new WeakReference<>(mView);
}
MvpRef.get().delSong(s);
}
});
}
}

View File

@@ -151,6 +151,12 @@ public class RequestDialogFragment extends BaseMvpDialogFragment<RequestPresente
public void song(List<SongMusicBean> music) {
com.hjq.toast.ToastUtils.show("操作成功");
}
@Override
public void delSong(String s) {
}
private static class MyFragmentPagerAdapter extends FragmentStateAdapter {
private String[] list;

View File

@@ -1,95 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/muis_avatar"
android:layout_width="@dimen/dp_52"
android:layout_height="@dimen/dp_52"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
tools:src="@mipmap/default_avatar"
app:riv_corner_radius="@dimen/dp_4"/>
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_corner_radius="@dimen/dp_4"
tools:src="@mipmap/default_avatar" />
<TextView
android:id="@+id/muis_name"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/muis_avatar"
android:layout_marginStart="@dimen/dp_6"
app:layout_constraintTop_toTopOf="@+id/muis_avatar"
android:layout_marginTop="@dimen/dp_7"
tools:text="Muis"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_12"/>
android:textSize="@dimen/sp_12"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
app:layout_constraintEnd_toStartOf="@+id/muis_nickname"
app:layout_constraintStart_toEndOf="@id/muis_avatar"
app:layout_constraintTop_toTopOf="@+id/muis_avatar"
tools:text="MuisMuisMuisMuisMuis" />
<TextView
android:id="@+id/muis_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/muis_name"
app:layout_constraintStart_toStartOf="@id/muis_name"
tools:text="Muis"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"/>
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="@id/muis_name"
app:layout_constraintTop_toBottomOf="@id/muis_name"
tools:text="Muis" />
<TextView
android:id="@+id/muis_set"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
app:layout_constraintEnd_toStartOf="@+id/muis_nick_id"
app:layout_constraintStart_toEndOf="@+id/muis_desc"
app:layout_constraintTop_toBottomOf="@id/muis_name"
android:gravity="center"
android:layout_marginTop="@dimen/dp_5"
tools:text="清唱"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"/>
tools:text="清唱" />
<TextView
android:id="@+id/muis_nickname"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="@dimen/dp_18"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/muis_sy"
android:layout_marginEnd="@dimen/dp_18"
android:gravity="center"
tools:text="清唱"
android:layout_marginStart="@dimen/dp_20"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"/>
android:layout_marginTop="@dimen/dp_7"
android:textSize="@dimen/sp_12"
app:layout_constraintEnd_toStartOf="@+id/muis_sy"
app:layout_constraintStart_toEndOf="@+id/muis_name"
app:layout_constraintTop_toTopOf="parent"
tools:text="清唱清唱清唱清唱" />
<TextView
android:id="@+id/muis_nick_id"
android:layout_width="0dp"
android:layout_height="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
app:layout_constraintStart_toStartOf="@+id/muis_nickname"
app:layout_constraintEnd_toEndOf="@+id/muis_nickname"
app:layout_constraintTop_toBottomOf="@+id/muis_nickname"
tools:text="清唱清唱清唱清唱清唱" />
<ImageView
android:id="@+id/muis_sy"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginEnd="@dimen/dp_18"
app:layout_constraintEnd_toStartOf="@+id/muis_price"
android:src="@mipmap/music_sy"
/>
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/muis_price"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/muis_price"
android:layout_width="@dimen/dp_52"
android:layout_height="@dimen/dp_30"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/bg_r53_0dffb9"
android:gravity="center"
android:padding="@dimen/dp_6"
android:text="点歌"
tools:text="点歌"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_12"/>
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>