feat : 礼物数量 选择初步 提交

This commit is contained in:
eggmanQQQ
2025-02-19 11:13:13 +08:00
parent 96c9479203
commit 70475fc84e
10 changed files with 114 additions and 36 deletions

View File

@@ -30,12 +30,12 @@ class CoinTipsView : FrameLayout {
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs){initView(context)} constructor(context: Context, attrs: AttributeSet?) : super(context, attrs){initView(context)}
lateinit var mRootViewBinding : ViewCoinTipsBinding lateinit var mRootViewBinding : ViewCoinTipsBinding
var mCoin : Int?=null var mCoin : Long?=null
private fun initView(context: Context) { private fun initView(context: Context) {
mRootViewBinding = ViewCoinTipsBinding.inflate(LayoutInflater.from(context),this,true) mRootViewBinding = ViewCoinTipsBinding.inflate(LayoutInflater.from(context),this,true)
mCoin = (PayModel.get().currentWalletInfo?.diamondNum ?: 0.0).toInt() mCoin = (PayModel.get().currentWalletInfo?.diamondNum ?: 0.0).toLong()
mRootViewBinding.price.text = mCoin?.toString()?:"" mRootViewBinding.price.text = mCoin?.toString()?:""
} }
@@ -120,7 +120,7 @@ class CoinTipsView : FrameLayout {
* number != null ,表示 接收中奖消息, 这时展示增加 * number != null ,表示 接收中奖消息, 这时展示增加
*/ */
private fun setCoinText(number: String?,isAdd: Boolean) : String? { private fun setCoinText(number: String?,isAdd: Boolean) : String? {
val newCoin = (PayModel.get().currentWalletInfo?.diamondNum ?: 0.0).toInt() val newCoin = (PayModel.get().currentWalletInfo?.diamondNum ?: 0.0).toLong()
val oldCoin = if (mCoin != null ) mCoin else newCoin val oldCoin = if (mCoin != null ) mCoin else newCoin
val num = newCoin - oldCoin!! val num = newCoin - oldCoin!!

View File

@@ -53,6 +53,7 @@ import com.chwl.app.ui.gift.dialog.PageIndicatorView;
import com.chwl.app.ui.pay.ChargeActivity; import com.chwl.app.ui.pay.ChargeActivity;
import com.chwl.app.ui.utils.ImageLoadUtils; import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.webview.DialogWebViewActivity; import com.chwl.app.ui.webview.DialogWebViewActivity;
import com.chwl.app.ui.widget.adapter.GiftDialogNumberAdapter;
import com.chwl.app.ui.widget.dialog.GiftManualQuantityDialog; import com.chwl.app.ui.widget.dialog.GiftManualQuantityDialog;
import com.chwl.app.ui.widget.drawgift.DrawGiftHelper; import com.chwl.app.ui.widget.drawgift.DrawGiftHelper;
import com.chwl.app.ui.widget.drawgift.DrawGiftView; import com.chwl.app.ui.widget.drawgift.DrawGiftView;
@@ -60,6 +61,7 @@ import com.chwl.app.ui.widget.magicindicator.GiftIndicator;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil; import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.app.ui.widget.recyclerview.decoration.VerticalDecoration; import com.chwl.app.ui.widget.recyclerview.decoration.VerticalDecoration;
import com.chwl.app.utils.RegexUtil; import com.chwl.app.utils.RegexUtil;
import com.chwl.app.utils.RoomHelperManager;
import com.chwl.app.utils.SpannableBuilder; import com.chwl.app.utils.SpannableBuilder;
import com.chwl.app.vip.VipCenterActivity; import com.chwl.app.vip.VipCenterActivity;
import com.chwl.core.UriProvider; import com.chwl.core.UriProvider;
@@ -219,6 +221,8 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
private TextView tvNickLevel; private TextView tvNickLevel;
private View llStarWeek; private View llStarWeek;
private GiftDialogNumberAdapter mGiftDialogNumberAdapter;
public GiftDialog(Context context, int giftId) { public GiftDialog(Context context, int giftId) {
this(context, 0, true, false, true, giftId); this(context, 0, true, false, true, giftId);
@@ -1233,24 +1237,26 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
private void initEasyPop(boolean isBag) { private void initEasyPop(boolean isBag) {
easyPopup = new EasyPopup(getContext()) easyPopup = new EasyPopup(getContext())
.setContentView(R.layout.dialog_gift_number) .setContentView(R.layout.dialog_gift_number_new)
.setFocusAndOutsideEnable(true) .setFocusAndOutsideEnable(true)
.createPopup(); .createPopup();
easyPopup.getView(R.id.number_1).setOnClickListener(this); RecyclerView rvNumList = easyPopup.getView(R.id.rvNumList);
easyPopup.getView(R.id.number_10).setOnClickListener(this); if (rvNumList == null) return;
easyPopup.getView(R.id.number_66).setOnClickListener(this); if (mGiftDialogNumberAdapter == null) {
easyPopup.getView(R.id.number_99).setOnClickListener(this); mGiftDialogNumberAdapter = new GiftDialogNumberAdapter();
easyPopup.getView(R.id.number_188).setOnClickListener(this); mGiftDialogNumberAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
easyPopup.getView(R.id.number_520).setOnClickListener(this); @Override
easyPopup.getView(R.id.number_1314).setOnClickListener(this); public void onItemClick(BaseQuickAdapter baseQuickAdapter, View view, int i) {
if (isBag) { OtherExtKt.isVerify(mGiftDialogNumberAdapter.getData(), i, integer -> {
easyPopup.getView(R.id.number_all).setVisibility(View.VISIBLE); updateNumber(integer);
easyPopup.getView(R.id.number_all).setOnClickListener(this); return null;
} else { });
easyPopup.getView(R.id.number_all).setVisibility(View.GONE); }
});
} }
easyPopup.getView(R.id.number_manual).setOnClickListener(this); rvNumList.setAdapter(mGiftDialogNumberAdapter);
mGiftDialogNumberAdapter.setNewData(RoomHelperManager.INSTANCE.getGiftNumbers(isBag));
easyPopup.setOnDismissListener(() -> giftNumberOptions.animate().rotationBy(180).start()); easyPopup.setOnDismissListener(() -> giftNumberOptions.animate().rotationBy(180).start());
} }

View File

@@ -0,0 +1,12 @@
package com.chwl.app.ui.widget.adapter
import com.chwl.app.bindadapter.BaseBindingAdapter
import com.chwl.app.databinding.ItemGiftNumberNewBinding
class GiftDialogNumberAdapter : BaseBindingAdapter<ItemGiftNumberNewBinding, Int>() {
override fun onBindView(viewBinding: ItemGiftNumberNewBinding, data: Int, pos: Int) {
viewBinding.number.text = if (data == -1) "all" else data.toString()
}
}

View File

@@ -22,6 +22,7 @@ import com.chwl.library.common.file.FileHelper
import com.chwl.library.common.util.doLog import com.chwl.library.common.util.doLog
import com.chwl.library.common.util.doToast import com.chwl.library.common.util.doToast
import com.chwl.library.common.util.doToastDeBug import com.chwl.library.common.util.doToastDeBug
import com.chwl.library.common.util.isVerify
import com.chwl.library.net.rxnet.RxNet import com.chwl.library.net.rxnet.RxNet
import com.google.gson.JsonElement import com.google.gson.JsonElement
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
@@ -39,6 +40,7 @@ import java.util.Locale
object RoomHelperManager { object RoomHelperManager {
var mLuckyBagConfig : LuckyBagConfig?= null var mLuckyBagConfig : LuckyBagConfig?= null
var mGiftNumbers : MutableList<Int>?=null
// //
// fun getTimeDown(beginTime:Long) : Long { // fun getTimeDown(beginTime:Long) : Long {
@@ -182,6 +184,18 @@ object RoomHelperManager {
.compose(RxHelper.handleSchedulers()) .compose(RxHelper.handleSchedulers())
} }
fun getGiftNumbers(isBag: Boolean): MutableList<Int> {
var data = mutableListOf(1,7,17)
if (mGiftNumbers.isVerify()) {
data = mGiftNumbers!!
}
if (isBag) {
data.add(-1)
}
return data
}
private val api: Api = RxNet.create(Api::class.java); private val api: Api = RxNet.create(Api::class.java);
interface Api { interface Api {

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:minWidth="@dimen/dp_120"
android:background="@drawable/shape_bg_dialog_gift_number"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvNumList"
tools:listitem="@layout/item_gift_number_new"
android:layout_width="match_parent"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="1"
android:orientation="vertical"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginBottom="@dimen/dp_5"
android:layout_height="wrap_content"/>
</LinearLayout>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_25"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_16"
tools:background="@color/blue"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="1"
android:textColor="@color/appColor"
android:textSize="@dimen/dp_11"
tools:ignore="HardcodedText,SpUsage" />
</LinearLayout>

View File

@@ -2,13 +2,7 @@ package com.chwl.app.module_hall.im.msgholder;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.MetricAffectingSpan;
import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
@@ -16,13 +10,6 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.coorchice.library.SuperTextView;
import com.example.lib_utils.spannable.SpannableTextBuilder;
import com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase;
import com.netease.nim.uikit.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.orhanobut.logger.Logger;
import com.chwl.app.R; import com.chwl.app.R;
import com.chwl.app.module_hall.im.NimHelper; import com.chwl.app.module_hall.im.NimHelper;
import com.chwl.app.module_hall.im.dialog.AgreeApplyDialog; import com.chwl.app.module_hall.im.dialog.AgreeApplyDialog;
@@ -40,6 +27,13 @@ import com.chwl.core.module_hall.im.bean.HallMsgLayout;
import com.chwl.core.utils.net.BeanObserver; import com.chwl.core.utils.net.BeanObserver;
import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil; import com.chwl.library.utils.SingleToastUtil;
import com.coorchice.library.SuperTextView;
import com.example.lib_utils.spannable.SpannableTextBuilder;
import com.netease.nim.uikit.business.session.viewholder.MsgViewHolderBase;
import com.netease.nim.uikit.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.orhanobut.logger.Logger;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@@ -52,7 +46,7 @@ import java.util.Objects;
* 模厅im消息展示 * 模厅im消息展示
* Created by lvzebiao on 2019/1/7. * Created by lvzebiao on 2019/1/7.
*/ */
//todo do 更新云信消息扩展字段 示例
public class HallMsgViewHolder extends MsgViewHolderBase { public class HallMsgViewHolder extends MsgViewHolderBase {
private ConstraintLayout clContainer; private ConstraintLayout clContainer;

View File

@@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.alibaba.fastjson.JSON;
import com.chwl.core.DemoCache; import com.chwl.core.DemoCache;
import com.chwl.core.R; import com.chwl.core.R;
import com.chwl.core.XConstants; import com.chwl.core.XConstants;
@@ -35,6 +36,7 @@ import com.chwl.core.user.UserModel;
import com.chwl.core.utils.CurrentTimeUtils; import com.chwl.core.utils.CurrentTimeUtils;
import com.chwl.core.utils.LogUtils; import com.chwl.core.utils.LogUtils;
import com.chwl.core.utils.StringFormatUtils; import com.chwl.core.utils.StringFormatUtils;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.utils.ListUtils; import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil; import com.chwl.library.utils.ResUtil;
import com.netease.nimlib.sdk.NIMChatRoomSDK; import com.netease.nimlib.sdk.NIMChatRoomSDK;
@@ -818,6 +820,7 @@ public final class AvRoomDataManager {
// 添加麦位信息 // 添加麦位信息
public void addRoomQueueInfo(String micPosition, RoomQueueInfo roomQueueInfo) { public void addRoomQueueInfo(String micPosition, RoomQueueInfo roomQueueInfo) {
OtherExtKt.doLog(" 上麦 addRoomQueueInfo() 添加麦位信息 pos="+micPosition +" roomQueueInfo = "+ JSON.toJSONString(roomQueueInfo) + "/n");
if (roomQueueInfo == null || roomQueueInfo.mChatRoomMember == null) return; if (roomQueueInfo == null || roomQueueInfo.mChatRoomMember == null) return;
Integer position = Integer.valueOf(micPosition); Integer position = Integer.valueOf(micPosition);
int size = AvRoomDataManager.get().mMicQueueMemberMap.size(); int size = AvRoomDataManager.get().mMicQueueMemberMap.size();
@@ -854,6 +857,7 @@ public final class AvRoomDataManager {
} }
mMicQueueMemberMap.clear(); mMicQueueMemberMap.clear();
for (int i = 0; i < queue.size(); i++) { for (int i = 0; i < queue.size(); i++) {
OtherExtKt.doLog(" 上麦 replaceMicQueue() 添加麦位信息 pos="+i +" key = "+queue.keyAt(i)+" value = "+ JSON.toJSONString(queue.valueAt(i)) + "/n");
mMicQueueMemberMap.put(queue.keyAt(i), queue.valueAt(i)); mMicQueueMemberMap.put(queue.keyAt(i), queue.valueAt(i));
} }
} }

View File

@@ -681,6 +681,8 @@ public class AvRoomModel extends RoomBaseModel implements IAvRoomModel {
// 找出相册消息 // 找出相册消息
if (((CustomAttachment) attachment).getFirst() == CustomAttachment.CUSTOM_MSG_ROOM_ALBUM) { if (((CustomAttachment) attachment).getFirst() == CustomAttachment.CUSTOM_MSG_ROOM_ALBUM) {
newList.add(message); newList.add(message);
}else if (((CustomAttachment) attachment).getFirst() == CustomAttachment.ROOM_PIC_SCREEN_FIRST) {
newList.add(message);
} }
} }
} else { } else {

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.SparseArray; import android.util.SparseArray;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.chwl.core.R; import com.chwl.core.R;
import com.chwl.core.auth.AuthModel; import com.chwl.core.auth.AuthModel;
@@ -386,9 +387,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
return; return;
} }
//坑上没人且没锁 //坑上没人且没锁
if (roomMicInfo != null && if (roomMicInfo != null && (!roomMicInfo.isMicLock() || AvRoomDataManager.get().isRoomOwner(uId) || AvRoomDataManager.get().isRoomAdmin(uId) || isInviteUpMic)) {
(!roomMicInfo.isMicLock() || AvRoomDataManager.get().isRoomOwner(uId) ||
AvRoomDataManager.get().isRoomAdmin(uId) || isInviteUpMic)) {
final UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); final UserInfo userInfo = UserModel.get().getCacheLoginUserInfo();
if (userInfo != null) { if (userInfo != null) {
userInfo.setGroupType(teamId); userInfo.setGroupType(teamId);
@@ -405,8 +404,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
}; };
//先看下这个用户是否在麦上 //先看下这个用户是否在麦上
if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) { if (AvRoomDataManager.get().isOnMic(userInfo.getUid())) {int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid());
int position = AvRoomDataManager.get().getMicPosition(userInfo.getUid());
//下麦 //下麦
downMicroPhone(position, new CallBack<String>() { downMicroPhone(position, new CallBack<String>() {
@Override @Override
@@ -639,6 +637,7 @@ public class RoomBaseModel extends BaseModel implements IRoomBaseModel {
//todo do 填充麦位上的用户信息? //todo do 填充麦位上的用户信息?
protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo, boolean isNoProhibitMic) { protected void updateQueueEx(int micPosition, String roomId, final CallBack<String> callBack, UserInfo userInfo, boolean isNoProhibitMic) {
OtherExtKt.doLog(" 上麦 updateQueueEx() 填充麦位上的用户信息 pos="+micPosition +" isNoProhibitMic = "+isNoProhibitMic+" userInfo = "+ JSON.toJSONString(userInfo) + "/n");
JSONObject contentJsonObj = new JSONObject(); JSONObject contentJsonObj = new JSONObject();
contentJsonObj.put("uid", String.valueOf(userInfo.getUid())); contentJsonObj.put("uid", String.valueOf(userInfo.getUid()));
contentJsonObj.put("nick", userInfo.getNick()); contentJsonObj.put("nick", userInfo.getNick());