package com.xscm.modulemain.dialog; import static android.view.View.GONE; import static android.view.View.VISIBLE; import android.content.Context; import android.graphics.Color; import android.text.TextUtils; import android.text.method.DigitsKeyListener; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.RadioGroup; import androidx.annotation.NonNull; import com.blankj.utilcode.util.ScreenUtils; import com.xscm.modulemain.R; import com.xscm.modulemain.databinding.DialogRedBagSendBinding; import com.hjq.toast.ToastUtils; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.bean.RedPacketConfig; import com.xscm.moduleutil.bean.WalletBean; import com.xscm.moduleutil.http.BaseObserver; import com.xscm.moduleutil.http.RetrofitClient; import com.xscm.moduleutil.widget.dialog.BaseDialog; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import io.reactivex.disposables.Disposable; public class RedBagSendDialog extends BaseDialog { private static final String TAG = "RedBagSendDialog"; private int type;//这是第一个页面,发送红包的第一个页面,默认为1,第二个页面,是2,点击查看帮助,是type=3 private int stype;//当前是哪个页面:1:默认第一个页面, 2:选择条件页面 private int redType;//红包类型 1:普通红包 2:口令红包 private int redTime;//开奖倒计时 0:立刻 1:1分钟;2:2分钟;5:5分钟 10:10分钟(这里传递给服务的时候,需要乘60) private int redGold=1;//红包类型 0:金币红包 1:钻石红包 private int redCount;//条件 0:无 1:收藏房间 2:仅麦上用户 private String roomId; private RedPacketConfig redPacketConfig; public RedBagSendDialog(@NonNull @NotNull Context context, String roomId,RedPacketConfig redPacketConfig) { super(context, com.xscm.moduleutil.R.style.BaseDialogStyleH); this.roomId = roomId; this.redPacketConfig= redPacketConfig; } @Override public int getLayoutId() { return R.layout.dialog_red_bag_send; } private boolean diaj=false; @Override public void initView() { setCancelable(false); setCanceledOnTouchOutside(false); Window window = getWindow(); // window.setLayout(345, 454); // window.setLayout((int) (ScreenUtils.getScreenWidth() * 345.f / 345), WindowManager.LayoutParams.WRAP_CONTENT); window.setLayout((int) (ScreenUtils.getScreenWidth() * 0.9), WindowManager.LayoutParams.WRAP_CONTENT); setView(1); mBinding.edText.setKeyListener(DigitsKeyListener.getInstance("0123456789")); mBinding.etNum.setKeyListener(DigitsKeyListener.getInstance("0123456789")); mBinding.imHelp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (type != 3) { setView(3); setWebView(CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"api/Page/page_show?id=25"); } else { setView(stype); } } }); mBinding.imRedClose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); mBinding.butSub.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mBinding.butSub.getText().equals("下一步")) { if (redType==2){ if (TextUtils.isEmpty(mBinding.evKl.getText().toString().trim())){ ToastUtils.show("请输入口令"); return; } } setView(2); setFRed(); } else { if (diaj){ return; } diaj=true; // 验证输入 String numStr = mBinding.etNum.getText().toString().trim(); String textStr = mBinding.edText.getText().toString().trim(); // 检查是否为空 if (TextUtils.isEmpty(numStr)) { diaj=false; ToastUtils.show("请输入数量"); return; } if (TextUtils.isEmpty(textStr)) { diaj=false; ToastUtils.show("请输入金额"); return; } if (redType==2){ if (TextUtils.isEmpty(mBinding.evKl.getText().toString().trim())){ diaj=false; ToastUtils.show("请输入口令"); return; } } // 转换为数字并比较 try { int num = Integer.parseInt(numStr); int text = Integer.parseInt(textStr); if (text < num) { diaj=false; ToastUtils.show("金额必须大于数量"); return; } // 验证通过,继续发送红包逻辑 sendRedPacket(); } catch (NumberFormatException e) { diaj=false; ToastUtils.show("请输入有效的数字"); return; } } } }); mBinding.rgXz.check(R.id.bt_pt); redType = 1; mBinding.lKl.setVisibility(GONE); mBinding.rgXz.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.bt_pt) { redType = 1; mBinding.lKl.setVisibility(GONE); } else if (checkedId == R.id.bt_kl) { redType = 2; mBinding.lKl.setVisibility(VISIBLE); } } }); mBinding.rgDjs.check(R.id.rb_lk); redTime = 0; mBinding.rgDjs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.rb_lk) { redTime = 0; } else if (checkedId == R.id.rb_1) { redTime = 1 * 60; } else if (checkedId == R.id.rb_2) { redTime = 2 * 60; } else if (checkedId == R.id.rb_5) { redTime = 5 * 60; } else if (checkedId == R.id.rb_10) { redTime = 10 * 60; } } }); mBinding.rgRedType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.rb_gold) { // 选中金币红包:文字红色,背景黄色 mBinding.rbGold.setTextColor(Color.parseColor("#D01717")); mBinding.rbGold.setBackgroundResource(com.xscm.moduleutil.R.drawable.selector_red_bag_type_button); // 钻石红包恢复默认样式 mBinding.rbDiamond.setTextColor(Color.parseColor("#FFC9C7")); mBinding.rbDiamond.setBackgroundResource(com.xscm.moduleutil.R.drawable.selector_red_bag_type_button); redGold = 1; } else if (checkedId == R.id.rb_diamond) { // 选中钻石红包:文字白色,背景透明 mBinding.rbDiamond.setTextColor(Color.parseColor("#D01717")); mBinding.rbDiamond.setBackgroundResource(com.xscm.moduleutil.R.drawable.selector_red_bag_type_button); // 金币红包恢复默认样式 mBinding.rbGold.setTextColor(Color.parseColor("#FFC9C7")); mBinding.rbGold.setBackgroundResource(com.xscm.moduleutil.R.drawable.selector_red_bag_type_button); redGold =2; } } }); // 设置点击监听器 mBinding.btNone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击"无"时,取消其他所有选项的选中状态 mBinding.btFavoriteRoom.setSelected(false); mBinding.btMicUser.setSelected(false); // 切换"无"的选中状态 mBinding.btNone.setSelected(!mBinding.btNone.isSelected()); } }); mBinding.btFavoriteRoom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 如果"无"被选中,则先取消"无"的选中状态 if (mBinding.btNone.isSelected()) { mBinding.btNone.setSelected(false); } // 切换当前按钮的选中状态 mBinding.btFavoriteRoom.setSelected(!mBinding.btFavoriteRoom.isSelected()); } }); mBinding.btMicUser.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 如果"无"被选中,则先取消"无"的选中状态 if (mBinding.btNone.isSelected()) { mBinding.btNone.setSelected(false); } // 切换当前按钮的选中状态 mBinding.btMicUser.setSelected(!mBinding.btMicUser.isSelected()); } }); } private void sendRedPacket() { // 获取输入值 String numStr = mBinding.etNum.getText().toString().trim(); String textStr = mBinding.edText.getText().toString().trim(); String kl = ""; if (redType == 2) { kl = mBinding.evKl.getText().toString().trim(); } // 验证输入 if (TextUtils.isEmpty(numStr)) { diaj=false; ToastUtils.show("请输入数量"); return; } if (TextUtils.isEmpty(textStr)) { diaj=false; ToastUtils.show("请输入金额"); return; } try { int textValue = Integer.parseInt(textStr); if (textValue < redPacketConfig.getRed_packet_min_amount()) { // 你的逻辑 diaj=false; ToastUtils.show("金额不能小于"+redPacketConfig.getRed_packet_min_amount()); return; } } catch (NumberFormatException e) { ToastUtils.show("请输入有效的数字"); return; } if (redType == 2 && TextUtils.isEmpty(kl)) { diaj=false; ToastUtils.show("请输入口令"); return; } try { int num = Integer.parseInt(numStr); int text = Integer.parseInt(textStr); if (text < num) { diaj=false; ToastUtils.show("金额必须大于数量"); return; } // 发送红包 RetrofitClient.getInstance().redPacketCreate( redType, kl, redGold, textStr, numStr, getSelectedConditions(), redTime + "", roomId, mBinding.edBz.getText().toString(), new BaseObserver() { @Override public void onSubscribe(@NotNull Disposable d) {} @Override public void onNext(@NotNull String redPacketBean) { ToastUtils.show("发送成功"); diaj=false; dismiss(); } } ); } catch (NumberFormatException e) { diaj=false; ToastUtils.show("请输入有效的数字"); } } private String getSelectedConditions() { Button btNone = mBinding.llTj.findViewById(R.id.bt_none); Button btFavoriteRoom = mBinding.llTj.findViewById(R.id.bt_favorite_room); Button btMicUser = mBinding.llTj.findViewById(R.id.bt_mic_user); if (btNone.isSelected()) { return "0"; } else { List selectedList = new ArrayList<>(); if (btFavoriteRoom.isSelected()) { selectedList.add("1"); } if (btMicUser.isSelected()) { selectedList.add("2"); } return String.join(",", selectedList); } } private WalletBean walletBean; @Override public void initData() { RetrofitClient.getInstance().wallet(new BaseObserver() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(WalletBean walletBeans) { walletBean = walletBeans; } }); } private void setView(int types) { type = types; switch (types) { case 1: mBinding.clRedXz.setVisibility(VISIBLE); mBinding.lKl.setVisibility(VISIBLE); mBinding.lDjs.setVisibility(VISIBLE); mBinding.lLx.setVisibility(VISIBLE); mBinding.tvJeTitle.setVisibility(GONE); mBinding.lJine.setVisibility(GONE); mBinding.lGs.setVisibility(GONE); mBinding.llTj.setVisibility(GONE); mBinding.lBz.setVisibility(GONE); mBinding.wvWeb.setVisibility(GONE); mBinding.butSub.setVisibility(VISIBLE); mBinding.tvZy.setVisibility(GONE); mBinding.butSub.setText("下一步"); mBinding.imHelp.setImageResource(com.xscm.moduleutil.R.drawable.room_redbag_help); stype = 1; break; case 2: mBinding.clRedXz.setVisibility(GONE); mBinding.lKl.setVisibility(GONE); mBinding.lDjs.setVisibility(GONE); mBinding.lLx.setVisibility(GONE); mBinding.tvJeTitle.setVisibility(VISIBLE); mBinding.lJine.setVisibility(VISIBLE); mBinding.lGs.setVisibility(VISIBLE); mBinding.llTj.setVisibility(VISIBLE); mBinding.lBz.setVisibility(VISIBLE); mBinding.wvWeb.setVisibility(GONE); mBinding.butSub.setVisibility(VISIBLE); mBinding.tvZy.setVisibility(VISIBLE); mBinding.butSub.setText("发红包"); mBinding.imHelp.setImageResource(com.xscm.moduleutil.R.drawable.room_redbag_help); stype = 2; break; case 3: mBinding.clRedXz.setVisibility(GONE); mBinding.lKl.setVisibility(GONE); mBinding.lDjs.setVisibility(GONE); mBinding.lLx.setVisibility(GONE); mBinding.tvJeTitle.setVisibility(GONE); mBinding.lJine.setVisibility(GONE); mBinding.lGs.setVisibility(GONE); mBinding.llTj.setVisibility(GONE); mBinding.lBz.setVisibility(GONE); mBinding.wvWeb.setVisibility(VISIBLE); mBinding.butSub.setVisibility(GONE); mBinding.tvZy.setVisibility(GONE); mBinding.imHelp.setImageResource(com.xscm.moduleutil.R.drawable.room_redbag_back); break; default: break; } } // TODO: 2025/10/11 打开规则按钮 private void setWebView(String url) { mBinding.wvWeb.getSettings().setJavaScriptEnabled(true); mBinding.wvWeb.loadUrl(url); } private void setFRed() { mBinding.tvZy.setText("注:发送红包,将固定收取 "+redPacketConfig.getRed_packet_fee()+"金币作为手续费(用于系统处理、安全验证及服务维护)"); if (redGold == 1) { mBinding.tvJeTitle.setText(walletBean.getCoin() != null ? walletBean.getCoin() : "0" + "金币可用"); mBinding.tvJ.setText("金币"); } else if (redGold == 2) { mBinding.tvJeTitle.setText(walletBean.getEarnings() != null ? walletBean.getEarnings() : "0" + "钻石可用"); mBinding.tvJ.setText("钻石"); } } }