From 4c1de9b4ccb1687f00aa06cff75c70d855fef5e7 Mon Sep 17 00:00:00 2001 From: qyy <444800064@qq.com> Date: Wed, 15 Oct 2025 10:07:02 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=A6=96=E9=A1=B5=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../moduleutil/bean/FirstChargeGiftBean.java | 1 + .../moduleutil/dialog/HeavenGiftDialog.java | 22 ++- .../moduleutil/dialog/NewPeopleDialog.java | 169 ++++++++++++++++-- .../dialog/RechargeDialogFragment.java | 11 +- .../dialog/giftLottery/GiftLotteryDialog.java | 2 +- .../giftLottery/TourClubDialogFragment.java | 2 +- .../http/AccessTokenInterceptor.java | 4 +- .../com/xscm/moduleutil/http/ApiServer.java | 9 +- .../xscm/moduleutil/http/RetrofitClient.java | 4 +- .../presenter/RechargeDialogContacts.java | 3 +- .../presenter/RechargeDialogPresenter.java | 6 +- .../dialog/RewardGiftDialogFragment.java | 2 +- .../main/res/layout/dialog_first_charge.xml | 2 +- .../modulemain/activity/MainActivity.java | 68 ++++--- .../moduleroom/activity/RoomActivity.kt | 4 +- .../dialog/RoomGiftDialogFragment.java | 2 +- .../activity/RechargeActivity.java | 2 +- .../modulevocal/conacts/RechargeConactos.java | 2 +- .../presenter/RechargePresenter.java | 6 +- 20 files changed, 269 insertions(+), 54 deletions(-) diff --git a/gradle.properties b/gradle.properties index 36219d0..e8e6776 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,7 +29,7 @@ isBuildModule=false android.injected.testOnly=false APP_VERSION_NAME=1.2.8 -APP_VERSION_CODE=182 +APP_VERSION_CODE=183 org.gradle.jvm.toolchain.useLegacyAdapters=false #org.gradle.java.home=C\:\\Users\\qx\\.jdks\\ms-17.0.15 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/bean/FirstChargeGiftBean.java b/moduleUtil/src/main/java/com/xscm/moduleutil/bean/FirstChargeGiftBean.java index a002130..0b0bbbc 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/bean/FirstChargeGiftBean.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/bean/FirstChargeGiftBean.java @@ -15,6 +15,7 @@ public class FirstChargeGiftBean { private List gift_bag; @Data public static class GiftBag { + private String gift_bag_id; private String name; private String title1; private String title2; diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/HeavenGiftDialog.java b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/HeavenGiftDialog.java index 39bf4fd..4d79dda 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/HeavenGiftDialog.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/HeavenGiftDialog.java @@ -14,6 +14,7 @@ import com.blankj.utilcode.util.ScreenUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.adapter.HeavenGiftAdapter; import com.xscm.moduleutil.bean.BaseListData; +import com.xscm.moduleutil.bean.FirstChargeGiftBean; import com.xscm.moduleutil.bean.HeavenGiftBean; import com.xscm.moduleutil.bean.RoonGiftModel; import com.xscm.moduleutil.color.ThemeableDrawableUtils; @@ -42,12 +43,21 @@ public class HeavenGiftDialog extends BaseDialog { public HeavenGiftDialog(@NonNull Context context) { super(context,R.style.BaseDialogStyleH); } - + HeavenGiftBean heavenGiftBea; @Override public int getLayoutId() { return R.layout.dialog_heaven_gift; } + private OnFirstChargeListener listener; + public interface OnFirstChargeListener { + void onFirstChargeConfirmed(HeavenGiftBean giftBean, int type); + void onFirstChargeCancelled(); + } + // 设置监听器的方法 + public void setOnFirstChargeListener(OnFirstChargeListener listener) { + this.listener = listener; + } @Override public void initView() { setCancelable(false); @@ -74,6 +84,15 @@ public class HeavenGiftDialog extends BaseDialog { ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvInvite, ColorManager.getInstance().getPrimaryColorInt(), 53); mBinding.tvInvite.setTextColor(ColorManager.getInstance().getButtonColorInt()); + mBinding.tvInvite.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (listener != null) { + listener.onFirstChargeConfirmed(heavenGiftBea,2); + } + } + }); + } @Override @@ -88,6 +107,7 @@ public class HeavenGiftDialog extends BaseDialog { @Override public void onNext(HeavenGiftBean heavenGiftBean) { if (heavenGiftBean != null){ + heavenGiftBea=heavenGiftBean; mBinding.tvTitle.setText(heavenGiftBean.getCounter()); // 示例:假设从 HeavenGiftBean 中获取倒计时时间(单位:秒) // long countdownTime =Integer.parseInt(heavenGiftBean.getEffective_time()) * 1000L; // 转换为毫秒 diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/NewPeopleDialog.java b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/NewPeopleDialog.java index 64d18a5..f05beba 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/NewPeopleDialog.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/NewPeopleDialog.java @@ -3,11 +3,18 @@ package com.xscm.moduleutil.dialog; import android.content.Context; import android.content.res.Resources; import android.graphics.Paint; +import android.util.Log; +import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.Button; +import android.widget.RadioButton; import android.widget.RadioGroup; +import android.widget.TextView; + import androidx.annotation.NonNull; + import com.blankj.utilcode.util.ScreenUtils; import com.blankj.utilcode.util.ToastUtils; import com.xscm.moduleutil.R; @@ -24,9 +31,11 @@ import com.xscm.moduleutil.widget.dialog.BaseDialog; import com.zhpan.bannerview.indicator.DrawableIndicator; import com.zhpan.indicator.base.IIndicator; import com.zhpan.indicator.enums.IndicatorSlideMode; + import io.reactivex.disposables.Disposable; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -38,7 +47,7 @@ public class NewPeopleDialog extends BaseDialog { HeavenGiftAdapter heavenGiftAdapter; FirstChargeGiftBean firstChargeGiftBean; - private int type; + private int type; public NewPeopleDialog(@NonNull Context context) { super(context, R.style.BaseDialogStyleH); @@ -71,7 +80,7 @@ public class NewPeopleDialog extends BaseDialog { mBinding.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { - if (firstChargeGiftBean== null || firstChargeGiftBean.getGift_bag().size() == 0){ + if (firstChargeGiftBean == null || firstChargeGiftBean.getGift_bag().size() == 0) { ToastUtils.showShort("暂无礼包"); return; } @@ -86,7 +95,7 @@ public class NewPeopleDialog extends BaseDialog { list.addAll(firstChargeGiftBean.getGift_bag().get(0).getGift_list()); mBinding.bannerViewPager.create(baseListData(list, 4)); } - type=1; + type = 1; } else if (i == R.id.btn_1) { List list = new ArrayList<>(); if (firstChargeGiftBean.getGift_bag().size() > 2) { @@ -97,11 +106,11 @@ public class NewPeopleDialog extends BaseDialog { list.addAll(firstChargeGiftBean.getGift_bag().get(1).getGift_list()); mBinding.bannerViewPager.create(baseListData(list, 4)); } - type=2; + type = 2; } else if (i == R.id.btn_2) { List list = new ArrayList<>(); if (firstChargeGiftBean.getGift_bag().size() > 3) { - if (firstChargeGiftBean.getGift_bag().get(2)!=null) { + if (firstChargeGiftBean.getGift_bag().get(2) != null) { mBinding.tvTitle1.setText(firstChargeGiftBean.getGift_bag().get(2).getTitle1()); mBinding.tvTitle2.setText(firstChargeGiftBean.getGift_bag().get(2).getTitle2()); mBinding.tvTitle2.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG); @@ -111,7 +120,7 @@ public class NewPeopleDialog extends BaseDialog { type = 3; } } - }else if (i == R.id.btn_3){ + } else if (i == R.id.btn_3) { List list = new ArrayList<>(); if (firstChargeGiftBean.getGift_bag().size() >= 4) { mBinding.tvTitle1.setText(firstChargeGiftBean.getGift_bag().get(3).getTitle1()); @@ -126,30 +135,41 @@ public class NewPeopleDialog extends BaseDialog { } }); + mBinding.rg.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + + return false; + } + }); mBinding.tvInvite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // RechargeDialogFragment.show(roomId, getSupportFragmentManager()); if (listener != null) { - listener.onFirstChargeConfirmed(firstChargeGiftBean,type); + listener.onFirstChargeConfirmed(firstChargeGiftBean, type); } } }); - ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvInvite, ColorManager.getInstance().getPrimaryColorInt(), 53); - mBinding.tvInvite.setTextColor(ColorManager.getInstance().getButtonColorInt()); + } + public interface OnFirstChargeListener { - void onFirstChargeConfirmed(FirstChargeGiftBean giftBean,int type); + void onFirstChargeConfirmed(FirstChargeGiftBean giftBean, int type); + void onFirstChargeCancelled(); } + private OnFirstChargeListener listener; + // 设置监听器的方法 public void setOnFirstChargeListener(OnFirstChargeListener listener) { this.listener = listener; } + @Override public void initData() { RetrofitClient.getInstance().getNewChargeGift(new BaseObserver() { @@ -194,8 +214,8 @@ public class NewPeopleDialog extends BaseDialog { this.firstChargeGiftBean = firstChargeGiftBean; mBinding.rg.check(R.id.btn_0); if (firstChargeGiftBean.getGift_bag() != null && firstChargeGiftBean.getGift_bag().size() > 0) { - if (firstChargeGiftBean.getGift_bag().size() >=0) { - type=1; + if (firstChargeGiftBean.getGift_bag().size() >= 0) { + type = 1; List list = new ArrayList<>(); mBinding.tvTitle1.setText(firstChargeGiftBean.getGift_bag().get(0).getTitle1()); mBinding.tvTitle2.setText(firstChargeGiftBean.getGift_bag().get(0).getTitle2()); @@ -207,6 +227,8 @@ public class NewPeopleDialog extends BaseDialog { mBinding.btn1.setText(firstChargeGiftBean.getGift_bag().get(1).getName()); mBinding.btn2.setText(firstChargeGiftBean.getGift_bag().get(2).getName()); mBinding.btn3.setText(firstChargeGiftBean.getGift_bag().get(3).getName()); + + initGiftBagButtonStatus(firstChargeGiftBean); } else if (firstChargeGiftBean.getGift_bag().size() == 2) { // mBinding.rg.check(R.id.btn_0); // mBinding.btn1.setVisibility(View.VISIBLE); @@ -220,4 +242,127 @@ public class NewPeopleDialog extends BaseDialog { } } + + private boolean isstatus = true; + + private void initGiftBagButtonStatus(FirstChargeGiftBean firstChargeGiftBean) { + // 1. 准备按钮列表:顺序与gift_bag中的元素顺序一一对应 + List buttonList = Arrays.asList( + mBinding.btn0, + mBinding.btn1, + mBinding.btn2 + // 未来加按钮:mBinding.btn3, mBinding.btn4... + ); + + // 2. 空安全检查:先判断核心对象/列表非空 + if (firstChargeGiftBean != null && firstChargeGiftBean.getGift_bag() != null) { + List giftBagList = firstChargeGiftBean.getGift_bag(); + + // 3. 循环处理每个按钮 + for (int i = 0; i < buttonList.size(); i++) { + RadioButton currentBtn = buttonList.get(i); + // 4. 索引防护:若gift_bag列表长度不足,默认按status=0处理 + int status = (i < giftBagList.size()) ? giftBagList.get(i).getStatus() : 0; + // 检查是否有status=0的情况,如果有则将isStatus设为false + if (status == 0) { + isstatus = false; + } + setButtonStatus(currentBtn, status, i); // 增加索引参数 + } + updateRechargeTextViewStatus(isstatus, 0); + + + } else { + // 5. 兜底逻辑:数据为空时,所有按钮按status=0处理 + for (int i = 0; i < buttonList.size(); i++) { + setButtonStatus(buttonList.get(i), 0, i); + } + } + + } + + /** + * 工具方法:统一设置单个按钮的状态 + * + * @param button 要设置的RadioButton + * @param status 状态值 + * @param index 按钮索引,用于标识不同按钮 + */ + private void setButtonStatus(RadioButton button, int status, int index) { + if (button == null) return; + + // 移除之前的点击监听器,避免重复设置 + button.setOnClickListener(null); + + if (status == 1) { + // 可用状态 + button.setEnabled(true); + // button.setChecked(true); + + // 恢复充值按钮状态 + updateRechargeTextViewStatus(true, index); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + updateRechargeTextViewStatus(true, index); + } + }); + + } else { + // status=0和其他状态:特殊处理 + button.setEnabled(true); // 保持可点击以响应交互 + // button.setChecked(false); + // 设置特殊背景(根据需求修改为你的资源) + button.setBackground(getResources().getDrawable(R.drawable.bf_e9)); + button.setTextColor(getResources().getColor(R.color.colorBlack65)); + updateRechargeTextViewStatus(false, index); + // 添加点击事件 + button.setOnClickListener(v -> { + // 点击时再次确认是status=0状态才处理 + button.setBackground(getResources().getDrawable(R.drawable.banner_indicator_focus)); + // 更新充值按钮状态为不可点击 + updateRechargeTextViewStatus(false, index); + }); + } + } + + + /** + * 检查是否至少有一个元素达标(status == 1) + */ + public static boolean hasAnyQualified(List giftBagList) { + // 空列表处理 + 任意匹配检查 + return giftBagList != null && !giftBagList.isEmpty() + && giftBagList.stream() + .anyMatch(gift -> gift.getStatus() == 1); + } + + /** + * 更新充值TextView的状态 + * + * @param enabled 是否可点击 + * @param index 关联的按钮索引 + */ + private void updateRechargeTextViewStatus(boolean enabled, int index) { + TextView rechargeTv = mBinding.tvInvite; // 假设充值按钮的id是tvRecharge + if (rechargeTv == null) return; + + // 设置是否可点击 + rechargeTv.setEnabled(enabled); + + // 根据状态和索引设置不同背景 + if (enabled) { + ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvInvite, ColorManager.getInstance().getPrimaryColorInt(), 53); + mBinding.tvInvite.setTextColor(ColorManager.getInstance().getButtonColorInt()); + + } else { + + + // 不可点击状态的背景 + ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.tvInvite, ColorManager.getInstance().getButtonColorInt(), 53); + mBinding.tvInvite.setTextColor(getResources().getColor(R.color.colorBlack65)); + + } + } + } \ No newline at end of file diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/RechargeDialogFragment.java b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/RechargeDialogFragment.java index f2fbf0b..7bcb4c5 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/RechargeDialogFragment.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/RechargeDialogFragment.java @@ -46,12 +46,16 @@ public class RechargeDialogFragment extends BaseMvpDialogFragment> appPay(@Field("user_id") String user_id, @Field("money") String money, @Field("coin") String coin, @Field("type") String type); + Call> appPay + (@Field("user_id") String user_id, + @Field("money") String money, + @Field("coin") String coin, + @Field("type") String type, + @Field("type_params") String type_params, + @Field("type_id") String type_id + ); @FormUrlEncoded @POST(Constants.POST_APPLY_LIST) diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index e4c030a..1f5a23d 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -2047,8 +2047,8 @@ public class RetrofitClient { // }); } - public void appPay(String user_id, String money, String coin, String type, BaseObserver observer) { - sApiServer.appPay(user_id, money, coin, type).enqueue(new Callback>() { + public void appPay(String user_id, String money, String coin, String type,String type_params,String type_id, BaseObserver observer) { + sApiServer.appPay(user_id, money, coin, type,type_params,type_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.code() == 200) { diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogContacts.java b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogContacts.java index 6742236..1678494 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogContacts.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogContacts.java @@ -21,7 +21,8 @@ public class RechargeDialogContacts { public interface IRechargePre extends IPresenter { void recharge();//可选充值金额列表 void bindType(String userId); - void appPay(String user_id,String money,String coin,String type); + + void appPay(String user_id,String money,String coin,String type,String type_params,String type_id); } } diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogPresenter.java b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogPresenter.java index 417c92d..a33e081 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogPresenter.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/presenter/RechargeDialogPresenter.java @@ -47,8 +47,8 @@ public class RechargeDialogPresenter extends BasePresenter() { + public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) { + api.appPay(user_id, money, coin, type,type_params,type_id, new BaseObserver() { @Override public void onSubscribe(Disposable d) { addDisposable(d); @@ -61,4 +61,6 @@ public class RechargeDialogPresenter extends BasePresenter giftBags = giftBean != null ? giftBean.getGift_bag() : null; - } else if (type == 2) { - s = giftBean.getGift_bag().get(1).getMoney(); - } else if (type == 3) { - s = giftBean.getGift_bag().get(2).getMoney(); - }else if (type==4){ - s = giftBean.getGift_bag().get(3).getMoney(); - } - if (s == null) { +// 校验数据有效性 + if (giftBags == null || giftBags.isEmpty()) { ToastUtils.showShort("暂无礼物"); return; } - RechargeDialogFragment.show(null, s, getSupportFragmentManager()); +// 计算索引(type从1开始对应索引0) + int index = type - 1; + +// 索引安全校验 + 数据获取 + if (index >= 0 && index < giftBags.size()) { + FirstChargeGiftBean.GiftBag currentGift = giftBags.get(index); + money = currentGift.getMoney(); + giftBagId = currentGift.getGift_bag_id(); + } + +// 最终数据校验 + if (money == null) { + ToastUtils.showShort("暂无礼物"); + return; + } + +// 显示对话框 + RechargeDialogFragment.show(null, money, getSupportFragmentManager(), giftBagId, "3"); + } @Override @@ -914,21 +945,18 @@ public class MainActivity extends BaseMvpActivity(), ThreadUtils.runOnUiThreadDelayed({ val fragment = RechargeDialogFragment.show( roomId, null, - supportFragmentManager + supportFragmentManager,"","" ) if (fragment != null) { addActiveDialogFragment(fragment) // 添加到管理列表 @@ -981,7 +981,7 @@ class RoomActivity : BaseMvpActivity(), ThreadUtils.runOnUiThreadDelayed({ val fragment = RechargeDialogFragment.show( roomId, null, - supportFragmentManager + supportFragmentManager,"","" ) if (fragment != null) { addActiveDialogFragment(fragment) // 添加到管理列表 diff --git a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java index 419fceb..96a5957 100644 --- a/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java +++ b/moduleroom/src/main/java/com/example/moduleroom/dialog/RoomGiftDialogFragment.java @@ -391,7 +391,7 @@ public class RoomGiftDialogFragment extends BaseMvpDialogFragment impl } @Override - public void appPay(String user_id, String money, String coin, String type) { - api.appPay(user_id, money, coin, type, new BaseObserver() { + public void appPay(String user_id, String money, String coin, String type, String type_params, String type_id) { + api.appPay(user_id, money, coin, type,type_params,type_id, new BaseObserver() { @Override public void onSubscribe(Disposable d) { addDisposable(d); @@ -65,6 +65,8 @@ public class RechargePresenter extends BasePresenter impl }); } + + @Override public void bindType(String userId) { api.bindType(userId, new BaseObserver() {