Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/dialog/RedBagSendDialog.java

449 lines
17 KiB
Java
Raw Normal View History

2025-10-28 16:56:13 +08:00
package com.xscm.modulemain.dialog;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
2025-10-24 17:55:15 +08:00
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;
2025-10-28 16:56:13 +08:00
2025-10-24 17:55:15 +08:00
import androidx.annotation.NonNull;
2025-10-28 16:56:13 +08:00
2025-10-24 17:55:15 +08:00
import com.blankj.utilcode.util.ScreenUtils;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.R;
import com.xscm.modulemain.databinding.DialogRedBagSendBinding;
2025-10-24 17:55:15 +08:00
import com.hjq.toast.ToastUtils;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.bean.RedPacketConfig;
2025-10-24 17:55:15 +08:00
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;
2025-10-28 16:56:13 +08:00
2025-10-24 17:55:15 +08:00
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
2025-10-28 16:56:13 +08:00
import io.reactivex.disposables.Disposable;
2025-10-24 17:55:15 +08:00
public class RedBagSendDialog extends BaseDialog<DialogRedBagSendBinding> {
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;
2025-10-24 17:55:15 +08:00
public RedBagSendDialog(@NonNull @NotNull Context context, String roomId,RedPacketConfig redPacketConfig) {
2025-10-24 17:55:15 +08:00
super(context, com.xscm.moduleutil.R.style.BaseDialogStyleH);
this.roomId = roomId;
this.redPacketConfig= redPacketConfig;
2025-10-24 17:55:15 +08:00
}
@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);
2025-12-19 18:41:16 +08:00
if (text < num) {
2025-10-24 17:55:15 +08:00
diaj=false;
ToastUtils.show("金额必须大于数量");
return;
}
// 验证通过,继续发送红包逻辑
sendRedPacket();
} catch (NumberFormatException e) {
diaj=false;
ToastUtils.show("请输入有效的数字");
return;
}
}
}
});
2025-12-05 14:35:34 +08:00
mBinding.rgXz.check(R.id.bt_pt);
redType = 1;
mBinding.lKl.setVisibility(GONE);
2025-10-24 17:55:15 +08:00
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);
}
}
});
2025-12-05 14:35:34 +08:00
mBinding.rgDjs.check(R.id.rb_lk);
redTime = 0;
2025-10-24 17:55:15 +08:00
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());
}
});
2025-10-24 17:55:15 +08:00
}
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("金额不能小于10");
return;
}
} catch (NumberFormatException e) {
ToastUtils.show("请输入有效的数字");
return;
}
2025-10-24 17:55:15 +08:00
if (redType == 2 && TextUtils.isEmpty(kl)) {
diaj=false;
ToastUtils.show("请输入口令");
return;
}
try {
int num = Integer.parseInt(numStr);
int text = Integer.parseInt(textStr);
2025-12-19 18:41:16 +08:00
if (text < num) {
2025-10-24 17:55:15 +08:00
diaj=false;
ToastUtils.show("金额必须大于数量");
return;
}
// 发送红包
RetrofitClient.getInstance().redPacketCreate(
redType,
kl,
redGold,
textStr,
numStr,
getSelectedConditions(),
redTime + "",
roomId,
mBinding.edBz.getText().toString(),
new BaseObserver<String>() {
@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<String> 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<WalletBean>() {
@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);
2025-10-24 17:55:15 +08:00
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);
2025-10-24 17:55:15 +08:00
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);
2025-10-24 17:55:15 +08:00
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()+"金币 作为手续费(用于系统处理、安全验证及服务维护");
2025-10-24 17:55:15 +08:00
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("钻石");
}
}
}