Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/dialog/RedBagSendDialog.java
2025-11-07 09:22:39 +08:00

423 lines
16 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.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<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;
public RedBagSendDialog(@NonNull @NotNull Context context, String roomId ) {
super(context, com.xscm.moduleutil.R.style.BaseDialogStyleH);
this.roomId = roomId;
}
@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.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.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;
}
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<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.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.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.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() {
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("钻石");
}
}
}