pk房完成,剩余禁止对方麦未完成

拍卖房完成
点歌房完成,音乐播放需要测试
This commit is contained in:
2025-07-04 16:38:21 +08:00
parent 4c7e996706
commit 2d510ffe2a
640 changed files with 698375 additions and 163954 deletions

View File

@@ -4,10 +4,10 @@
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-05-26T06:41:03.502984700Z">
<DropdownSelection timestamp="2025-07-02T15:26:48.206290400Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=88Y4C19912006888" />
<DeviceId pluginId="Default" identifier="serial=emulator-5554;connection=d1b10e5b" />
</handle>
</Target>
</DropdownSelection>

View File

@@ -5,7 +5,7 @@ plugins {
android {
namespace 'com.qxcm.qxlive'
compileSdk 34
compileSdk 35
defaultConfig {
applicationId "com.qxcm.qxlive"
@@ -17,7 +17,7 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ndk {
//设置支持的so库框架
//设置支持的so库
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
@@ -29,7 +29,11 @@ android {
}
}
// signingConfig signingConfigs.release
// proguardFiles 'proguard-rules.pro'
}
signingConfigs {
debug {
@@ -92,8 +96,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildFeatures {
dataBinding true

BIN
app/certificate.cer Normal file

Binary file not shown.

15
app/lint-baseline.xml Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.8.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.8.0)" variant="fatal" version="8.8.0">
<issue
id="ExpiredTargetSdkVersion"
message="Google Play requires that apps target API level 33 or higher."
errorLine1=" targetSdk 28"
errorLine2=" ~~~~~~~~~~~~">
<location
file="build.gradle"
line="13"
column="9"/>
</issue>
</issues>

Binary file not shown.

BIN
app/my-release-key.jks.old Normal file

Binary file not shown.

View File

@@ -876,3 +876,25 @@ public static java.lang.String TABLENAME;
-dontwarn com.tencent.cloud.huiyansdkface.okhttp3.OkHttpClient$Builder
####################### normal混淆规则-END#############################
# 保留 BaseModel 和其子类的字段名
-keep class com.qxcm.moduleutil.http.BaseModel { *; }
-keep class com.qxcm.moduleutil.bean.** { *; }
# 保留所有作为 API 响应体的类
-keep class com.qxcm.moduleutil.bean.**.*Response { *; }
# 保留 Gson 使用的字段
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# 避免 Retrofit 接口被混淆
-keep interface com.qxcm.moduleutil.http.ApiServer { *; }
# 保留 retrofit 相关类
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-keep class com.qxcm.moduleutil.utils.location.** { *; }
-keep class io.agora.**{*;}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -11,9 +11,9 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "羽声_1.0_1.apk"
"versionCode": 3,
"versionName": "1.0.2",
"outputFile": "羽声_1.0.2_3.apk"
}
],
"elementType": "File",
@@ -22,14 +22,14 @@
"minApi": 28,
"maxApi": 30,
"baselineProfiles": [
"baselineProfiles/1/羽声_1.0_1.dm"
"baselineProfiles/1/羽声_1.0.2_3.dm"
]
},
{
"minApi": 31,
"maxApi": 2147483647,
"baselineProfiles": [
"baselineProfiles/0/羽声_1.0_1.dm"
"baselineProfiles/0/羽声_1.0.2_3.dm"
]
}
],

Binary file not shown.

Binary file not shown.

View File

@@ -65,12 +65,9 @@
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
/>
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@@ -94,6 +91,14 @@
<package android:name="com.tencent.mm" />
</queries>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
android:required="false"
android:maxSdkVersion="32"/>
<application
android:name="AppContext"
@@ -110,9 +115,10 @@
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true"
tools:targetApi="31"
tools:targetApi="tiramisu"
tools:ignore="SelectedPhotoAccess"
tools:replace="android:theme,android:allowBackup"
android:enableOnBackInvokedCallback="true"
>
<activity
android:name=".LaunchPageActivity"

View File

@@ -29,7 +29,7 @@ public class AppContext extends CommonAppContext {
// L.setDeBug(BuildConfig.DEBUG);
}
public static void initSdk() {
CommonAppContext context = CommonAppContext.getInstance();
// CommonAppContext context = CommonAppContext.getInstance();
// if (BuildConfig.DEBUG) {
// L.e("应用签名:" + context.getAppSignature());

View File

@@ -14,5 +14,7 @@ public final class LaunchContacter {
public interface ILoginPre extends IPresenter {
void oauthLogin(String login_token);
void address_ip(String address_ip);
}
}

View File

@@ -1,7 +1,10 @@
package com.qxcm.qxlive;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
@@ -10,10 +13,16 @@ import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ThreadUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.mobile.auth.gatewayauth.AuthUIConfig;
import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
import com.mobile.auth.gatewayauth.PreLoginResultListener;
@@ -29,6 +38,8 @@ import com.qxcm.moduleutil.base.CommonAppContext;
import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.dialog.PolicyDialog;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.utils.location.LocationProvider;
import com.qxcm.moduleutil.utils.location.LocationServiceFactory;
import com.qxcm.moduleutil.utils.logger.Logger;
import com.qxcm.qxlive.databinding.ActivityLaunchPageBinding;
import com.tencent.qcloud.tuicore.TUILogin;
@@ -42,7 +53,7 @@ public class LaunchPageActivity extends BaseMvpActivity<LaunchPresenter, Activit
private TokenResultListener tokenResultListener;
private boolean canOnePass;
private boolean isCanOnePass = true;
private String city1="";
@Override
protected void initData() {
handler = new Handler();
@@ -86,12 +97,16 @@ public class LaunchPageActivity extends BaseMvpActivity<LaunchPresenter, Activit
});
policyDialog.show();
}
}
private void initLogin() {
EventBus.getDefault().register(this);
initQuickLogin();
checkOnePass();
//
}
private void checkOnePass() {
@@ -163,16 +178,18 @@ public class LaunchPageActivity extends BaseMvpActivity<LaunchPresenter, Activit
Logger.e("SplashEnd", "ARouters.MAIN");
UserBean userBean = CommonAppContext.getInstance().getUser();
TUILogin.login(getBaseContext(), CommonAppContext.getInstance().getCurrentEnvironment().getSdkAppId(), "u"+userBean.getUser_id(), userBean.getTencent_im(), new TUICallback() {
@Override
public void onError(final int code, final String desc) {
LogUtils.e("@@@",code,"描述:",desc);
}
@Override
public void onSuccess() {
LogUtils.e("@@@","成功");
}
});
// TUILogin.login(getBaseContext(), CommonAppContext.getInstance().getCurrentEnvironment().getSdkAppId(), "u"+userBean.getUser_id(), userBean.getTencent_im(), new TUICallback() {
// @Override
// public void onError(final int code, final String desc) {
// LogUtils.e("@@@",code,"描述:",desc);
// }
// @Override
// public void onSuccess() {
// LogUtils.e("@@@","成功");
//
// }
// });
if (userBean.getSex() == 0) {
Intent intent = new Intent(this, ImproveInfoActivity.class);
Bundle bundle = new Bundle();
@@ -180,7 +197,7 @@ public class LaunchPageActivity extends BaseMvpActivity<LaunchPresenter, Activit
intent.putExtras(bundle);
startActivity(intent);
} else {
EventBus.getDefault().post(userBean);
startActivity(new Intent(this, MainActivity.class));
}
finish();
@@ -324,5 +341,25 @@ public class LaunchPageActivity extends BaseMvpActivity<LaunchPresenter, Activit
return new LaunchPresenter(this, this);
}
// @Override
// public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//
// if (requestCode == 1001) {
// LocationProvider provider = LocationServiceFactory.createBestProvider(this);
// provider.getLastKnownLocation(this, new LocationProvider.LocationCallback() {
// @Override
// public void onLocationReceived(double latitude, double longitude, String city) {
// ToastUtils.showShort("当前位置:" + city);
// city1=city;
// }
//
// @Override
// public void onFailed(String errorMessage) {
// ToastUtils.showShort("定位失败");
// }
// });
// }
// }
}

View File

@@ -14,6 +14,8 @@ import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import io.reactivex.disposables.Disposable;
@@ -40,6 +42,21 @@ public class LaunchPresenter extends BasePresenter<LaunchContacter.View> impleme
});
}
@Override
public void address_ip(String address_ip) {
api.address_ip(address_ip, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
// addDisposable(d);
}
@Override
public void onNext(String s) {
}
});
}
public void loginSuccess(List<UserBean> userBean) {
if (userBean==null) {
ToastUtils.showShort("登录失败请重试");
@@ -76,7 +93,7 @@ public class LaunchPresenter extends BasePresenter<LaunchContacter.View> impleme
com.blankj.utilcode.util.ActivityUtils.startActivity(intent);
}
// EventBus.getDefault().post(new LoginFinishEvent());
EventBus.getDefault().post(userBean);
// EventBus.getDefault().post(new SplashFinishEvent());
// AppLog.setUserUniqueID(userBean.getUser_id()); // 设置您自己的账号体系ID, 并保证其唯一性
}

View File

@@ -8,7 +8,8 @@
<FrameLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/transparent">
<FrameLayout
@@ -93,8 +94,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:scaleType="centerCrop"
android:src="@mipmap/screen"
android:scaleType="centerCrop"
android:visibility="visible" />
</FrameLayout>

View File

@@ -29,8 +29,8 @@ org.gradle.parallel=false
org.gradle.deamon=false
android.injected.testOnly=false
APP_VERSION_NAME=1.0.0
APP_VERSION_CODE=1
APP_VERSION_NAME=1.0.2
APP_VERSION_CODE=3
org.gradle.jvm.toolchain.useLegacyAdapters=false
org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15

View File

@@ -15,7 +15,7 @@ android {
buildToolsVersion build_versions.build_tools
defaultConfig {
minSdkVersion 24
targetSdkVersion 35
targetSdkVersion 28
versionCode 1
versionName 1.0
consumerProguardFiles 'consumer-rules.pro'

View File

@@ -9,7 +9,7 @@ import androidx.annotation.Nullable;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
@@ -62,6 +62,9 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
HashMap<String, String> map = new HashMap<>();
private String avatar;
private String birthdy;
private String init_code;
@Override
protected void initData() {
@@ -133,10 +136,20 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
return;
}
if (!inviteCode.isEmpty() || inviteCode != null) {
map.put("user_no", inviteCode);
// map.put("user_no", inviteCode);
init_code = inviteCode;
}
map.put("sex", sex);
MvpPre.upDateUserInfo(map);
String user_id="";
if (userBean!=null){
user_id = userBean.getUser_id() + "";
}
assert userBean != null;
userBean.setSex(Integer.parseInt(sex));
userBean.setNickname(nickname);
userBean.setAvatar(avatar);
SpUtil.saveUserBean(userBean);
MvpPre.upDateUserInfo(nickname, birthdy, sex, avatar, init_code, user_id);
// MvpPre.fill(inviteCode, nickname, sex);
// try {
@@ -157,7 +170,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
mBinding.rlNv.setSelected(false);
sex = "1";
} else if (id == R.id.rv_user_head) {
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.CHOOSE_REQUEST);
startChoosePhoto(1, PictureConfig.CHOOSE_REQUEST);
} else if (id == R.id.tv_user_name) {
MvpPre.updateNickname();
} else if (id == R.id.iv_girl) {
@@ -197,13 +210,13 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
PictureSelector.create(this)
.openGallery(mimeType)
.isGif(false)
.imageEngine(GlideEngine.createGlideEngine())
.maxSelectNum(1)
.setImageEngine(GlideEngine.createGlideEngine())
.setMaxSelectNum(1)
.isPreviewImage(true)
.isCamera(true)
.setOutputCameraPath(Constants.FILE_PATH)
.isCompress(true)
.setPictureStyle(MyPictureParameterStyle.Companion.selectPicture())
.isDisplayCamera(true)
.setOutputCameraDir(Constants.FILE_PATH)
.isOriginalSkipCompress(true)
.forResult(requestCode); //结果回调onActivityResult code
}
@@ -214,7 +227,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
if (resultCode == RESULT_OK && data != null) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> localMedia = PictureSelector.obtainMultipleResult(data);
List<LocalMedia> localMedia = PictureSelector.obtainSelectorList(data);
if (localMedia != null && localMedia.size() != 0) {
LocalMedia imgMedia = localMedia.get(0);
String url;
@@ -227,7 +240,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
}
break;
case PictureConfig.REQUEST_CAMERA:
List<LocalMedia> localMedia1 = PictureSelector.obtainMultipleResult(data);
List<LocalMedia> localMedia1 = PictureSelector.obtainSelectorList(data);
if (localMedia1 != null && localMedia1.size() != 0) {
LocalMedia imgMedia = localMedia1.get(0);
MvpPre.uploadFile(new File(imgMedia.getRealPath()), 3);
@@ -242,6 +255,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
// MvpPre.updateAvatar(url);
ImageUtils.loadHeadCC(url, mBinding.rvUserHead);
map.put("avatar", url);
avatar=url;
isFirst = true;
}
@@ -249,6 +263,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
public void updateAvatarSuccess(String headPicture) {
ImageLoader.loadHead(this, mBinding.rvUserHead, headPicture);
map.put("avatar", headPicture);
avatar=headPicture;
isFirst = true;
}
@@ -256,13 +271,15 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
public void updateNicknameSuccess(String nickname) {
mBinding.edNickName.setText(nickname);
map.put("nickname", nickname);
this.nickname=nickname;
}
@Override
public void updateSexTrue(String sex) {
ImageLoader.loadHead(this, mBinding.rvUserHead,sex);
map.put("avatar", sex);
public void updateSexTrue(String sex1) {
ImageLoader.loadHead(this, mBinding.rvUserHead,sex1);
map.put("avatar", sex1);
// sex=sex1;
avatar=sex1;
}
@Override
@@ -310,6 +327,7 @@ public class ImproveInfoActivity extends BaseMvpActivity<ImproveInfoPresenter, A
mBinding.tvMonth.setText(month);
mBinding.tvYear.setText(year);
map.put("birthday", year + "-" + month + "-" + day);
birthdy=year + "-" + month + "-" + day;
}
}

