items = new ArrayList<>();
-// for (EMMessage item : list) {
-// if (item.getChatType() != EMMessage.ChatType.ChatRoom) {
-// continue;
-// }
-// if (toChatUsername != null && !toChatUsername.equals(item.getTo())) {
-// continue;
-// }
-// //如果房间id不对应,则不接收
-// String roomId = item.getStringAttribute("room_id", "");
-// if (!TextUtils.isEmpty(roomId) && !roomId.equals(roomInfoResp.getRoom_info().getRoom_id())) {
-// continue;
-// }
-// int type = item.getIntAttribute("type", 0);
-// if (type > 6000 && type < 7000) { //屏蔽6000-7000之外的数据
-// if (type == 6001 && item.getStringAttribute("user_id", "").equals(SpUtils.getUserId())) {//屏蔽自己加入房间消息
-// continue;
-// }
-// if (type == 6010 && item.getStringAttribute("user_id", "").equals(SpUtils.getUserId())) {//屏蔽自己发送的表情消息
-// continue;
-// }
-// if (type == 6012 && item.getStringAttribute("user_id", "").equals(SpUtils.getUserId())) {//屏蔽自己发送的文本消息
-// continue;
-// }
-// items.add(new EMMessageInfo(item));
-// }
-// }
-// easeChatAdapter.addData(items);
-// if (easeChatAdapter.getItemCount() > 1000) {
-// easeChatAdapter.clearSomeData();
-// }
-// if (isBottom) {
-// count = 0;
-// refreshSelectLast();
-// } else if (items.size() > 0) {
-// count += items.size();
-// if (roomInfoResp.getRoom_info().getChat_status() == 1) {
-// if (mBinding.tvCount != null) {
-// mBinding.tvCount.setVisibility(View.VISIBLE);
-// mBinding.tvCount.setText(count + "条新消息");
-// }
-// }
-// }
-// }
-// });
-// }
-
-
- /**
- * 用户进入房间
- *
- * @param roomUserJoinModel
- */
-// @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
-// public void subscribeMessages(RoomUserJoinModel roomUserJoinModel) {
-// mBinding.wav.addAnim(roomUserJoinModel);
-// EventBus.getDefault().removeStickyEvent(roomUserJoinModel);
-// }
-
- /**
- * 关闭公屏
- */
-// @Subscribe(threadMode = ThreadMode.MAIN)
-// public void subscribeMessages(ClosePublicScreenEvent closePublicScreenEvent) {
-// mBinding.tvClose.setVisibility(View.VISIBLE);
-// mBinding.llHeadTab.setVisibility(View.GONE);
-// mBinding.recycleView.setVisibility(View.GONE);//隐藏消息列表
-// mBinding.tvCount.setVisibility(View.GONE);//隐藏未读消息数
-// count = 0;//未读消息数清零
-// isBottom = true;
-// MvpPre.switchPublicScreen(roomInfoResp.getRoom_info().getRoom_id(), "0");
-// }
-
- /**
- * 开启公屏
- */
-// @Subscribe(threadMode = ThreadMode.MAIN)
-// public void subscribeMessages(OpenPublicScreenEvent openPublicScreenEvent) {
-// count = 0;//未读消息数清零
-// isBottom = true;
-// //如果有数据或者recycle view有item view就删除;否则程序崩溃,找不到item
-// if (mBinding.recycleView.getChildCount() > 0) {
-// mBinding.recycleView.removeAllViews();
-// easeChatAdapter.clearData();
-// }
-// mBinding.recycleView.setVisibility(View.VISIBLE);//开启消息列表
-// mBinding.tvClose.setVisibility(View.GONE);
-// mBinding.llHeadTab.setVisibility(View.VISIBLE);
-// MvpPre.switchPublicScreen(roomInfoResp.getRoom_info().getRoom_id(), "1");
-// }
-
- /**
- * 开关公屏 1开2关
- *
- * // * @param event
- */
-// @Subscribe(threadMode = ThreadMode.MAIN)
-// public void subscribeMessages(PublicScreenEvent event) {
-// if (roomInfoResp.getRoom_info().getRoom_id().equals(event.getRoom_id())) {
-// roomInfoResp.getRoom_info().setChat_status(event.getStatus());
-// setUpPublicScreen();
-// }
-// }
- private void refreshSelectLast() {
- if (mBinding.recycleViewPublic != null) {
- mBinding.recycleViewPublic.scrollToPosition(easeChatAdapter.getItemCount() - 1);
- }
- }
-
- /**
- * 特效设置
- */
-// @Subscribe(threadMode = ThreadMode.MAIN)
-// public void setEffectSwitch(EffectEvent event) {
-// if (event.isEffectOn()) {//特效开启
-// if (!mBinding.wav.animEnded) {
-// mBinding.wav.setVisibility(View.VISIBLE);
-// }
-// } else {
-// mBinding.wav.closeEffect();
-// mBinding.wav.setVisibility(View.GONE);
-// }
-// }
-
- /**
- * 浇水礼物推送
- */
-// @Subscribe(threadMode = ThreadMode.MAIN)
-// public void setSwitcher(LuckyRankListBean listBean) {
-// if (listBean != null) {
-//// oldList = listBean;
-// initSwitcher(listBean);
-// }
-// }
-
- /**
- * 推送区域
- */
-// public void onSwitcher(View view) {
-// recordDialogFragment = RoomWinningRecordDialogFragment.newInstance();
-// if (recordDialogFragment != null
-// && recordDialogFragment.getDialog() != null
-// && recordDialogFragment.getDialog().isShowing()
-// && !recordDialogFragment.isRemoving()) {
-// //dialog is showing so do something
-// } else {
-// recordDialogFragment.show((getActivity()).getSupportFragmentManager(), "RoomWaterTreeRankDialog");
-// //dialog is not showing
-// }
-// AppLogUtil.reportAppLog(AppLogEvent.D010604);
-// }
-
-// @Override
-// public void onConnected() {
-// onChatRoomViewCreation();
-// }
-
-// @Override
-// public void onDisconnected(int i) {
-// Logger.e("onDisconnected", i);
-// }
-
-
- /**
- * 重连任务
- */
-// private Runnable joinChatRoomTask = new Runnable() {
-// @Override
-// public void run() {
-// onChatRoomViewCreation();
-// }
-// };
-
-// @Override
-// public void onResume() {
-// super.onResume();
-// if (mBinding.vfSwitcher != null) {
-// mBinding.vfSwitcher.startFlipping();
-// }
-// }
-
-// @Override
-// public void onPause() {
-// super.onPause();
-// if (mBinding.vfSwitcher != null) {
-// mBinding.vfSwitcher.stopFlipping();
-// }
-// }
}
+
diff --git a/moduleroom/src/main/java/com/example/moduleroom/fragment/SingSongFragment.java b/moduleroom/src/main/java/com/example/moduleroom/fragment/SingSongFragment.java
index 4d9098c1..273d049e 100644
--- a/moduleroom/src/main/java/com/example/moduleroom/fragment/SingSongFragment.java
+++ b/moduleroom/src/main/java/com/example/moduleroom/fragment/SingSongFragment.java
@@ -1349,6 +1349,7 @@ public class SingSongFragment extends BaseRoomFragment
@@ -78,7 +78,6 @@
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
- android:layout_marginEnd="@dimen/dp_4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@mipmap/pk_left"
@@ -119,6 +118,7 @@
android:id="@+id/cl_right"
android:layout_width="0dp"
android:layout_weight="1"
+ android:layout_marginStart="@dimen/dp_3"
android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@+id/cl_left"
app:layout_constraintTop_toTopOf="parent"
diff --git a/moduleroom/src/main/res/layout/item_emotion.xml b/moduleroom/src/main/res/layout/item_emotion.xml
index 40de97b4..dc01fa7c 100644
--- a/moduleroom/src/main/res/layout/item_emotion.xml
+++ b/moduleroom/src/main/res/layout/item_emotion.xml
@@ -1,10 +1,10 @@
+ >
+
+
diff --git a/moduleroom/src/main/res/layout/item_noble_piaoping.xml b/moduleroom/src/main/res/layout/item_noble_piaoping.xml
new file mode 100644
index 00000000..bb1031af
--- /dev/null
+++ b/moduleroom/src/main/res/layout/item_noble_piaoping.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/moduleroom/src/main/res/layout/room_top.xml b/moduleroom/src/main/res/layout/room_top.xml
index 5c8f540a..256f797e 100644
--- a/moduleroom/src/main/res/layout/room_top.xml
+++ b/moduleroom/src/main/res/layout/room_top.xml
@@ -108,7 +108,8 @@
android:gravity="center"
android:text="0"
android:textColor="@color/white"
- android:textSize="@dimen/sp_12" />
+ android:textSize="@dimen/sp_12"
+ android:visibility="gone"/>
-
+
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/BaseAppTheme">
+ android:name=".activity.NoblePaymentActivity"
+ android:exported="false"/>
+ android:name=".activity.NobleDetailsActivity"
+ android:exported="false"/>
+ android:name=".activity.NobleTitleActivity"
+ android:exported="false"/>
+ android:name=".activity.GiftWallActivity"
+ android:exported="false"/>
+ android:name=".activity.AboutUsActivity"
+ android:exported="false"/>
+ android:name=".activity.WithdrawalListActivity"
+ android:exported="false"/>
+ android:name=".activity.GiftBoxRecordActivity"
+ android:exported="false"/>
+ android:name=".activity.BindCardDetailsActivity"
+ android:exported="false"/>
+ android:name=".activity.BindCardActivity"
+ android:exported="false"/>
+ android:name=".activity.AlbumDetailActivity"
+ android:exported="false"/>
+ android:name=".activity.SettingActivity"
+ android:exported="false"/>
+ android:name=".activity.CreateAlbumActivity"
+ android:exported="false"/>
+ android:name=".activity.RevenueActivity"
+ android:exported="false"/>
+ android:name=".activity.DailyTasksActivity"
+ android:exported="false"/>
+ android:name=".activity.UserHomepageActivity"
+ android:exported="false"/>
+ android:name=".activity.MyBagActivity"
+ android:exported="false"/>
+ android:name=".activity.BriefIntroductionActivity"
+ android:exported="false"/>
+ android:name=".activity.ChangeNicknameActivity"
+ android:exported="false"/>
+ android:name=".activity.CurrencyExchangeActivity"
+ android:exported="false"/>
+ android:name=".activity.WithdrawalActivity"
+ android:exported="false"/>
+ android:name=".activity.RechargeActivity"
+ android:exported="false"/>
+ android:name=".activity.MyMoneyActivity"
+ android:exported="false"/>
+ android:name=".activity.EditUserInfoActivity"
+ android:exported="false"/>
+ android:name=".activity.ChangPassActivity"
+ android:exported="false"/>
+ android:name=".activity.PersonalityActivity"
+ android:exported="false"/>
+ android:name=".activity.RealDetailActivity"
+ android:exported="false"/>
+ android:name=".activity.RoomAllowanceDetailActivity"
+ android:exported="false"/>
+ android:name=".activity.RoomAllowanceActivity"
+ android:exported="false"/>
+ android:name=".activity.RoomDetailsActivity"
+ android:exported="false"/>
+ android:name=".activity.CreatedRoomActivity"
+ android:exported="false"/>
+ android:name=".activity.MyRoomActivity"
+ android:exported="false"/>
+ android:name=".activity.PhoneReplacementActivity"
+ android:exported="false"/>
+ android:name=".activity.BlacklistActivity"
+ android:exported="false"/>
+ android:name=".activity.MessageReminderActivity"
+ android:exported="false"/>
+ android:name=".activity.NotificationActivity"
+ android:exported="false"/>
+
+
\ No newline at end of file
diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/GiftWallActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/GiftWallActivity.java
new file mode 100644
index 00000000..89cbc444
--- /dev/null
+++ b/modulevocal/src/main/java/com/example/modulevocal/activity/GiftWallActivity.java
@@ -0,0 +1,93 @@
+package com.example.modulevocal.activity;
+
+import android.annotation.SuppressLint;
+import android.graphics.Color;
+import android.util.TypedValue;
+import android.view.View;
+import android.widget.TextView;
+import androidx.viewpager2.widget.ViewPager2;
+import com.example.modulevocal.R;
+import com.example.modulevocal.activity.ui.main.GiftWallConacts;
+import com.example.modulevocal.activity.ui.main.GiftWallPresenter;
+import com.google.android.material.tabs.TabLayout;
+import androidx.viewpager.widget.ViewPager;
+import com.example.modulevocal.activity.ui.main.SectionsPagerAdapter;
+import com.example.modulevocal.databinding.ActivityGiftWallBinding;
+import com.google.android.material.tabs.TabLayoutMediator;
+import com.xscm.moduleutil.activity.BaseMvpActivity;
+import com.xscm.moduleutil.bean.CombinedGiftBean;
+import com.xscm.moduleutil.bean.GiftUserWallBean;
+import com.xscm.moduleutil.bean.RoomTypeModel;
+import com.xscm.moduleutil.utils.SpUtil;
+
+/**
+ * 礼物墙
+ */
+public class GiftWallActivity extends BaseMvpActivity implements GiftWallConacts.View {
+ SectionsPagerAdapter sectionsPagerAdapter;
+
+ @Override
+ protected void initData() {
+ mBinding.topBar.setTitle("礼物墙");
+ mBinding.topBar.setColor(getResources().getColor(R.color.white));
+ MvpPre.giftWall(SpUtil.getUserId()+"");
+ }
+
+ // 在获取到数据后调用此方法初始化 ViewPager
+ private void setupViewPagerWithData(GiftUserWallBean data) {
+ sectionsPagerAdapter = new SectionsPagerAdapter(this, data);
+ ViewPager2 viewPager = mBinding.viewPager;
+ viewPager.setAdapter(sectionsPagerAdapter);
+ TabLayout tabs = mBinding.tabs;
+
+ // TabLayout 需要手动关联
+ new TabLayoutMediator(mBinding.tabs, mBinding.viewPager,
+ (tab, position) -> tab.setText(sectionsPagerAdapter.getPageTitle(position))
+ ).attach();
+
+ // 设置选中和未选中的文字颜色及大小
+ tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ View customView = tab.getCustomView();
+ if (customView instanceof TextView textView) {
+ textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
+ textView.setTextColor(getResources().getColor(android.R.color.white));
+ customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_indicator);
+ }
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ View customView = tab.getCustomView();
+ if (customView instanceof TextView textView) {
+ textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
+ textView.setTextColor(Color.parseColor("#ffffff"));
+ customView.setBackgroundResource(com.xscm.moduleutil.R.drawable.tab_unselected_background);
+ }
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+ }
+ });
+ tabs.selectTab(tabs.getTabAt(0));
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_gift_wall;
+ }
+
+ @Override
+ protected GiftWallPresenter bindPresenter() {
+ return new GiftWallPresenter(this, this);
+ }
+
+ @Override
+ public void setGiftWall(GiftUserWallBean data) {
+ // 添加点亮的礼物
+ // 初始化 ViewPager 和 TabLayout
+ setupViewPagerWithData(data);
+ }
+}
\ No newline at end of file
diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/NobleDetailsActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/NobleDetailsActivity.java
new file mode 100644
index 00000000..35407de7
--- /dev/null
+++ b/modulevocal/src/main/java/com/example/modulevocal/activity/NobleDetailsActivity.java
@@ -0,0 +1,202 @@
+package com.example.modulevocal.activity;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.graphics.LinearGradient;
+import android.graphics.Shader;
+import android.os.Build;
+import android.os.Bundle;
+
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.widget.GridView;
+import android.widget.TextView;
+import androidx.activity.EdgeToEdge;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import androidx.viewpager2.widget.ViewPager2;
+import com.example.modulevocal.R;
+import com.example.modulevocal.adapter.GridNobleAdapter;
+import com.example.modulevocal.adapter.NobliityBannerAdapter;
+import com.example.modulevocal.conacts.NobleTitleConacts;
+import com.example.modulevocal.databinding.ActivityNobleDetailsBinding;
+import com.example.modulevocal.presenter.NobleTitlePresenter;
+import com.xscm.moduleutil.activity.BaseMvpActivity;
+import com.xscm.moduleutil.base.CommonAppContext;
+import com.xscm.moduleutil.bean.*;
+import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
+import com.zhpan.bannerview.BannerViewPager;
+import com.zhpan.bannerview.constants.PageStyle;
+
+import java.util.List;
+
+import static android.view.View.GONE;
+
+/**
+ * @Description: 这是爵位详情方案
+ * @Author: qx
+ * @CreateDate: 2022/3/23 10:05
+ */
+public class NobleDetailsActivity extends BaseMvpActivity implements NobleTitleConacts.View {
+ NobliityBannerAdapter mAdapter;
+ GridView gridView;
+ GridNobleAdapter mGiftWallAdapter;
+
+ private String lid="";
+
+ @Override
+ protected void initView() {
+ super.initView();
+ mBinding.ivBack.setColorFilter(getResources().getColor(R.color.white));
+ mBinding.ivBack.setOnClickListener(v -> finish());
+ mBinding.ivIntent.setOnClickListener(v -> {//爵位规则
+ Bundle bundle = new Bundle();
+ bundle.putString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "api/Page/page_show?id=29");
+ RoomAuctionWebViewDialog dialog = new RoomAuctionWebViewDialog(this, bundle);
+ dialog.show();
+ });
+ gridView = mBinding.gridView;
+ mGiftWallAdapter=new GridNobleAdapter();
+ mBinding.imLjkt.setOnClickListener(v -> {
+ Intent intent = new Intent(this, NoblePaymentActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putString("lid",lid);
+ intent.putExtras( bundle);
+ startActivity(intent);
+ });
+ }
+
+ @Override
+ protected void initData() {
+ lid=getIntent().getStringExtra("lid");
+ if (lid==null){
+ lid="";
+ }
+ MvpPre.getNobilityList();
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_noble_details;
+ }
+
+ @Override
+ protected NobleTitlePresenter bindPresenter() {
+ return new NobleTitlePresenter(this, this);
+ }
+
+ @Override
+ public void getNobilityDetail(NobilitDeatils nobilitDeatils) {
+
+ }
+ int index = 0;
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ @Override
+ public void getNobilityList(List nobilitLists) {
+ if (nobilitLists==null){
+ return;
+ }
+
+
+ for (int i=0; i < nobilitLists.size(); i++){
+ if (lid.equals(nobilitLists.get(i).getLid()+"")){
+ index = i;
+ }
+ }
+
+ mAdapter = new NobliityBannerAdapter();
+ mBinding.banner
+ .setAdapter(mAdapter)
+ .setAutoPlay(false)
+ .setIndicatorVisibility(GONE)
+ .setPageStyle(PageStyle.MULTI_PAGE_OVERLAP, 0.6f)
+ .setRevealWidth(200)
+ .setCanLoop(false)
+ .create();
+ mBinding.banner.create(nobilitLists); // 刷新数据并启动自动播放
+ mBinding.banner.setCurrentItem(index);
+ mAdapter.setmCurrentPosition( index);
+ mBinding.banner.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ super.onPageScrolled(position, positionOffset, positionOffsetPixels);
+ updateNobleInfo(nobilitLists.get( position), position);
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ super.onPageSelected(position);
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ super.onPageScrollStateChanged(state);
+ }
+ });
+ updateNobleInfo(nobilitLists.get(index), index);
+ }
+
+ @Override
+ public void bindType(BindType bindType) {
+
+ }
+
+ @Override
+ public void appPay(AppPay appPay) {
+
+ }
+
+ @Override
+ public void getNobilityPrice(NobilityPrice nobilityPrice) {
+
+ }
+
+ @SuppressLint("SetTextI18n")
+ private void updateNobleInfo(NobilitList nobilitLists, int position) {
+ mBinding.tvNobleLv.setText(nobilitLists.getName());
+ applyGradientToTextView(mBinding.tvNobleLv);
+ mBinding.tvTq.setText("专属特权(" + nobilitLists.getPower().getCount_str()+")");
+ mBinding.tvLvTis.setText(nobilitLists.getName() + "专属 ¥");
+ mBinding.tvNobleMob.setText(nobilitLists.getPay_price()+" / "+nobilitLists.getDay()+"天");
+
+ gridView.setAdapter(mGiftWallAdapter);
+ lid=nobilitLists.getLid()+"";
+ // 观察数据变化并更新 GridView
+ mGiftWallAdapter.updateData(nobilitLists.getPower().getList());
+ if (position>=index){
+ if (position==index){
+ mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_xf);
+ }else {
+ mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_ljsj);
+ }
+ mBinding.imLjkt.setClickable( true);
+ }else {
+ mBinding.imLjkt.setImageResource(com.xscm.moduleutil.R.mipmap.noble_h_kt);
+ mBinding.imLjkt.setClickable( false);
+ }
+ }
+ private void applyGradientToTextView(TextView textView) {
+ ViewTreeObserver vto = textView.getViewTreeObserver();
+ vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ int width = textView.getWidth();
+ if (width > 0) {
+ LinearGradient gradient = new LinearGradient(
+ 0, 0, width, 0,
+ new int[]{0xFFF4C07C, 0xFFFFFFFF, 0xFFF4C07C},
+ new float[]{0f, 0.5f, 1f},
+ Shader.TileMode.CLAMP
+ );
+ textView.getPaint().setShader(gradient);
+ textView.invalidate();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/NoblePaymentActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/NoblePaymentActivity.java
new file mode 100644
index 00000000..20a7636f
--- /dev/null
+++ b/modulevocal/src/main/java/com/example/modulevocal/activity/NoblePaymentActivity.java
@@ -0,0 +1,274 @@
+package com.example.modulevocal.activity;
+
+import android.content.Intent;
+import android.graphics.Paint;
+import android.net.Uri;
+import android.os.Bundle;
+
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.alibaba.fastjson.JSON;
+import com.example.modulevocal.R;
+import com.example.modulevocal.adapter.NoblePrivilegeAdapter;
+import com.example.modulevocal.conacts.NobleTitleConacts;
+import com.example.modulevocal.databinding.ActivityNoblePaymentBinding;
+import com.example.modulevocal.presenter.NobleTitlePresenter;
+import com.hjq.toast.ToastUtils;
+import com.tencent.mm.opensdk.openapi.IWXAPI;
+import com.tencent.mm.opensdk.openapi.WXAPIFactory;
+import com.xscm.moduleutil.activity.BaseMvpActivity;
+import com.xscm.moduleutil.adapter.PayMethodAdapter;
+import com.xscm.moduleutil.base.CommonAppContext;
+import com.xscm.moduleutil.bean.*;
+import com.xscm.moduleutil.color.ThemeableDrawableUtils;
+import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
+import com.xscm.moduleutil.event.PayEvent;
+import com.xscm.moduleutil.utils.*;
+import com.xscm.moduleutil.widget.PaymentUtil;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.lang.reflect.Field;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+/**
+ * @Description: 这是爵位支付方案
+ * @Author: qx
+ * @CreateDate: 2022/3/23 10:05
+ */
+public class NoblePaymentActivity extends BaseMvpActivity implements NobleTitleConacts.View{
+ private PayMethodAdapter bindTypeAdapter;
+ private BindType.AllData selectedItem;
+ private String lid;
+ private String money;
+ private String name;
+ private String yxq;
+ private String imNoble2;
+ private List powerItems=new ArrayList<>();
+ @Override
+ protected void initData() {
+ mBinding.ivBack.setOnClickListener(v -> finish());
+ mBinding.ivIntent.setOnClickListener(v -> {//爵位规则
+ Bundle bundle = new Bundle();
+ bundle.putString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "api/Page/page_show?id=29");
+ RoomAuctionWebViewDialog dialog = new RoomAuctionWebViewDialog(this, bundle);
+ dialog.show(); });
+
+ mBinding.tvYsxy.setOnClickListener(this::onClick);
+
+ mBinding.recycleView1.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
+ bindTypeAdapter = new PayMethodAdapter(com.xscm.moduleutil.R.layout.item_bind_type);
+ mBinding.recycleView1.setAdapter(bindTypeAdapter);
+
+ bindTypeAdapter.setOnItemClickListener((adapter, view, position) -> {
+
+ bindTypeAdapter.setSelectedPosition(position);
+
+ // 获取当前选中的数据
+ selectedItem = bindTypeAdapter.getItem(position);
+ // 可以在这里处理选中逻辑,比如保存到变量或触发支付
+ });
+
+
+ ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvPayment, ColorManager.getInstance().getPrimaryColorInt(), 53);
+ mBinding.tvPayment.setTextColor(ColorManager.getInstance().getButtonColorInt());
+
+ mBinding.tvPayment.setOnClickListener(this::onClick);
+
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ lid=getIntent().getStringExtra("lid");
+ MvpPre.getNobilityPrice(lid);
+ MvpPre.bindType(SpUtil.getUserId() + "");
+ }
+
+ private void onClick(View view) {
+ int id = view.getId();
+ if (id== R.id.tv_ysxy) {
+ ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=30").withString("title", "爵位服务协议").navigation();
+ }else if (id== R.id.tv_payment){
+ if (!mBinding.cbPrivacy.isChecked()) {
+ ToastUtils.show("请先勾选服务条款");
+ return;
+ }
+ MvpPre.appPay(SpUtil.getUserId() + "", money, selectedItem.getType(),lid);
+ }
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_noble_payment;
+ }
+
+ @Override
+ protected NobleTitlePresenter bindPresenter() {
+ return new NobleTitlePresenter(this, this);
+ }
+
+ @Override
+ public void getNobilityDetail(NobilitDeatils nobilitDeatils) {
+
+ }
+
+ @Override
+ public void getNobilityList(List nobilitLists) {
+
+ }
+
+ @Override
+ public void bindType(BindType bindType) {
+ List allData = new ArrayList<>();
+ if (bindType.getAli().getIs_pay_open().equals("1")) {
+ allData.add(bindType.getAli());
+ }
+ if (bindType.getWx().getIs_pay_open().equals("1")) {
+ allData.add(bindType.getWx());
+ }
+ if (bindType.getBank().getIs_pay_open().equals("1")) {
+ allData.add(bindType.getBank());
+ }
+ if (bindType.getAli_tl().getIs_pay_open().equals("1")) {
+ allData.add(bindType.getAli_tl());
+ }
+ if (bindType.getWx_tl().getIs_pay_open().equals("1")) {
+ allData.add(bindType.getWx_tl());
+ }
+
+ bindTypeAdapter.setNewData(allData);
+ }
+
+ @Override
+ public void appPay(AppPay appPay) {
+ if (appPay.getAli()!=null) {
+ PaymentUtil.payAlipay(this, appPay.getAli());
+ }else if (appPay.getWx()!=null){
+
+ IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
+ PaymentUtil.payWxMiniProgram2(wxapi,appPay);
+ }else if (appPay.getTl()!=null){
+ if (appPay.getTl().getRemark().equals("5")) {//微信
+ IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
+ try {
+ String paramString = buildParamString(appPay.getTl());
+ PaymentUtil.payWxMiniProgramWx(wxapi,paramString);
+ android.util.Log.d("RequestParams", paramString); // 输出拼接后的参数
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ } else if (appPay.getTl().getRemark().equals("4")) {//支付宝
+ String s= JSON.toJSONString(appPay.getTl());
+ try {
+ String query = URLEncoder.encode("payinfo=" + URLEncoder.encode(s, "UTF-8"), "UTF-8");
+ String url = "alipays://platformapi/startapp?appId=2021001104615521&page=pages/orderDetail/orderDetail&thirdPartSchema="
+ + URLEncoder.encode("myziroom://myziroom/", "UTF-8") + "&query=" + query;
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ startActivity(intent);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void getNobilityPrice(NobilityPrice nobilityPrice) {
+ if (nobilityPrice==null){
+ return;
+ }
+ name=nobilityPrice.getNobility_name();
+ yxq=nobilityPrice.getEnd_time();
+ mBinding.tvLv.setText(nobilityPrice.getNobility_name());
+ ImageUtils.loadHeadCC(nobilityPrice.getNobility_image(), mBinding.imNoble);
+ imNoble2=nobilityPrice.getNobility_image();
+ mBinding.tvTime.setText("有效期:"+nobilityPrice.getDay()+"天");
+ mBinding.tvSjJg.setText("¥"+nobilityPrice.getPrice());
+ mBinding.tvHxJg.setText("¥"+nobilityPrice.getPay_price());
+ mBinding.tvHxJg.setPaintFlags( mBinding.tvHxJg.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ money=nobilityPrice.getPrice();
+
+ NoblePrivilegeAdapter adapter = new NoblePrivilegeAdapter();
+ adapter.setNewData(nobilityPrice.getPower_list());
+ mBinding.recycleView2.setLayoutManager(new LinearLayoutManager(this));
+ // 设置到 RecyclerView
+ mBinding.recycleView2.setAdapter(adapter);
+ powerItems=nobilityPrice.getPower_list();
+
+ }
+
+ public static String buildParamString(Object obj) throws IllegalAccessException {
+ Class> clazz = obj.getClass();
+ Field[] fields = clazz.getDeclaredFields();
+ TreeMap paramMap = new TreeMap<>();
+
+ // 遍历字段并填充 TreeMap
+ for (Field field : fields) {
+ field.setAccessible(true); // 允许访问私有字段
+ Object value = field.get(obj);
+ if (value != null && !String.valueOf(value).isEmpty()) {
+ paramMap.put(field.getName(), String.valueOf(value));
+ }
+ }
+
+ // 使用 StringBuilder 拼接参数字符串
+ StringBuilder builder = new StringBuilder();
+ for (Map.Entry entry : paramMap.entrySet()) {
+ if (builder.length() > 0) {
+ builder.append("&");
+ }
+ builder.append(entry.getKey())
+ .append("=")
+ .append(entry.getValue());
+ }
+
+ return builder.toString();
+ }
+
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onMessageEvent(PayEvent event) {
+ if (event.getType()==1){
+ ToastUtils.show("支付成功");
+ mBinding.cl.setVisibility(GONE);
+ mBinding.imNoble.setVisibility(GONE);
+ mBinding.t2.setVisibility(GONE);
+ mBinding.recycleView1.setVisibility(GONE);
+ mBinding.tvPayment.setVisibility(GONE);
+ mBinding.llAgreement.setVisibility(GONE);
+ mBinding.recycleView2.setVisibility(GONE);
+ mBinding.tvTs.setVisibility(GONE);
+ mBinding.tv.setVisibility(GONE);
+
+ mBinding.cl2.setVisibility(VISIBLE);
+ mBinding.tvSucess2.setText("恭喜您已成功开通"+name+"爵位");
+ mBinding.tv3.setText(name+"特权");
+ mBinding.tv4.setText("有效期:"+yxq);
+ mBinding.tvPayment2.setOnClickListener(v -> {
+ finish();
+ });
+ ImageUtils.loadHeadCC(imNoble2, mBinding.imNoble2);
+ NoblePrivilegeAdapter adapter = new NoblePrivilegeAdapter();
+ adapter.setNewData(powerItems);
+ mBinding.recycleView3.setLayoutManager(new LinearLayoutManager(this));
+ // 设置到 RecyclerView
+ mBinding.recycleView3.setAdapter(adapter);
+ }
+ }
+}
\ No newline at end of file
diff --git a/modulevocal/src/main/java/com/example/modulevocal/activity/NobleTitleActivity.java b/modulevocal/src/main/java/com/example/modulevocal/activity/NobleTitleActivity.java
new file mode 100644
index 00000000..6380ea78
--- /dev/null
+++ b/modulevocal/src/main/java/com/example/modulevocal/activity/NobleTitleActivity.java
@@ -0,0 +1,288 @@
+package com.example.modulevocal.activity;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.graphics.LinearGradient;
+import android.graphics.Shader;
+import android.os.Bundle;
+
+import android.os.Handler;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.example.modulevocal.R;
+import com.example.modulevocal.conacts.NobleTitleConacts;
+import com.example.modulevocal.databinding.ActivityNobleTitleBinding;
+import com.example.modulevocal.presenter.NobleTitlePresenter;
+import com.rmondjone.locktableview.LockTableView;
+import com.rmondjone.xrecyclerview.ProgressStyle;
+import com.rmondjone.xrecyclerview.XRecyclerView;
+import com.xscm.moduleutil.activity.BaseMvpActivity;
+import com.xscm.moduleutil.activity.IPresenter;
+import com.xscm.moduleutil.base.BaseRoomContacts;
+import com.xscm.moduleutil.base.CommonAppContext;
+import com.xscm.moduleutil.bean.*;
+import com.xscm.moduleutil.dialog.RoomAuctionWebViewDialog;
+import com.xscm.moduleutil.utils.ARouteConstants;
+import com.xscm.moduleutil.utils.ImageUtils;
+import com.xscm.moduleutil.utils.TimeUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+
+/**
+ * @Description: 爵位展示页面
+ * @Author: qx
+ * @Data: 2022/4/18 21:05
+ */
+public class NobleTitleActivity extends BaseMvpActivity implements NobleTitleConacts.View {
+ private LinearLayout mContentView;
+ private List