423 lines
16 KiB
Java
423 lines
16 KiB
Java
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("钻石");
|
||
}
|
||
}
|
||
}
|