View File

@@ -38,6 +38,6 @@ public final class ImproveInfoContacts {
void getSexTrue(String sex);
void upDateUserInfo(Map<String, String> map);
void upDateUserInfo(String nickname,String birthday,String sex,String avatar,String init_code,String user_id);
}
}

View File

@@ -18,21 +18,6 @@ public class ImproveInfoPresenter extends BasePresenter<ImproveInfoContacts.View
public ImproveInfoPresenter(ImproveInfoContacts.View view, Context context) {
super(view, context);
}
@Override
public void upDateUserInfo(Map<String, String> map) {
api.userUpdate(map, new BaseObserver<UserBean>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(UserBean userBean) {
MvpRef.get().updateSuccess(userBean);
}
});
}
@Override
public void uploadFile(File file, int type) {
@@ -118,5 +103,21 @@ public class ImproveInfoPresenter extends BasePresenter<ImproveInfoContacts.View
});
}
@Override
public void upDateUserInfo(String nickname, String birthday, String sex, String avatar, String init_code, String user_id) {
api.userUpdate(nickname, birthday, sex, avatar, init_code, user_id, new BaseObserver<UserBean>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(UserBean userBean) {
MvpRef.get().updateSuccess(userBean);
}
});
}
}

View File

@@ -22,6 +22,7 @@ import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import com.qxcm.moduleutil.utils.PreferencesUtils;
import com.qxcm.moduleutil.utils.SpUtil;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
@@ -161,6 +162,11 @@ public class LoginPresenter extends BasePresenter<LoginContacter.View> implement
if (userBean.size()==1) {
CommonAppContext.getInstance().setUser(userBean.get(0));
if (userBean.get(0).getAuth()==1){
SpUtil.setRealName(true);
}else {
SpUtil.setRealName(false);
}
// PreferencesUtils.putString( CommonAppContext.getInstance(), "mobile", userBean.get());

View File

@@ -319,7 +319,7 @@
android:layout_gravity="center"
android:enabled="false"
android:gravity="center"
android:text="开启初梦之旅"
android:text="开启羽声之旅"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
@@ -328,7 +328,7 @@
<TextView
android:layout_width="84dp"
android:layout_height="21dp"
android:text="进入初梦语音"
android:text="进入羽声语音"
android:textColor="#ff333333"
android:textSize="14sp"
/>

View File

@@ -23,6 +23,11 @@ android {
]
}
}
ndk {
// 移除 abiFilters 或仅保留你需要的架构
abiFilters "armeabi-v7a", "arm64-v8a", "x86_64"
}
}
buildTypes {
@@ -91,7 +96,8 @@ dependencies {
api(libs.databinding.runtime.v702)
api(libs.pictureselector.picture.library)
// api(libs.pictureselector.picture.library)
api('io.github.lucksiege:pictureselector:v3.11.2')
api(libs.com.github.bumptech.glide.glide)
// api(libs.glide.compiler)
@@ -150,6 +156,13 @@ dependencies {
api("com.liulishuo.okdownload:okdownload:1.0.7")
api('com.zlc.glide:webpdecoder:1.6.4.9.0')
api('com.jungly:gridPasswordView:0.3')
api('com.cpiz.bubbleview:bubbleview:1.0.2')
// 集成音频 SDK声网
// api('io.agora.rtc:voice-sdk:4.5.2')
api( 'io.agora.rtc:agora-special-full:4.1.1.23')
api( 'com.github.AgoraIO-Community:LyricsView:1.1.3')
//腾讯im
// api project(':tuiconversation')
@@ -158,6 +171,17 @@ dependencies {
annotationProcessor 'com.google.auto.service:auto-service:1.1.1'
api files('libs/WbCloudFaceLiveSdk-face-v6.6.2-8e4718fc.aar')
api files('libs/WbCloudNormal-v5.1.10-4e3e198.aar')
// 房间引擎
api "io.trtc.uikit:rtc_room_engine:latest.release"
// rtc room engine 依赖 trtc sdk 和 im sdk
api "com.tencent.liteav:LiteAVSDK_Professional:latest.release"
api "com.tencent.imsdk:imsdk-plus:latest.release"
//悬浮框
api"io.github.petterpx:floatingx:2.3.5"
// system浮窗&&compose时需要导入 https://github.com/Petterpx/FloatingX/
// 记得AppHelper里调用 enableComposeSupport()
api 'io.github.petterpx:floatingx-compose:2.3.5'
//2. 云normal SDK
//aar的名称例如WbCloudNormal-v5.1.10-123456789.aar填入 'WbCloudNormal-v5.1.10-123456789.aar'
}

View File

@@ -5,6 +5,11 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:allowBackup="true">
<service
android:name=".http.FloatingWindowService"
android:enabled="true"
android:exported="true"></service>
<activity
android:name=".activity.WebViewActivity"
android:exported="false" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,20 @@
package com.qxcm.moduleutil;
import lombok.Data;
@Data
public class RoomAutionTimeBean {
private int days; // 天数,例如 1, 3, 5, 10, 15, 20
private boolean isSelected;
public RoomAutionTimeBean(int days) {
this.days = days;
}
/**
* 获取对应小时数1天 = 24小时
*/
public int getHours() {
return days * 24;
}
}

View File

@@ -43,7 +43,6 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
setContentView(getLayoutId());
mBinding = DataBindingUtil.setContentView(this, getLayoutId());
mBinding.setLifecycleOwner(this);
ARouter.getInstance().inject(this);
BarUtils.setStatusBarLightMode(this, isLightMode());
BarUtils.transparentStatusBar(this);
@@ -51,16 +50,7 @@ public abstract class BaseAppCompatActivity<VDB extends ViewDataBinding> extends
initData();
initCompleted();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 100);
}
} else {
// 对于低于 Android 6.0 的设备,无需请求悬浮窗权限
// 可在此处添加针对旧版本的处理逻辑(如果需要)
}
// 动态判断是否包含 @Subscribe 注解的方法
boolean hasSubscribeMethods = false;

View File

@@ -1,11 +1,13 @@
package com.qxcm.moduleutil.activity;
import android.Manifest;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.PixelFormat;
import android.os.Build;
import android.view.Gravity;
@@ -15,28 +17,40 @@ import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.databinding.ViewDataBinding;
import com.blankj.utilcode.util.FragmentUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.base.CommonAppContext;
import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.utils.LanguageUtil;
import com.qxcm.moduleutil.utils.location.LocationProvider;
import com.qxcm.moduleutil.utils.location.LocationServiceFactory;
import com.qxcm.moduleutil.utils.location.SystemLocationProvider;
import com.tencent.imsdk.v2.V2TIMCallback;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMUserFullInfo;
import com.tencent.qcloud.tuicore.TUILogin;
import com.tencent.qcloud.tuicore.interfaces.TUICallback;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewDataBinding> extends BaseAppCompatActivity<VDB> implements IView<Activity> {
public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewDataBinding> extends BaseAppCompatActivity<VDB> implements
IView<Activity> , LocationProvider.LocationCallback
{
protected P MvpPre;
protected abstract P bindPresenter();
private String city1;
@Override
protected void initView() {
@@ -87,9 +101,55 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
@Override
public void onSuccess() {
LogUtils.e("@@@","成功");
initLocation();
}
});
}
private SystemLocationProvider locationProvider;
private void initLocation() {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 请求定位权限
ActivityCompat.requestPermissions(
(Activity) this,
new String[]{
android.Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
},
1001 // 自定义常量,比如 1001
);
}
locationProvider = new SystemLocationProvider();
// 请求一次性的位置信息
locationProvider.getLastKnownLocation(this, this);
}
@Override
public void onLocationReceived(double latitude, double longitude, String city) {
LogUtils.e("当前位置:" + city);
city1=city;
EventBus.getDefault().post(city1);
}
@Override
public void onFailed(String errorMessage) {
LogUtils.e("定位失败");
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1001) {
if (locationProvider==null) {
locationProvider = new SystemLocationProvider();
}
locationProvider.getLastKnownLocation(this, this);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void userInfoEvent(UserInfo event) {
@@ -174,7 +234,6 @@ public abstract class BaseMvpActivity<P extends IPresenter, VDB extends ViewData
animator.setDuration(duration);
animator.addUpdateListener(animation -> {
float value = (float) animation.getAnimatedValue();
LogUtils.d("PiaoPing", "translationX = " + value);
});
animator.addListener(new AnimatorListenerAdapter() {
@Override

View File

@@ -1,12 +1,10 @@
package com.example.modulevocal.adapter;
import android.view.View;
package com.qxcm.moduleutil.adapter;
import androidx.annotation.NonNull;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.bean.RechargeBean;
import java.util.List;

View File

@@ -16,6 +16,7 @@ import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -29,6 +30,7 @@ import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.HeatedBean;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.MeHeadView;
import com.qxcm.moduleutil.utils.NumberFormatUtils;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.widget.MyGridView;
import com.qxcm.moduleutil.widget.img.FullScreenUtil;
@@ -37,10 +39,15 @@ import java.util.Arrays;
import java.util.List;
public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewHolder> {
public CirleListAdapter() {
super(R.layout.item_cirle_list);
}
public static final int PAGE_HOME = 0; // 首页
public static final int PAGE_SEARCH = 2; // 点击头像进入的
private int mPageType;
public CirleListAdapter(int pageType) {
super(R.layout.item_cirle_list);
this.mPageType = pageType;
}
public interface OnItemClickListener {
void onDianzanClick(CircleListBean item);
@@ -53,6 +60,8 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
void onPinglunClick(CircleListBean item);
void onRelaClick(CircleListBean item);
void onGensui(CircleListBean item);
}
private OnItemClickListener mListener;
@@ -69,6 +78,7 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
.addOnClickListener(R.id.diandian)
.addOnClickListener(R.id.pinglun)
.addOnClickListener(R.id.rela)
.addOnClickListener(R.id.gensui)
.addOnClickListener(com.qxcm.moduleutil.R.id.zs);
//先让单图,多图,音频的布局显示
@@ -84,7 +94,9 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
// 设置点击回调
helper.getView(com.qxcm.moduleutil.R.id.dianzan).setOnClickListener(v -> {
if (mListener != null) mListener.onDianzanClick(item);
if (mListener != null){
mListener.onDianzanClick(item);
}
});
helper.getView(com.qxcm.moduleutil.R.id.dy_head_image).setOnClickListener(v -> {
@@ -106,6 +118,9 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
helper.getView(R.id.rela).setOnClickListener(v -> {
if (mListener != null) mListener.onRelaClick(item);
});
helper.getView(R.id.gensui).setOnClickListener(v -> {
if (mListener != null) mListener.onGensui(item);
});
// 为整个 item 设置点击事件
helper.itemView.setOnClickListener(v -> {
if (mListener != null) {
@@ -196,28 +211,41 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
if (item.getIs_like() == 1) {
helper.setImageResource(R.id.dianzan_image, R.mipmap.dongtai_hudong_yidianzan);
helper.setText(R.id.dy_fabulous, String.valueOf(Integer.parseInt(item.getLike_num()) + 1));
// helper.setText(R.id.dy_fabulous, String.valueOf(Integer.parseInt(item.getLike_num()) + 1));
} else {
helper.setImageResource(R.id.dianzan_image, com.qxcm.moduleutil.R.mipmap.dongtai_hudong_dianzan);
helper.setText(R.id.dy_fabulous, item.getLike_num());
// helper.setText(R.id.dy_fabulous, item.getLike_num());
}
if (item.getIs_room() != null && item.getIs_room().equals("0")) {
helper.setText(R.id.dy_fabulous, item.getLike_num());
if (mPageType==PAGE_SEARCH){
helper.setVisible(R.id.gensui, false);
} else if (item.getIs_room() == null) {
helper.setVisible(R.id.gensui, false);
} else {
helper.setVisible(R.id.gensui, true);
}else {
if (item.getUser_id()==SpUtil.getUserId()){
helper.setVisible(R.id.gensui, false);
}else {
helper.setVisible(R.id.gensui, true);
}
}
if (item.getRoom_id() != null && !item.getRoom_id().equals("0")) {
helper.setText(R.id.gensui, "跟随");
} else if (item.getRoom_id() == null || item.getRoom_id().equals("0")){
helper.setText(R.id.gensui, "私信");
}
//分享数
helper.setText(R.id.dy_zs, item.getRewards_num() != null ? item.getRewards_num() : "0");
// helper.setText(R.id.dy_zs, item.getRewards_num() != null ? item.getRewards_num() : "0");
double rewardNum = item.getRewards_num() != null ? Double.parseDouble(item.getRewards_num()) : 0;
helper.setText(R.id.dy_zs, NumberFormatUtils.formatRewardNumber(rewardNum));
//评论数
helper.setText(R.id.dy_comment, item.getComment_num() + "");
//时间
if (!item.getCreatetime().isEmpty()) {
try {
helper.setText(R.id.dy_time_text, "发布于:" + TimeUtils.millis2String(Long.parseLong(item.getCreatetime()) * 1000));
helper.setText(R.id.dy_time_text, TimeUtils.millis2String(Long.parseLong(item.getCreatetime()) * 1000));
} catch (NumberFormatException e) {
e.printStackTrace();
}
@@ -239,6 +267,8 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
recyclerView.setOnItemClickListener((parent, view, position, id) -> {
FullScreenUtil.showFullScreenDialog(mContext, position, oneImageYuanJiaoAdapter.getList_adapter());
});
}else {
helper.getView(R.id.dy_image_recyc).setVisibility(View.GONE);
}
if (item.getLike_list() == null){
@@ -249,11 +279,39 @@ public class CirleListAdapter extends BaseQuickAdapter<CircleListBean, BaseViewH
helper.getView(R.id.view).setVisibility(GONE);
RecyclerView recyclerView= helper.getView(R.id.recycle_view);
recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
LikeUserAdapter likeUserAdapter = new LikeUserAdapter();
LikeUserAdapter<CircleListBean.LikeList> likeUserAdapter = new LikeUserAdapter<>();
recyclerView.setAdapter(likeUserAdapter);
likeUserAdapter.setNewData(item.getLike_list());
helper.setText(R.id.pinglun_tv, item.getLike_num()+"人点赞");
}
}
public static final String PAYLOAD_LIKE = "like";
public void updateLikeStatusOnly(int position, int isLike) {
notifyItemChanged(position, PAYLOAD_LIKE);
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position, @NonNull List<Object> payloads) {
if (payloads.isEmpty()) {
onBindViewHolder(holder, position); // 全量绑定
} else {
for (Object payload : payloads) {
if (payload.equals(PAYLOAD_LIKE)) {
CircleListBean item = getData().get(position);
if (item.getIs_like() == 1) {
holder.setImageResource(R.id.dianzan_image, R.mipmap.dongtai_hudong_yidianzan);
holder.setText(R.id.dy_fabulous, String.valueOf(Integer.parseInt(item.getLike_num()) + 1));
} else {
holder.setImageResource(R.id.dianzan_image, com.qxcm.moduleutil.R.mipmap.dongtai_hudong_dianzan);
holder.setText(R.id.dy_fabulous, item.getLike_num());
}
}
}
}
}
}

View File

@@ -172,11 +172,11 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
}
});
if (comment.getUser_id()!= SpUtil.getUserId()){
btnReply.setVisibility(GONE);
}else {
btnReply.setVisibility(VISIBLE);
}
// if (comment.getUser_id()!= SpUtil.getUserId()){
// btnReply.setVisibility(GONE);
// }else {
// btnReply.setVisibility(VISIBLE);
// }
// 添加长按监听
itemView.setOnLongClickListener(v -> {

View File

@@ -0,0 +1,183 @@
package com.qxcm.moduleutil.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.bean.RoonGiftModel;
import com.qxcm.moduleutil.event.RoomGiftClickToEvent;
import com.qxcm.moduleutil.utils.ImageUtils;
import org.greenrobot.eventbus.EventBus;
import java.lang.ref.WeakReference;
import java.util.List;
public class GiftRoomAdapter extends BaseAdapter {
private final List<RoonGiftModel> mDatas;
private final LayoutInflater inflater;
private final Context mContext;
private final MyGestureDetector gestureDetector;
private final String type;
/**
* 页数下标,从0开始(当前是第几页)
*/
private final int curIndex;
/**
* 每一页显示的个数
*/
private final int pageSize = 100;
public GiftRoomAdapter(Context context, List<RoonGiftModel> mDatas, int curIndex, String type) {
inflater = LayoutInflater.from(context);
this.mDatas = mDatas;
this.curIndex = curIndex;
this.mContext = context;
this.type = type;
this.gestureDetector = new MyGestureDetector(mContext);
}
/**
* 先判断数据集的大小是否足够显示满本页mDatas.size() > (curIndex+1)*pageSize,
* 如果够则直接返回每一页显示的最大条目个数pageSize,
* 如果不够,则有几项返回几,(mDatas.size() - curIndex * pageSize);(也就是最后一页的时候就显示剩余item)
*/
@Override
public int getCount() {
return mDatas.size() > (curIndex + 1) * pageSize ? pageSize : (mDatas.size() - curIndex * pageSize);
}
@Override
public RoonGiftModel getItem(int position) {
return mDatas.get(position + curIndex * pageSize);
}
@Override
public long getItemId(int position) {
return position + (long) curIndex * pageSize;
}
private static class MyGestureDetector extends GestureDetector {
private static WeakReference<GiftRoomAdapter> sAdapter = new WeakReference<>(null);
private static RoonGiftModel sGiftModel;
public void setGiftModel(GiftRoomAdapter adapter, RoonGiftModel gift) {
sAdapter = new WeakReference<>(adapter);
sGiftModel = gift;
}
private static final SimpleOnGestureListener sSimpleOnGestureListener = new SimpleOnGestureListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
EventBus.getDefault().post(new RoomGiftClickToEvent(sAdapter.get(), sGiftModel, 1));
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
EventBus.getDefault().post(new RoomGiftClickToEvent(sAdapter.get(), sGiftModel, 2));
return true;
}
};
public MyGestureDetector(Context context) {
super(context, sSimpleOnGestureListener);
setOnDoubleTapListener(sSimpleOnGestureListener);
}
}
@Override
@SuppressLint({"SetTextI18n", "ClickableViewAccessibility"})
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
RoonGiftModel giftModel = getItem(position);
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_gift_room, parent, false);
viewHolder = new ViewHolder();
viewHolder.tv_gift_name = (TextView) convertView.findViewById(R.id.tv_gift_name);
viewHolder.tv_gift_price = (TextView) convertView.findViewById(R.id.tv_gift_price);
viewHolder.iv_gift_pic = (ImageView) convertView.findViewById(R.id.iv_gift_pic);
viewHolder.item_layout = (ConstraintLayout) convertView.findViewById(R.id.cl_gift);
viewHolder.ivDownOn = (ImageView) convertView.findViewById(R.id.iv_down_on);
viewHolder.cl_iv_down_on = (ConstraintLayout) convertView.findViewById(R.id.cl_iv_down_on);
// viewHolder.tv_gift_num = convertView.findViewById(R.id.tv_gift_num);
// viewHolder.tv_gift_change_love_values = convertView.findViewById(R.id.tv_gift_change_love_values);
viewHolder.item_layout.setOnTouchListener((v, event) -> {
gestureDetector.setGiftModel(GiftRoomAdapter.this, giftModel);
gestureDetector.onTouchEvent(event);
return true;
});
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
/*
* 在给View绑定显示的数据时计算正确的position = position + curIndex * pageSize
*/
// viewHolder.tv_gift_num.setVisibility(type.equals("1") ? View.VISIBLE : View.INVISIBLE);
// viewHolder.tv_gift_change_love_values.setVisibility(View.GONE);
//设置礼物名字
viewHolder.tv_gift_name.setText(giftModel.getGift_name());
//设置礼物价格
String surplusTxt = giftModel.getGift_price();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(surplusTxt);
//ForegroundColorSpan 为文字前景色BackgroundColorSpan为文字背景色
ForegroundColorSpan redSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.color_FFA9A9A9));
stringBuilder.setSpan(redSpan, surplusTxt.length(), surplusTxt.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//修改最后两个字体的颜色
viewHolder.tv_gift_price.setText(stringBuilder);
// viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel);
//加载礼物图片
ImageUtils.loadImageView(giftModel.getBase_image(), viewHolder.iv_gift_pic);
//设置选中后的样式
if (giftModel.isChecked()) {//被选中
viewHolder.cl_iv_down_on.setBackgroundResource(R.mipmap.room_gift_bjx);
viewHolder.ivDownOn.setVisibility(View.GONE);
} else {
viewHolder.ivDownOn.setVisibility(View.GONE);
viewHolder.cl_iv_down_on.setBackgroundResource(0);
}
//设置
// //设置礼物心动值
// if (giftModel.getCardiac().equals("0")) {
// viewHolder.tv_gift_change_love_values.setBackgroundResource(R.mipmap.room_gift_xin_dong_reduce);
// viewHolder.tv_gift_change_love_values.setText(String.format("%s", giftModel.getCardiac()));
// } else {
// viewHolder.tv_gift_change_love_values.setBackgroundResource(R.mipmap.room_gift_xin_dong_add);
// viewHolder.tv_gift_change_love_values.setText(String.format("+%s", giftModel.getCardiac()));
// }
// if (giftModel.isManghe()) {
// viewHolder.tv_gift_change_love_values.setVisibility(View.GONE);
// }
return convertView;
}
static class ViewHolder {
public ConstraintLayout item_layout;
public TextView tv_gift_name, tv_gift_price, tv_gift_num;
public ImageView iv_gift_pic;
public TextView tv_gift_change_love_values;
public ImageView ivDownOn;
public ConstraintLayout cl_iv_down_on;
}
}

View File

@@ -20,6 +20,8 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.bean.RoonGiftModel;
import com.qxcm.moduleutil.event.RoomGiftClickEvent;
import com.qxcm.moduleutil.event.RoomGiftClickToEvent;
import com.qxcm.moduleutil.utils.ImageUtils;
import org.greenrobot.eventbus.EventBus;
@@ -83,15 +85,13 @@ public class GiftTwoAdapter extends BaseAdapter {
private static final SimpleOnGestureListener sSimpleOnGestureListener = new SimpleOnGestureListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.d("@@", "sGiftModel"+sGiftModel.toString());
// EventBus.getDefault().post(new RoomGiftClickEvent(sAdapter.get(), sGiftModel, 1));
EventBus.getDefault().post(new RoomGiftClickEvent(sAdapter.get(), sGiftModel, 1));
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d("@@", "sGiftModel"+sGiftModel.toString());
// EventBus.getDefault().post(new RoomGiftClickEvent(sAdapter.get(), sGiftModel, 2));
EventBus.getDefault().post(new RoomGiftClickEvent(sAdapter.get(), sGiftModel, 2));
return true;
}
};
@@ -118,8 +118,8 @@ public class GiftTwoAdapter extends BaseAdapter {
// viewHolder.tv_gift_num = convertView.findViewById(R.id.tv_gift_num);
// viewHolder.tv_gift_change_love_values = convertView.findViewById(R.id.tv_gift_change_love_values);
viewHolder.item_layout.setOnTouchListener((v, event) -> {
// gestureDetector.setGiftModel(GiftTwoAdapter.this, (RoonGiftModel) v.getTag(R.id.id_gift_tag));
// gestureDetector.onTouchEvent(event);
gestureDetector.setGiftModel(GiftTwoAdapter.this, (RoonGiftModel) v.getTag(R.id.id_gift_tag));
gestureDetector.onTouchEvent(event);
return true;
});
@@ -135,9 +135,9 @@ public class GiftTwoAdapter extends BaseAdapter {
RoonGiftModel giftModel = getItem(position);
//设置礼物名字
viewHolder.tv_gift_name.setText(giftModel.getName());
viewHolder.tv_gift_name.setText(giftModel.getGift_name());
//设置礼物价格
String surplusTxt = giftModel.getPrice();
String surplusTxt = giftModel.getGift_price();
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(surplusTxt);
//ForegroundColorSpan 为文字前景色BackgroundColorSpan为文字背景色
ForegroundColorSpan redSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.color_FFA9A9A9));
@@ -146,11 +146,11 @@ public class GiftTwoAdapter extends BaseAdapter {
// viewHolder.item_layout.setTag(R.id.id_gift_tag, giftModel);
//加载礼物图片
ImageUtils.loadImageView(giftModel.getPicture(), viewHolder.iv_gift_pic);
ImageUtils.loadImageView(giftModel.getBase_image(), viewHolder.iv_gift_pic);
//设置选中后的样式
if (giftModel.isChecked()) {//被选中
viewHolder.cl_iv_down_on.setBackgroundResource(R.drawable.gift_x);
viewHolder.cl_iv_down_on.setBackgroundResource(R.mipmap.room_gift_bjx);
viewHolder.ivDownOn.setVisibility(View.GONE);
} else {
viewHolder.ivDownOn.setVisibility(View.GONE);
@@ -165,9 +165,9 @@ public class GiftTwoAdapter extends BaseAdapter {
// viewHolder.tv_gift_change_love_values.setBackgroundResource(R.mipmap.room_gift_xin_dong_add);
// viewHolder.tv_gift_change_love_values.setText(String.format("+%s", giftModel.getCardiac()));
// }
if (giftModel.isManghe()) {
viewHolder.tv_gift_change_love_values.setVisibility(View.GONE);
}
// if (giftModel.isManghe()) {
// viewHolder.tv_gift_change_love_values.setVisibility(View.GONE);
// }
return convertView;
}

View File

@@ -1,36 +1,51 @@
package com.qxcm.moduleutil.adapter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.blankj.utilcode.util.ToastUtils;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.GiftLabelBean;
import com.qxcm.moduleutil.bean.RewardUserBean;
import com.qxcm.moduleutil.bean.RoonGiftModel;
import com.qxcm.moduleutil.bean.WalletBean;
import com.qxcm.moduleutil.bean.room.RoomAuction;
import com.qxcm.moduleutil.databinding.RoomVpGiftBinding;
import com.qxcm.moduleutil.event.GiftDoubleClickEvent;
import com.qxcm.moduleutil.event.GiftUserRefreshEvent;
import com.qxcm.moduleutil.event.RoomGiftClickEvent;
import com.qxcm.moduleutil.event.RoomGiftClickToEvent;
import com.qxcm.moduleutil.presenter.RewardGiftContacts;
import com.qxcm.moduleutil.presenter.RewardGiftPresenter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter, RoomVpGiftBinding> implements RewardGiftContacts.View {
private String id;
private GiftTwoAdapter mAdapter;
private GiftRoomAdapter roomAdapter;
private String tag;
private int pageSize = 100;//一页显示的礼物个数
private int pageCount;//页数
private int type;//1:房间点击进入的2打赏进入的
private List<RoonGiftModel> giftList=new ArrayList<>();
public static GiftTwoDetailsFragment newInstance(String type) {
public static GiftTwoDetailsFragment newInstance(String id,int type) {
Bundle args = new Bundle();
args.putString("id", type);
args.putString("id", id);
args.putInt("type", type);
GiftTwoDetailsFragment fragment = new GiftTwoDetailsFragment();
fragment.setArguments(args);
return fragment;
@@ -40,12 +55,13 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
id = arguments.getString("id");
type = arguments.getInt("type");
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// EventBus.getDefault().register(this);
EventBus.getDefault().register(this);
}
@Override
@@ -55,13 +71,12 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
@Override
protected void initData() {
MvpPre.getGiftList(id);
MvpPre.getGiftList(id,type);
}
@Override
protected void initView() {
}
@Override
@@ -70,18 +85,60 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
}
public RoonGiftModel getGiftList() {
if (giftList != null) {
for (RoonGiftModel item : giftList) {
if (item.isChecked()) {
return item;
}
}
}
return null;
}
@Override
public void setGiftList(List<RoonGiftModel> data) {
pageCount = (int) Math.ceil(data.size() * 1.0 / pageSize);
for (int j = 0; j < pageCount; j++) {
mAdapter = new GiftTwoAdapter(getActivity(), data, j, "0");
mBinding.rvGift.setAdapter(mAdapter);
public void setGiftList(List<RoonGiftModel> data,int type) {
if (type == 1){
giftList=new ArrayList<>();
giftList.addAll(data);
pageCount = (int) Math.ceil(data.size() * 1.0 / pageSize);
for (int j = 0; j < pageCount; j++) {
roomAdapter = new GiftRoomAdapter(getActivity(), data, j, "0");
mBinding.rvGift.setAdapter(roomAdapter);
}
}else {
giftList=new ArrayList<>();
giftList.addAll(data);
pageCount = (int) Math.ceil(data.size() * 1.0 / pageSize);
for (int j = 0; j < pageCount; j++) {
// mAdapter = new GiftTwoAdapter(getActivity(), data, j, "0");
// mBinding.rvGift.setAdapter(mAdapter);
roomAdapter = new GiftRoomAdapter(getActivity(), data, j, "0");
mBinding.rvGift.setAdapter(roomAdapter);
}
}
// EventBus.getDefault().post(new RoomGiftEvent(data));
}
@Override
public void giveGift() {
}
@Override
public void wallet(WalletBean walletBean) {
}
@Override
public void reward_zone() {
ToastUtils.showShort("打赏成功");
}
@Override
public void roomAuctionJoin(RoomAuction.AuctionListBean auctionListBean) {
}
@Override
public void getRewardList(List<RewardUserBean> rewardUserBeanList) {
@@ -92,5 +149,97 @@ public class GiftTwoDetailsFragment extends BaseMvpFragment<RewardGiftPresenter,
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGiftClicRoomkEvent(RoomGiftClickEvent event) {
if (giftList == null){
giftList = new ArrayList<>();
giftList.add(event.gift);
}
if (event.type == 1) {
String id = event.gift.getGift_id();
for (int i = 0; i < giftList.size(); i++) {
RoonGiftModel giftModel = giftList.get(i);
if (giftModel.getGift_id().equals(id)) {
if (!giftModel.isChecked()) {
EventBus.getDefault().post(new GiftUserRefreshEvent(giftModel.isCan_send_self(), event.type,event.gift));
giftModel.setChecked(true);
}
} else {
giftModel.setChecked(false);
}
}
if (event.adapter != null && event.adapter.get() != null) {
event.adapter.get().notifyDataSetChanged();
}
} else if (event.type == 2) {
String id = event.gift.getGift_id();
RoonGiftModel selGift = null;
for (int i = 0; i < giftList.size(); i++) {
RoonGiftModel giftModel = giftList.get(i);
if (giftModel.getGift_id().equals(id)) {
selGift = giftModel;
if (!giftModel.isChecked()) {
EventBus.getDefault().post(new GiftUserRefreshEvent(giftModel.isCan_send_self(), event.type,event.gift));
giftModel.setChecked(true);
}
} else {
giftModel.setChecked(false);
}
}
if (event.adapter != null && event.adapter.get() != null) {
event.adapter.get().notifyDataSetChanged();
}
if (selGift != null) {
EventBus.getDefault().post(new GiftDoubleClickEvent());
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGiftClicRoomkTEvent(RoomGiftClickToEvent event) {
if (giftList == null){
giftList = new ArrayList<>();
giftList.add(event.gift);
}
if (event.type == 1) {
String id = event.gift.getGift_id();
for (int i = 0; i < giftList.size(); i++) {
RoonGiftModel giftModel = giftList.get(i);
if (giftModel.getGift_id().equals(id)) {
if (!giftModel.isChecked()) {
EventBus.getDefault().post(new GiftUserRefreshEvent(giftModel.isCan_send_self(), event.type,event.gift));
giftModel.setChecked(true);
}
} else {
giftModel.setChecked(false);
}
}
if (event.adapter != null && event.adapter.get() != null) {
event.adapter.get().notifyDataSetChanged();
}
} else if (event.type == 2) {
String id = event.gift.getGift_id();
RoonGiftModel selGift = null;
for (int i = 0; i < giftList.size(); i++) {
RoonGiftModel giftModel = giftList.get(i);
if (giftModel.getGift_id().equals(id)) {
selGift = giftModel;
if (!giftModel.isChecked()) {
EventBus.getDefault().post(new GiftUserRefreshEvent(giftModel.isCan_send_self(), event.type,event.gift));
giftModel.setChecked(true);
}
} else {
giftModel.setChecked(false);
}
}
if (event.adapter != null && event.adapter.get() != null) {
event.adapter.get().notifyDataSetChanged();
}
if (selGift != null) {
EventBus.getDefault().post(new GiftDoubleClickEvent());
}
}
}
}

View File

@@ -5,7 +5,11 @@ import com.chad.library.adapter.base.BaseViewHolder;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.utils.ImageUtils;
/**
*@author qx
*@data 2025/6/10
*@description: 点赞适配
*/
public class LikeListAdapter extends BaseQuickAdapter<CircleListBean.LikeList, BaseViewHolder> {
public LikeListAdapter() {
super(R.layout.item_like_list);

View File

@@ -4,15 +4,25 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.qxcm.moduleutil.R;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.room.RoomOnlineBean;
import com.qxcm.moduleutil.utils.ImageUtils;
public class LikeUserAdapter extends BaseQuickAdapter<CircleListBean.LikeList, BaseViewHolder> {
/**
*@author qx
*@data 2025/6/10
*@description: 显示用户小头像
*/
public class LikeUserAdapter<T> extends BaseQuickAdapter<T, BaseViewHolder> {
public LikeUserAdapter() {
super(R.layout.item_like_user);
}
@Override
protected void convert(BaseViewHolder helper, CircleListBean.LikeList item) {
ImageUtils.loadHeadCC(item.getAvatar(), helper.getView(R.id.user_icon));
protected void convert(BaseViewHolder helper,T item) {
if (item instanceof CircleListBean.LikeList) {
ImageUtils.loadHeadCC(((CircleListBean.LikeList) item).getAvatar(), helper.getView(R.id.user_icon));
} else {
// 可扩展:通过接口回调获取头像 URL
ImageUtils.loadHeadCC(((RoomOnlineBean) item).getAvatar(), helper.getView(R.id.user_icon));
}
}
}

View File

@@ -1,5 +1,8 @@
package com.qxcm.moduleutil.adapter;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -73,18 +76,19 @@ public class ReplyAdapter extends RecyclerView.Adapter<ReplyAdapter.ReplyViewHol
return isExpanded ? replyList.size() : Math.min(2, replyList.size());
}
static class ReplyViewHolder extends RecyclerView.ViewHolder {
class ReplyViewHolder extends RecyclerView.ViewHolder {
private TextView tvNickname;
private TextView tvContent;
private TextView btnReply;
private TextView tvTime;
private TextView btnShowAllReplies;
public ReplyViewHolder(@NonNull View itemView) {
super(itemView);
tvNickname = itemView.findViewById(R.id.tv_name);
tvContent = itemView.findViewById(R.id.tv_reply);
btnReply = itemView.findViewById(R.id.btn_reply);
tvTime = itemView.findViewById(R.id.tv_time);
// btnShowAllReplies = itemView.findViewById(R.id.btn_show_all_replies);
}
public void bind(CommentBean.CommentDetailsBean.Replies reply,int position, OnReplyClickListener listener,OnReplyLongClickListener longClickListener) {
@@ -110,7 +114,14 @@ public class ReplyAdapter extends RecyclerView.Adapter<ReplyAdapter.ReplyViewHol
}
return false;
});
// 控制“全部评论...”按钮的显示
// btnShowAllReplies.setVisibility(position > 2 ? VISIBLE : GONE);
//
// btnShowAllReplies.setOnClickListener(v -> {
//// replyAdapter.setExpanded(true); // 展开所有评论
// notifyDataSetChanged(); // 刷新适配器
// btnShowAllReplies.setVisibility(GONE); // 隐藏按钮
// });
}
}
}

View File

@@ -86,6 +86,7 @@ public abstract class BaseMvpDialogFragment<P extends IPresenter, VDM extends Vi
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
if (isAnimation) {
window.setWindowAnimations(R.style.CommonShowDialogBottom);
}

View File

@@ -34,14 +34,13 @@ import com.lahm.library.EmulatorCheckCallback;
import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.event.AppLifecycleEvent;
import com.qxcm.moduleutil.interfaces.AppLifecycleUtil;
import com.qxcm.moduleutil.rtc.RtcManager;
import com.qxcm.moduleutil.utils.FloatWindowHelper;
import com.qxcm.moduleutil.utils.SPConstants;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.utils.UtilConfig;
import com.qxcm.moduleutil.utils.config.EnvironmentEnum;
import com.qxcm.moduleutil.utils.config.EnvironmentPrefs;
import com.qxcm.moduleutil.widget.CommonAppConfig;
import com.qxcm.moduleutil.widget.Constants;
import com.qxcm.moduleutil.widget.CustomRefreshHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
@@ -58,9 +57,7 @@ import java.security.MessageDigest;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import io.reactivex.disposables.Disposable;
import lombok.Getter;
@@ -78,6 +75,14 @@ public class CommonAppContext extends MultiDexApplication {
@Getter
private EnvironmentEnum currentEnvironment;
public UserBean mUserBean;
public boolean isShow;
public boolean isPlaying;
public String playId;
public String playCover;
public boolean showSelf;//盲盒是否能送自己
public String playName;
private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
private ScheduledExecutorService scheduledExecutorServiceRoom = null;
@@ -96,6 +101,7 @@ public class CommonAppContext extends MultiDexApplication {
UtilConfig.checkInEmulator();
}
}
// RtcManager.instance(this);
EnvironmentPrefs prefs = new EnvironmentPrefs(this);
currentEnvironment = prefs.getSelectedEnvironment();
}

View File

@@ -1,13 +1,21 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
@Data
public class BlackUserBean {
private String userName;
private String userId;
private String userAvatar;
private int type;//0:关注1黑名单2粉丝
private int status;//0:未关注 1已关注
private int user_id;
private String createTime;
private String nickname;
private String avatar;
private int sex;
private String user_code;
private int is_online;
private int is_follow;
private List<String> icon;
}

View File

@@ -0,0 +1,298 @@
package com.qxcm.moduleutil.bean;
import com.qxcm.moduleutil.bean.room.RankInfo;
import java.util.List;
/**
* 项目名称 qipao-android
* 包名com.qpyy.room.bean
* 创建人 黄强
* 创建时间 2020/7/25 14:38
* 描述 describe
*/
public class CharmRankingResp {
private MyBean my;
private List<ListsBean> lists;
public MyBean getMy() {
return my;
}
public void setMy(MyBean my) {
this.my = my;
}
public List<ListsBean> getLists() {
return lists;
}
public void setLists(List<ListsBean> lists) {
this.lists = lists;
}
public static class MyBean {
/**
* head_picture : https://gudao-prod.oss-cn-hangzhou.aliyuncs.com/android_images/577547/20200331141523_1585635321420.png
* nickname : 687592
* user_id : 577547
* level : 55
* number : 0
* rank : -1
* diff : 52474
* rank_info : {"rank_id":"55","rank_name":1000,"nobility_id":0,"nobility_name":"","picture":""}
*/
private String head_picture;
private String nickname;
private String user_id;
private String level;
private String number;
private int rank;
private String diff;
private String sex;
private String number_format;
public String getNumber_format() {
return number_format;
}
public void setNumber_format(String number_format) {
this.number_format = number_format;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
private RankInfo rank_info;
private String nobility_icon;
private String level_icon;
public String getNobility_icon() {
return nobility_icon;
}
public void setNobility_icon(String nobility_icon) {
this.nobility_icon = nobility_icon;
}
public String getLevel_icon() {
return level_icon;
}
public void setLevel_icon(String level_icon) {
this.level_icon = level_icon;
}
public String getHead_picture() {
return head_picture;
}
public void setHead_picture(String head_picture) {
this.head_picture = head_picture;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getDiff() {
return diff;
}
public void setDiff(String diff) {
this.diff = diff;
}
public RankInfo getRank_info() {
return rank_info;
}
public void setRank_info(RankInfo rank_info) {
this.rank_info = rank_info;
}
}
public static class ListsBean {
/**
* user_id : 642649
* number : 43280001
* head_picture : https://gudao-prod.oss-cn-hangzhou.aliyuncs.com/android_images/642649/20200601132728_1590989246548.jpeg
* nickname : 109179
* level : 4
* sex : 1
* nobility_icon : http://gudao-prod.oss-cn-hangzhou.aliyuncs.com/admin_images/5e71d1ef847ba.png
* rank : 1
* rank_info : {"rank_id":"4","rank_name":4,"nobility_id":6,"nobility_name":"帝皇","picture":""}
*/
private String user_id;
private String number;
private String head_picture;
private String nickname;
private String level;
private String sex;
private String nobility_icon;
private String level_icon;
private String user_code;
private int rank;
private RankInfo rank_info;
private String number_format;
private String good_number;
private String id_color;
public String getUser_code() {
return user_code;
}
public void setUser_code(String user_code) {
this.user_code = user_code;
}
public String getNumber_format() {
return number_format;
}
public void setNumber_format(String number_format) {
this.number_format = number_format;
}
public String getLevel_icon() {
return level_icon;
}
public void setLevel_icon(String level_icon) {
this.level_icon = level_icon;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getHead_picture() {
return head_picture;
}
public void setHead_picture(String head_picture) {
this.head_picture = head_picture;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getNobility_icon() {
return nobility_icon;
}
public void setNobility_icon(String nobility_icon) {
this.nobility_icon = nobility_icon;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public RankInfo getRank_info() {
return rank_info;
}
public void setRank_info(RankInfo rank_info) {
this.rank_info = rank_info;
}
public String getGood_number() {
return good_number;
}
public void setGood_number(String good_number) {
this.good_number = good_number;
}
public String getId_color() {
return id_color;
}
public void setId_color(String id_color) {
this.id_color = id_color;
}
}
}

View File

@@ -10,7 +10,7 @@ import lombok.Data;
*/
@Data
public class ExpandColumnBean {
private String id;
private String user_id;
private String sex;
private String nickname;
private String avatar;

View File

@@ -0,0 +1,13 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
@Data
public class FromUserInfo {
private String nickname;
private String avatar;
private String user_id;
private List<String> icon;
}

View File

@@ -1,51 +1,15 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
@Data
public class GiftBean {
private String number;
private String gift_id;
private String name;
private String picture;
private String price;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getGift_id() {
return gift_id;
}
public void setGift_id(String gift_id) {
this.gift_id = gift_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
private String gift_name;
private String gift_price;
private int file_type;
private String play_image;
private String base_image;
private String gift_type;
}

View File

@@ -4,6 +4,6 @@ import lombok.Data;
@Data
public class GiftLabelBean {
private String label;
private String id;
private String name;
}

View File

@@ -0,0 +1,20 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
@Data
public class HostBean {
private String id;
private String user_id;
private String room_id;
private String nickname;
private String avatar;
private String sex;
private String type;//类型 1主持人 2管理员
private String ratio;//主持人收益比
private List<String> icon;//
private String earnings;//收益
}

View File

@@ -0,0 +1,14 @@
package com.qxcm.moduleutil.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class MixerResp {
private int id;
private String name;
private int imgUrtl;
}

View File

@@ -0,0 +1,30 @@
package com.qxcm.moduleutil.bean;
import com.alibaba.fastjson.serializer.SerializeBeanInfo;
import java.io.Serializable;
import lombok.Data;
/**
*@author qx
*@data 2025/6/19
*@description: 已点歌曲实体
*/
@Data
public class MusicSongBean implements Serializable {
private String did;//歌曲id
private String room_id;
private String song_code;//歌曲唯一标识
private String song_name;//歌曲名称
private String singer;//歌手
private String poster;//封面
private String duration;//播放时长
private int sort;//
private String user_id;
private String nickname;
private String avatar;
private String dress;
private String charm;
private int is_hot;//是否是主持并且是在9号麦位上
}

View File

@@ -0,0 +1,19 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/7/1
*@description: cp房实体类
*/
@Data
public class MyCpRoom {
private String room_name;
private int room_number;
private String end_time;
private String user1_avatar;
private String user2_avatar;
private int earnings;
private String relation;
private String room_id;
}

View File

@@ -2,113 +2,27 @@ package com.qxcm.moduleutil.bean;
import android.text.TextUtils;
import lombok.Data;
@Data
public class MyFootResp {
private String room_name;
private String room_number;//房间号
private String room_name;//房间名称
private String room_code;
private String popularity;
private String label_name;
private String label_icon;
private String label_icon;//房间标签图标
private String owner_picture;
private String owner_nickname;
private String room_id;
private String room_id;//房间id
private int locked;
private String label_id; //房间标签id
private String room_intro; //房间简介
private String room_cover;//房间封面
private String cover_picture;
private String label_id;
private String user_count;//人数
public String getLabel_id() {
return label_id;
}
private String room_password;//密码
public void setLabel_id(String label_id) {
this.label_id = label_id;
}
public String getRoomPicture() {
if (!TextUtils.isEmpty(cover_picture)) {
return cover_picture;
}
return owner_picture;
}
public String getCover_picture() {
return cover_picture;
}
public void setCover_picture(String cover_picture) {
this.cover_picture = cover_picture;
}
public int getLocked() {
return locked;
}
public void setLocked(int locked) {
this.locked = locked;
}
public String getRoom_id() {
return room_id;
}
public void setRoom_id(String room_id) {
this.room_id = room_id;
}
public String getRoom_name() {
return room_name;
}
public void setRoom_name(String room_name) {
this.room_name = room_name;
}
public String getRoom_code() {
return room_code;
}
public void setRoom_code(String room_code) {
this.room_code = room_code;
}
public String getPopularity() {
return popularity;
}
public void setPopularity(String popularity) {
this.popularity = popularity;
}
public String getLabel_name() {
return label_name;
}
public void setLabel_name(String label_name) {
this.label_name = label_name;
}
public String getLabel_icon() {
return label_icon;
}
public void setLabel_icon(String label_icon) {
this.label_icon = label_icon;
}
public String getOwner_picture() {
return owner_picture;
}
public void setOwner_picture(String owner_picture) {
this.owner_picture = owner_picture;
}
public String getOwner_nickname() {
return owner_nickname;
}
public void setOwner_nickname(String owner_nickname) {
this.owner_nickname = owner_nickname;
}
}

View File

@@ -1,5 +1,15 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
/**
* @author qx
* @data 2025/6/11
* @description: 我创建的房间
*/
@Data
public class MyRoomBean {
/*
@@ -15,103 +25,49 @@ public class MyRoomBean {
"today_income": 0
*/
private String room_id;
private String room_number;
private String user_id;
private String nickname;
private String room_name; //房间名称
private int room_id; //房间ID
private String label_id; //房间类型
private String room_cover;//房间封面
private String apply_status;//房间状态1:申请中2:申请通过3:申请被拒绝
private String room_status;//房间状态1:正常2:封禁3:关闭
private String room_password;//房间密码
private String type_id;//房间类型id
private String type_name;//类型名称
private String label_icon; //分类图标
private String label_id; //分类id
private String is_user_code;//是否使用靓号10
private String today_profit;//今日收益
private int online_num; //房间在线人数
private int visit_num;//访问人数
private int follow_num;//房间关注人数
private String ratio;//房间提成
private List<CpRoom> cp_room;
private String room_intro;//房间介绍
private String user_count;//房间人数
private String label_name; //房间类型名称
private String cover_picture; //房间图片
private String label_icon; //房间类型图标
private String online_num; //房间在线人数
private String favorite_count; //房间收藏数
private String come_count; //房间进入数
private Double today_income; //今日收益;
private int earnings_ratio;//房间收益比例
public int getEarnings_ratio() {
return earnings_ratio;
@Data
static class CpRoom {
private String id;
private String room_name;
private String room_number;
private String end_time;
private String earnings;
private String user1_avatar;
private String user2_avatar;
}
public void setEarnings_ratio(int earnings_ratio) {
this.earnings_ratio = earnings_ratio;
}
public String getRoom_name() {
return room_name;
}
public void setRoom_name(String room_name) {
this.room_name = room_name;
}
public int getRoom_id() {
return room_id;
}
public void setRoom_id(int room_id) {
this.room_id = room_id;
}
public String getLabel_id() {
return label_id;
}
public void setLabel_id(String label_id) {
this.label_id = label_id;
}
public String getLabel_name() {
return label_name;
}
public void setLabel_name(String label_name) {
this.label_name = label_name;
}
public String getCover_picture() {
return cover_picture;
}
public void setCover_picture(String cover_picture) {
this.cover_picture = cover_picture;
}
public String getLabel_icon() {
return label_icon;
}
public void setLabel_icon(String label_icon) {
this.label_icon = label_icon;
}
public String getOnline_num() {
return online_num;
}
public void setOnline_num(String online_num) {
this.online_num = online_num;
}
public String getFavorite_count() {
return favorite_count;
}
public void setFavorite_count(String favorite_count) {
this.favorite_count = favorite_count;
}
public String getCome_count() {
return come_count;
}
public void setCome_count(String come_count) {
this.come_count = come_count;
}
public Double getToday_income() {
return today_income;
}
public void setToday_income(Double today_income) {
this.today_income = today_income;
}
}

View File

@@ -0,0 +1,13 @@
package com.qxcm.moduleutil.bean;
public class RefreshEvent {
private String roomId;
public RefreshEvent(String roomId) {
this.roomId = roomId;
}
public String getRoomId() {
return roomId;
}
}

View File

@@ -0,0 +1,18 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/16
*@description: 关系信息
*/
@Data
public class RelationshipBean {
private String nickname;
private String avatar;
private String relation;
private String nickname2;
private String avatar2;
private String time;
}

View File

@@ -9,4 +9,6 @@ public class RewardUserBean {
private String avatar;
private String is_online;
private String total_price;
private String pit_number;
private boolean isSelect = false;
}

View File

@@ -0,0 +1,28 @@
package com.qxcm.moduleutil.bean;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.qxcm.moduleutil.RoomAutionTimeBean;
import java.util.List;
import lombok.Data;
/**
*@author qx
*@data 2025/6/28
*@description: 拍卖房中选择对应的关系和礼物、时间
*/
@Data
public class RoomAuctionABean implements MultiItemEntity {
private int itemType;
private List<RoomRelationBean> roomRelationBeanList;
private List<RoomAutionTimeBean> roomTimeBeanList;
private List<RoonGiftModel> roomGiftBeanList;
@Override
public int getItemType() {
return itemType;
}
}

View File

@@ -0,0 +1,26 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
@Data
public class RoomBgBean {
private List<RoomBg> public_bg;
private List<RoomBg> private_bg;
@Data
public static class RoomBg{
private String id;//图片id
private String image_name;//图片名称
private String image_url;//图片地址
private String upload_user;//上传用户id
private String image_size;//大小
private String status;//状态 1 正常 2 删除
private String createtime;//创建时间
private boolean isPublic; // 是否是公共背景
private boolean isAddButton; // 是否是添加按钮项
}
}

View File

@@ -0,0 +1,16 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/20
*@description: 房间魅力排行
*/
@Data
public class RoomCharmRankBean {
private String user_id;//用户ID
private String nickname;//昵称
private String avatar;//头像
private String dress;//装扮
private String charm;//魅力值
}

View File

@@ -0,0 +1,21 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
@Data
public class RoomHostUserBean {
private String user_id;
private String user_code;
private String nickname;
private String head_picture;
private String sex;
private String follow;
private String fans_count;
private String online_text;
private String good_number;
private String id_color;
private int age;
private String level_icon;
}

View File

@@ -0,0 +1,13 @@
package com.qxcm.moduleutil.bean;
/**
*@author qx
*@data 2025/6/12
*@description: 输入文字传递给聊天室PublicScreenEaseChatFragment
*/
public class RoomInputEvent {
public String text;
public RoomInputEvent(String text) {
this.text = text;
}
}

View File

@@ -0,0 +1,71 @@
package com.qxcm.moduleutil.bean;
import com.qxcm.moduleutil.bean.room.AuctionBean;
import com.qxcm.moduleutil.bean.room.RoomAuction;
import com.qxcm.moduleutil.bean.room.RoomBean;
import java.util.List;
import lombok.Data;
@Data
public class RoomMessageEvent {
private int MsgType; // 消息类型,如 QXRoomMessageTypeJoin
private String RoomId; // 房间 ID
private T Text; // 携带的数据对象
public RoomMessageEvent(int msgType, String roomId, T text) {
MsgType = msgType;
RoomId = roomId;
Text = text;
}
@Data
public static class T {
private String text;
private String GiftNum;
private String pit_number;
private String jia_jia;
private UserInfo FromUserInfo;
private UserInfo ToUserInfo;
private GiftBean GiftInfo;
private int room_up_pit_type;
private MusicSongBean songInfo;
private MusicSongBean nextInfo;
private int action;
private int total;
private RoomBean RoomInfo;
private RoomAuction.AuctionUserBean auction_user;
private List<RoomAuction.AuctionListBean> auction_list;
private long duration;//时间
private RoomAuction.AuctionListBean recipient;//是否成功,有值的是成功的,没有值的时候,是失败的
private int type;//拍卖者1上麦、2下麦
private String hot_value;
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 pk_end_times;//pk结束时间
private String room_id_a;//发起者房间id
private String room_id_b;//接收者房间id
private String create_value_a;//发起者房间值
private String receive_value_b;//接受者房间值
private String pk_id;
private String victory_name;//胜利的名称
private String victory_cover;//胜利的头像
private String defeated_name;//输掉的名称
private String defeated_cover;//输掉的头像
private String end_time;//惩罚时间
private int is_mute;//1静音对方 0不静音对方
}
@Data
public static class text {
private long position;
}
}

View File

@@ -0,0 +1,26 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
@Data
public class RoomMessageEvent1 {
private int MsgType; // 消息类型,如 QXRoomMessageTypeJoin
private String RoomId; // 房间 ID
private RoomMessageEvent.T Text; // 携带的数据对象
public RoomMessageEvent1(int msgType, String roomId, RoomMessageEvent.T text) {
MsgType = msgType;
RoomId = roomId;
Text = text;
}
@Data
public static class T {
private String text;
private String GiftNum;
private UserInfo FromUserInfo;
private UserInfo ToUserInfo;
private GiftBean GiftInfo;
}
}

View File

@@ -0,0 +1,43 @@
package com.qxcm.moduleutil.bean;
import org.greenrobot.eventbus.EventBus;
import java.util.Map;
public class RoomMessageManager {
private static final RoomMessageManager instance = new RoomMessageManager();
private RoomMessageManager() {}
public static RoomMessageManager getInstance() {
return instance;
}
/**
* 接收原始消息,转换后发送到 EventBus
*/
public void onNewMessage(String roomId, int msgType, RoomMessageEvent.T data) {
RoomMessageEvent event = new RoomMessageEvent(msgType, roomId, data);
EventBus.getDefault().post(event);
}
/**
* 注册监听器(如 Fragment 或 Activity
*/
public void register(Object subscriber) {
if (!EventBus.getDefault().isRegistered(subscriber)) {
EventBus.getDefault().register(subscriber);
}
}
/**
* 反注册监听器
*/
public void unregister(Object subscriber) {
if (EventBus.getDefault().isRegistered(subscriber)) {
EventBus.getDefault().unregister(subscriber);
}
}
}

View File

@@ -0,0 +1,18 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/28
*@description: 房间中根据类型获取到的关系实体
*/
@Data
public class RoomRelationBean {
private String relation_id;//关系id
private String name;//关系名称
private String type;//1真爱拍2亲密拍
private String icon;//图标
private boolean isSelected;
}

View File

@@ -0,0 +1,16 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
@Data
public class RoomSearchResp {
private String id;
private String name;
private String pictrue;
private String code;
private List<String> icon;
}

View File

@@ -0,0 +1,16 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/17
*@description: 清楚消息
*/
@Data
public class RoomSettingEvent {
private String roomId;
private String userId;
private int type;
private int room_up_pit_type;///// 房间当前麦位模式 2 自由模式 1 排麦
}

View File

@@ -0,0 +1,12 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/7/1
*@description: 选择完礼物后,请求接口得到的时间
*/
@Data
public class RoomTime {
private String time_day;
}

View File

@@ -1,5 +1,12 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/11
*@description: 房间分类列表
*/
@Data
public class RoomTypeModel {
@@ -11,39 +18,8 @@ public class RoomTypeModel {
*/
private String id;
private String name;
private String label_name;
private String type;
private String sort;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
}

View File

@@ -0,0 +1,4 @@
package com.qxcm.moduleutil.bean;
public class RoomWheatEvent {
}

View File

@@ -2,15 +2,22 @@ package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/12
*@description: 礼物
*/
@Data
public class RoonGiftModel {
private String id;
private String name;
private String gid;//礼物id
private String gift_name;//礼物名称
private String base_image;//礼物图片
private String gift_price;//礼物价格
private String gift_id;//礼物id
private String title;
private String all_room_push;
private String picture;
private String price;
private String special;
private String sort;
private String type;
@@ -18,17 +25,17 @@ public class RoonGiftModel {
private String sold;
private String cardiac;
private boolean isChecked;
private boolean isSelected;
private boolean can_send_self;//是否能送自己
public boolean isCan_send_self() {
if ( isManghe()) {
return true;
}
return can_send_self;
}
// public boolean isCan_send_self() {
// if ( isManghe()) {
// return true;
// }
// return can_send_self;
// }
public boolean isManghe() {
return type.equals("4") || type.equals("5") || type.equals("13");
}
// public boolean isManghe() {
// return type.equals("4") || type.equals("5") || type.equals("13");
// }
}

View File

@@ -0,0 +1,21 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/20
*@description: 歌曲实体类
*/
@Data
public class SongMusicBean {
private String room_song_id; // 歌曲列表ID
private String times; // 场次
private String times_status; // 本场次状态1-进行中2-结束
private String room_id; // 房间ID
private String user_id; // 用户ID
private String song_name; // 歌曲名
private String song_id; // 歌曲唯一标识
private String song_url; // 歌曲资源地址
private String status; // 状态1-排队中2-演唱中3-演唱结束
private String sort; // 阈值 越大越靠前
}

View File

@@ -1,28 +1,33 @@
package com.qxcm.moduleutil.bean;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import java.util.List;
import lombok.Data;
@Data
public class TopRoom {
private String id;
private String user_id;
private String room_name;
private String label_id;
private String cover_picture;
private String voice;
private String on_line;
private String chatrooms;
private String popularity;
private String room_id;
private String user_count;
public class TopRoom implements MultiItemEntity {
private int itemViewType;
private String room_id;//房间id 请求接口是这个
private String room_number;//房间号 房间展示是这个
private String user_id; //房主id
private String room_name; //房间名称
private String room_cover;//房间封面
private String room_password;//房间密码
private String hot_value;//火热值
private List<UserList> user_list;
@Override
public int getItemType() {
return 1;
}
@Data
public static class UserList {
private String head_picture;
private String nickname;
private String user_id;
private String avatar;
}
}

View File

@@ -18,6 +18,7 @@ public class UserBean implements Serializable {
private String tencent_im;
private String mobile;
private int sex;
private int auth;
private List<MultiUserBean> multi_user;

View File

@@ -0,0 +1,23 @@
package com.qxcm.moduleutil.bean;
import java.util.List;
import lombok.Data;
/**
*@author qx
*@data 2025/6/24
*@description: 关注列表
*/
@Data
public class UserFollowBean {
private int follow_id;
private String createTime;
private String nickname;
private String avatar;
private int sex;
private String user_code;
private int is_online;
private int is_follow;
private List<String> icon;
}

View File

@@ -1,5 +1,9 @@
package com.qxcm.moduleutil.bean;
import com.google.gson.annotations.SerializedName;
import com.qxcm.moduleutil.bean.room.RoomAuction;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
@@ -9,10 +13,12 @@ import lombok.Data;
*@description: 个人信息,点击我的获取
*/
@Data
public class UserInfo {
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1L;
public static final String FEMALE = "2";
public static final String MALE = "1";
private int id; //用户id
@SerializedName(value = "id", alternate = "user_id")
private int user_id; //用户id
private String user_code;//用户id码
private String avatar;//头像
private String nickname;//昵称
@@ -24,15 +30,30 @@ public class UserInfo {
private int charm_level; //魅力等级
private int is_use_code; //是否是靓号 0否 1是
private String tencent_im;
private String jia_jia;//坐骑
private int is_in_pit;//是否在麦上1在0不在
private int is_open_live_remind;//是否设置开播提醒
private String birthday;//生日
private String profile;//简介
private String home_bgimages;//背景图片
private String is_follow;//是否关注
private int is_follow;//是否关注
private List<UserTagBean> tag_list;
private List<GiftWall> gift_wall;
private int age;//年龄
private String is_room;
private String dress;//头像框
private String charm;//魅力值
private String room_id;
private String guile;//公会名称
private String is_mute;//禁言状态 0否 1是
private String is_mute_pit;//禁麦状态 0否 1是
private String is_manager;//是否是管理员 0否 1是
private String is_host;//是否是主持 0否 1是
private String is_room_owner;//是否是房主 0否 1是
private String pit_number;//在点击麦上用户的时候使用
private String auction_id;//在拍卖中的拍卖序号
// @Data
// public static class TagList{

View File

@@ -0,0 +1,29 @@
package com.qxcm.moduleutil.bean;
/**
*@author qx
*@data 2025/6/28
*@description: 多布局下的viewItem包装类
*/
public class ViewItem {
// 定义四种 item 类型
public static final int TYPE_TEXT = 0;
public static final int TYPE_RELATION = 1;
public static final int TYPE_GIFT = 2;
public static final int TYPE_IMAGE_SELECTION = 3;
private int type;
private Object data;
public ViewItem(int type, Object data) {
this.type = type;
this.data = data;
}
public int getType() {
return type;
}
public Object getData() {
return data;
}
}

View File

@@ -0,0 +1,16 @@
package com.qxcm.moduleutil.bean;
import lombok.Data;
/**
*@author qx
*@data 2025/6/12
*@description:钱包实体
*/
@Data
public class WalletBean {
private String id;
private String user_id;
private String coin;//金币
private String earnings;//钻石
}

View File

@@ -0,0 +1,298 @@
package com.qxcm.moduleutil.bean;
import com.qxcm.moduleutil.bean.room.RankInfo;
import java.util.List;
/**
* 项目名称 qipao-android
* 包名com.qpyy.room.bean
* 创建人 黄强
* 创建时间 2020/7/25 14:38
* 描述 describe
*/
public class WealthRankingResp {
private MyBean my;
private List<ListsBean> lists;
public MyBean getMy() {
return my;
}
public void setMy(MyBean my) {
this.my = my;
}
public List<ListsBean> getLists() {
return lists;
}
public void setLists(List<ListsBean> lists) {
this.lists = lists;
}
public static class MyBean {
/**
* head_picture : https://gudao-prod.oss-cn-hangzhou.aliyuncs.com/android_images/577547/20200331141523_1585635321420.png
* nickname : 687592
* user_id : 577547
* level : 55
* number : 0
* rank : -1
* diff : 52474
* rank_info : {"rank_id":"55","rank_name":1000,"nobility_id":0,"nobility_name":"","picture":""}
*/
private String head_picture;
private String nickname;
private String user_id;
private String level;
private String number;
private int rank;
private String diff;
private String sex;
private String number_format;
public String getNumber_format() {
return number_format;
}
public void setNumber_format(String number_format) {
this.number_format = number_format;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
private RankInfo rank_info;
private String nobility_icon;
private String level_icon;
public String getNobility_icon() {
return nobility_icon;
}
public void setNobility_icon(String nobility_icon) {
this.nobility_icon = nobility_icon;
}
public String getLevel_icon() {
return level_icon;
}
public void setLevel_icon(String level_icon) {
this.level_icon = level_icon;
}
public String getHead_picture() {
return head_picture;
}
public void setHead_picture(String head_picture) {
this.head_picture = head_picture;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getDiff() {
return diff;
}
public void setDiff(String diff) {
this.diff = diff;
}
public RankInfo getRank_info() {
return rank_info;
}
public void setRank_info(RankInfo rank_info) {
this.rank_info = rank_info;
}
}
public static class ListsBean {
/**
* user_id : 642649
* number : 43280001
* head_picture : https://gudao-prod.oss-cn-hangzhou.aliyuncs.com/android_images/642649/20200601132728_1590989246548.jpeg
* nickname : 109179
* level : 4
* sex : 1
* nobility_icon : http://gudao-prod.oss-cn-hangzhou.aliyuncs.com/admin_images/5e71d1ef847ba.png
* rank : 1
* rank_info : {"rank_id":"4","rank_name":4,"nobility_id":6,"nobility_name":"帝皇","picture":""}
*/
private String user_id;
private String number;
private String head_picture;
private String nickname;
private String level;
private String sex;
private String nobility_icon;
private String level_icon;
private String user_code;
private int rank;
private RankInfo rank_info;
private String number_format;
private String good_number;
private String id_color;
public String getGood_number() {
return good_number;
}
public void setGood_number(String good_number) {
this.good_number = good_number;
}
public String getUser_code() {
return user_code;
}
public void setUser_code(String user_code) {
this.user_code = user_code;
}
public String getNumber_format() {
return number_format;
}
public void setNumber_format(String number_format) {
this.number_format = number_format;
}
public String getLevel_icon() {
return level_icon;
}
public void setLevel_icon(String level_icon) {
this.level_icon = level_icon;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getHead_picture() {
return head_picture;
}
public void setHead_picture(String head_picture) {
this.head_picture = head_picture;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getNobility_icon() {
return nobility_icon;
}
public void setNobility_icon(String nobility_icon) {
this.nobility_icon = nobility_icon;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public RankInfo getRank_info() {
return rank_info;
}
public void setRank_info(RankInfo rank_info) {
this.rank_info = rank_info;
}
public String getId_color() {
return id_color;
}
public void setId_color(String id_color) {
this.id_color = id_color;
}
}
}

View File

@@ -0,0 +1,12 @@
package com.qxcm.moduleutil.bean.room;
import lombok.Data;
/**
*@author qx
*@data 2025/6/28
*@description: 拍卖序号
*/
@Data
public class AuctionBean {
private String auction_id;
}

View File

@@ -0,0 +1,171 @@
package com.qxcm.moduleutil.bean.room;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.qxcm.moduleutil.bean.RoomMessageEvent;
public class EMMessageInfo implements MultiItemEntity {
/// 系统消息
public static final int QXRoomMessageTypeSystem = 1000;
/// 用户进入房间
public static final int QXRoomMessageTypeJoin = 1001;
/// 用户退出房间
public static final int QXRoomMessageTypeQuit = 1002;
/// 用户上麦
public static final int QXRoomMessageTypeUpSeat = 1003;
/// 用户下麦
public static final int QXRoomMessageTypeDownSeat = 1004;
/// 房间收到礼物
public static final int QXRoomMessageTypeGift = 1005;
/// 设置管理员
public static final int QXRoomMessageTypeSetManage = 1006;
/// 设置主持
public static final int QXRoomMessageTypeSetCompere = 1007;
/// 禁麦/解禁
public static final int QXRoomMessageTypeSeatMute = 1008;
/// 锁麦/解除锁麦
public static final int QXRoomMessageTypeSeatLock = 1009;
/// 踢出房间
public static final int QXRoomMessageTypeTakeOff = 1011;
/// 房间类型发生变化
public static final int QXRoomMessageTypeRoomTypeChanged = 1012;
/// 点歌/切歌/同意点歌
public static final int QXRoomMessageTypeSwicthSong = 1013;
/// 上麦模式发生变化 自由麦 | 排麦
public static final int QXRoomMessageTypeAplayPitModeDidChanged = 1014;
/// pk房数值变化
public static final int QXRoomMessageTypePKValueDidChanged = 1015;
/// 房间类型发生变化
public static final int QXRoomMessageTypeRoomTypeDidChanged = 1016;
/// 管理员被删除
public static final int QXRoomMessageTypeManagerIsDelete = 1017;
/// 主持人被删除
public static final int QXRoomMessageTypeCompereIsDelete = 1018;
/// k歌房送礼后魅力发生变化
public static final int QXRoomMessageTypeRoomIsClose = 1019;
/// 修改房间信息
public static final int QXRoomMessageTypeRoomUpdate = 1020;
/// 清楚魅力值
public static final int QXRoomMessageTypeRoom = 1021;
/// 拍卖者被拉上麦
public static final int QXRoomMessageTypeAuctionIsUp = 1022;
/// 拍卖者拍卖开始
public static final int QXRoomMessageTypeAuctionIsSelected = 1023;
/// 竞拍开始,竞拍麦位发生变化
public static final int QXRoomMessageTypeAuctionIsStart = 1024;
/// 竞拍结束
public static final int QXRoomMessageTypeAuctionIsEnd = 1025;
/// 主持延时
public static final int QXRoomMessageTypeCompereDelay = 1026;
/// 竞拍类型变化
public static final int QXRoomMessageTypeAuctionTypeChanged = 1027;
/// cp房送礼物推送礼物火热值
public static final int QXRoomMessageTypeRoomIsHostvalue = 1028;
/// 有人向我发起pk
public static final int QXRoomMessageTypeRoomRecieveInvitePk = 1029;
/// 拒绝或接受pk
public static final int QXRoomMessageTypeRoomPKAgreeOrRefuse = 1030;
/// pk开始
public static final int QXRoomMessageTypeRoomPKStart = 1031;
/// pk结束 惩罚时间
public static final int QXRoomMessageTypeRoomPKEnd = 1032;
/// pk断开
public static final int QXRoomMessageTypeRoomPKDisconnect = 1033;
///关闭对方麦克风
public static final int QXRoomMessageTypeMuteRemoteAudio = 125;
private RoomMessageEvent emMessage;
private int custom = 0;
/**
* 1 系统消息、官方公告
* 2 用户发送的消息
* 3 加入房间 、赠送礼物、上下麦、禁言
* 4 新用户注册
* 5 摇签
* 6 表情
* 8 球球大作战
* 9 派单需求
*
* @return
*/
@Override
public int getItemType() {
if (emMessage != null) {
int type = emMessage.getMsgType();
switch (type) {
case QXRoomMessageTypeSystem:
case QXRoomMessageTypeJoin:
case QXRoomMessageTypeQuit:
case QXRoomMessageTypeUpSeat:
case QXRoomMessageTypeDownSeat:
case QXRoomMessageTypeAplayPitModeDidChanged:
case QXRoomMessageTypeSetCompere://设置主持
case QXRoomMessageTypeSetManage:
case QXRoomMessageTypeManagerIsDelete:
case QXRoomMessageTypeCompereIsDelete:
case QXRoomMessageTypeAuctionIsUp:
case QXRoomMessageTypeAuctionIsSelected:
case QXRoomMessageTypeAuctionIsStart:
case QXRoomMessageTypeAuctionIsEnd:
case QXRoomMessageTypeCompereDelay:
case QXRoomMessageTypeAuctionTypeChanged:
case QXRoomMessageTypeRoomIsHostvalue:
case QXRoomMessageTypeRoomRecieveInvitePk:
case QXRoomMessageTypeRoomPKAgreeOrRefuse:
case QXRoomMessageTypeRoomPKStart:
case QXRoomMessageTypeRoomPKEnd:
case QXRoomMessageTypeRoomPKDisconnect:
return 1;
case QXRoomMessageTypeGift:
return 3;
case 1:
return 2;
case QXRoomMessageTypeRoomTypeChanged://房间类型发生变化
return 4;
case QXRoomMessageTypeSwicthSong://点歌/切歌/同意点歌
return 4;
case QXRoomMessageTypeRoomIsClose://魅力发生变化
return 4;
case QXRoomMessageTypeTakeOff://提出房间
return 4;
default:
return 5;
}
}
return 1;
}
public int getCustom() {
return custom;
}
public void setCustom(int custom) {
this.custom = custom;
}
public EMMessageInfo(RoomMessageEvent emMessage) {
this.emMessage = emMessage;
}
public RoomMessageEvent getEmMessage() {
return emMessage;
}
public void setEmMessage(RoomMessageEvent emMessage) {
this.emMessage = emMessage;
}
/**
* 检查ItemType是否在范围内避免crash
*
* @param action
* @return
*/
public boolean checkItemType(int action) {
return action > 0 && action < 10 && action != 7;
}
}

View File

@@ -0,0 +1,19 @@
package com.qxcm.moduleutil.bean.room;
import lombok.Data;
/**
*@author qx
*@data 2025/7/3
*@description: pk实体
*/
@Data
public class PkRoomInfo {
private String pk_room_id;//对方房间的roomId
private String invite_pk_user_id;//pk发起者的用户id
private String pk_id;//pkid
private String pk_time;//剩余时间点
private String my_room_value;//自己房间的pk值
private String pk_room_value;//对方房间的pk值
private String pk_part;;//2等待开始、3进行中、4惩罚阶段
private String pk_end_times;
}

View File

@@ -0,0 +1,41 @@
package com.qxcm.moduleutil.bean.room;
import java.util.List;
import lombok.Data;
@Data
public class RoomApplyListBean {
private List<Special> regular;//普通通道
private List<Special> special;//优先通道
private GiftInfo gift_info;
@Data
public static class Regular {
private String id; //排到id
private String user_id;//用户id
private String rank_value;//排序值
private String nickname;//昵称
private String avatar;//头像
}
@Data
public static class Special {
private String id; //排到id
private String user_id;//用户id
private String rank_value;//排序值
private String nickname;//昵称
private String avatar;//头像
}
@Data
public static class GiftInfo {
private String id;//用户助力上麦礼物id
private String user_id;//用户id设置本次礼物的用户id
private String room_id;//房间id
private String gift_id;//礼物id
private String gift_price;//礼物价格
private String gift_name;//礼物名称
private String base_image;//礼物图片
}
}

View File

@@ -0,0 +1,53 @@
package com.qxcm.moduleutil.bean.room;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
/**
*@author qx
*@data 2025/6/28
*@description: 拍卖房信息
*/
@Data
public class RoomAuction implements Serializable {
private static final long serialVersionUID = 1L;
private List<AuctionListBean> auction_list;//拍卖房右边列表
private AuctionUserBean auction_user;//拍卖房用户信息
@Data
public static class AuctionUserBean implements Serializable{
private String auction_id;
private String user_id;
private String nickname;
private String avatar;
private String sex;
private String user_code;
private String auction_type;//拍卖类型
private String relation_id;//关系id
private String gift_id;
private String gift_name;//礼物名称
private String gift_price;//礼物价值
private String time_day;//关系拍卖时间
private String dress;//用户头像装扮
private String relation_name;//关系名称
private String relation_icon;//关系图标
private String base_image;//礼物图片
private long duration;//时间
}
@Data
public class AuctionListBean implements Serializable {
private String user_id;
private String user_code;
private String nickname;
private String avatar;
private String dress;
private String sex;
private String gift_price;
private String charm;
private List<String> icon;
}
}

View File

@@ -1,5 +1,7 @@
package com.qxcm.moduleutil.bean.room;
import com.qxcm.moduleutil.bean.MusicSongBean;
import java.io.Serializable;
import java.util.List;
@@ -67,28 +69,41 @@ public class RoomBean implements Serializable {
* role : 3
*/
private String room_id;
private String room_id;//房间id
private String room_number;//房间id码
private String is_user_code;//是否使用靓号
private String room_name;//房间名称
private String room_cover;//房间封面
private String room_intro;//房间公告
private String type_id;//房间类型
private String type_name;//房间类型名称
private String user_id;//房主id
private String label_id;//类型id
private String label_icon;//房间类型图标
private String room_background;//房间背景
private String hot_value;//房间火热值
private String chatrooms;//房间群组id
private List<RoomPitBean> pit_list;//麦位信息
private String room_up_pit_type;
private int online_number;
private String room_code;
private String popularity;
private String chatrooms;
private String room_name;
private String label_icon_room;
private String bg_picture;
private String cover_picture;
private String playing;
private String label_id;
private String label_name;
private String wheat;
private String greeting;
private String type_id;
private String type_name;
private int show_ball_game;
private int is_password;
private String official_notice;
private String apply_count;
private String contribution;
private int role;
private List<RoomPitBean> pit_list;
private int cardiac; // 显示心动 1开 0关
private int is_fm;
private int room_type;//0普通房1电台房2相亲房3派单厅"
@@ -108,6 +123,8 @@ public class RoomBean implements Serializable {
private int status; // 相亲状态
private AInfo activity_img; // 相亲活动介绍图片
private RoomFriendBean friend;
private int is_pk; //1接收 2不接受
private int last_pk_room_id;//记录上次pk的房间id
public int getSceneId() {
if (sound_effect != null) {

View File

@@ -0,0 +1,24 @@
package com.qxcm.moduleutil.bean.room;
import lombok.Data;
/**
*@author qx
*@data 2025/7/1
*@description: Cp电影房用户信息
*/
@Data
public class RoomCpUserBean {
private String time_day;
private String user_id;
private String nickname;
private String avatar;
private String cp_id;
private String user_code;
private String user_id1;
private String nickname1;
private String avatar1;
private String user_code1;
private String dress;
private String dress1;
}

View File

@@ -1,51 +1,61 @@
package com.qxcm.moduleutil.bean.room;
import com.qxcm.moduleutil.bean.MusicSongBean;
import java.io.Serializable;
import java.util.List;
import lombok.Data;
/**
* 项目名称 qipao-android
* 包名com.qpyy.room.bean
* 创建人 王欧
* 创建时间 2020/7/24 2:58 PM
* 描述 describe
*@author qx
*@data 2025/6/10
*@description: 房间信息
*/
@Data
public class RoomInfoResp implements Serializable {
private RoomBean room_info;
private RoomOwnerBean owner_info;
private RoomUserBean user_info;
private static final long serialVersionUID = 1L;
private RoomBean room_info; //房间信息
private RoomOwnerBean room_owner;//房主信息
private RoomUserBean user_info;//用户信息
private List<BannerItem> banner;
private RoomOrderDemand demand;//嘉宾需求
private int rejoin;
private int is_show_self;//盲盒是否送自己
private MusicSongBean song_user_info;
private MusicSongBean nextInfo;
private RoomAuction room_auction;//拍卖房信息
private RoomCpUserBean cp_user;
private PkRoomInfo pk_info;
//弹出麦位操作弹出
public boolean isWheatManager() {
//是管理员且在1或者9号麦当时房主模式时2号麦也有管理权限
// return isManager() && (user_info.getPit() == 1 || user_info.getPit() == 9 || (room_info.getIs_owner_model() == 1 && user_info.getPit() == 2));
return isManager() && ( user_info.getPit() == 9 || (room_info.getIs_owner_model() == 1 && user_info.getPit() == 2));
return isManager() && user_info.getPit_number() == 9 ;
}
public boolean isPreside(){
return user_info.getIs_preside() == 1;
return user_info.getIs_host() == 1;
}
//管理权限
public boolean isManager() {
return room_info.getRole() == 1 || room_info.getRole() == 2 || room_info.getRole() == 5;
return user_info.getIs_management() == 1 ;
}
//管理权限
public boolean isOwner() {
return room_info.getRole() == 1;
return user_info.getIs_management() == 1;
}
//可查看房间流水
public boolean isMicPlace() {
return (room_info.getRole() == 1 || room_info.getRole() == 2 || room_info.getActual_role() == 5) && room_info.getRoom_type() != 1;
return isManager();
}
public boolean isCollect(){
return user_info.getIs_collect() == 1;
}
@@ -55,7 +65,7 @@ public class RoomInfoResp implements Serializable {
* @return
*/
public boolean isHost() {
return (room_info.getRole() == 1 || room_info.getRole() == 2) && user_info.getPit() == 9;
return user_info.getIs_host() == 1;
}
/**
@@ -73,7 +83,7 @@ public class RoomInfoResp implements Serializable {
* @return
*/
public boolean isOnWheat() {
return user_info.getPit() != 0;
return user_info.getPit_number() != 0;
}
/**
@@ -81,18 +91,18 @@ public class RoomInfoResp implements Serializable {
*
* @return
*/
public boolean isRowWheat() {
return user_info.getApply_wait() == 1;
}
// public boolean isRowWheat() {
// return user_info.getApply_wait() == 1;
// }
/**
* 是否是点单排麦中
*
* @return
*/
public boolean isOrderRowWheat() {
return isRowWheat() && user_info.getApply_wait_type() == 1;
}
// public boolean isOrderRowWheat() {
// return isRowWheat() && user_info.getApply_wait_type() == 1;
// }
/**
* 是否自由模式

View File

@@ -0,0 +1,14 @@
package com.qxcm.moduleutil.bean.room;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import java.util.List;
import lombok.Data;
@Data
public class RoomOnline {
private List<RoomOnlineBean> on_pit;//麦上用户
private List<RoomOnlineBean> off_pit;//麦下用户
}

View File

@@ -0,0 +1,23 @@
package com.qxcm.moduleutil.bean.room;
import java.util.List;
import lombok.Data;
/**
* @author qx
* @data 2025/6/10
* @description: 房间在线列表
*/
@Data
public class RoomOnlineBean {
private int user_id;
private String nickname;
private String avatar;
private int pit_number;//麦位号
private String role;//1房主、2管理员、3主持人 4嘉宾 5:普通用户
private List<String> icon;
private int type;//1麦上用户 2麦下用户
private int type_pit;//判断是从哪里点击进来的,确认显示不显示抱麦按钮 1点击顶部列表不显示抱麦按钮 2点击麦位上的抱麦按钮显示抱麦按钮
}

Some files were not shown because too many files have changed in this diff Show More