1.送礼错误处理流程修改 2.贵族礼物标识和礼物tag重叠问题处理

This commit is contained in:
huangjian
2022-01-12 11:59:18 +08:00
parent 45ac600470
commit 9222701dd1
5 changed files with 77 additions and 80 deletions

View File

@@ -54,7 +54,6 @@ import com.yizhuan.erban.ui.widget.GiftDialog
import com.yizhuan.erban.ui.widget.GiftDialog.OnGiftDialogBtnClickListener import com.yizhuan.erban.ui.widget.GiftDialog.OnGiftDialogBtnClickListener
import com.yizhuan.erban.ui.widget.GiftDialog.SenGiftCallback import com.yizhuan.erban.ui.widget.GiftDialog.SenGiftCallback
import com.yizhuan.erban.ui.widget.UserInfoDialog import com.yizhuan.erban.ui.widget.UserInfoDialog
import com.yizhuan.erban.ui.widget.dialog.OpenNobleDialog
import com.yizhuan.erban.ui.widget.dynamicface.DynamicFaceDialog import com.yizhuan.erban.ui.widget.dynamicface.DynamicFaceDialog
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView
import com.yizhuan.erban.ui.widget.rollviewpager.Util import com.yizhuan.erban.ui.widget.rollviewpager.Util
@@ -66,10 +65,8 @@ import com.yizhuan.xchat_android_core.Constants
import com.yizhuan.xchat_android_core.UriProvider import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_core.auth.AuthModel import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.bean.RoomMicInfo import com.yizhuan.xchat_android_core.bean.RoomMicInfo
import com.yizhuan.xchat_android_core.bean.response.ServiceResult
import com.yizhuan.xchat_android_core.gift.GiftModel import com.yizhuan.xchat_android_core.gift.GiftModel
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
import com.yizhuan.xchat_android_core.gift.bean.GiftMultiReceiverInfo
import com.yizhuan.xchat_android_core.home.bean.BannerInfo import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment
import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment2 import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment2
@@ -78,17 +75,13 @@ import com.yizhuan.xchat_android_core.manager.AudioEngineManager
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager import com.yizhuan.xchat_android_core.manager.IMNetEaseManager
import com.yizhuan.xchat_android_core.manager.RoomEvent import com.yizhuan.xchat_android_core.manager.RoomEvent
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel
import com.yizhuan.xchat_android_core.mentoring_relationship.event.MentoringStopCountingEvent import com.yizhuan.xchat_android_core.mentoring_relationship.event.MentoringStopCountingEvent
import com.yizhuan.xchat_android_core.music.model.PlayerModel
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent
import com.yizhuan.xchat_android_core.room.bean.RoomInfo import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.event.RoomClearScreenEvent import com.yizhuan.xchat_android_core.room.event.RoomClearScreenEvent
import com.yizhuan.xchat_android_core.room.face.FaceInfo
import com.yizhuan.xchat_android_core.room.game.GameStatus import com.yizhuan.xchat_android_core.room.game.GameStatus
import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg
import com.yizhuan.xchat_android_core.room.model.MicQueueModel
import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo
import com.yizhuan.xchat_android_core.share.bean.SessionType import com.yizhuan.xchat_android_core.share.bean.SessionType
import com.yizhuan.xchat_android_core.statistic.StatisticManager import com.yizhuan.xchat_android_core.statistic.StatisticManager
@@ -99,13 +92,13 @@ import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil
import com.yizhuan.xchat_android_core.user.UserModel import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.BaseInfo import com.yizhuan.xchat_android_core.user.bean.BaseInfo
import com.yizhuan.xchat_android_core.user.bean.UserInfo import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.utils.net.VipLevelNotEnoughException
import com.yizhuan.xchat_android_library.net.rxnet.utils.RxNetWorkUtils import com.yizhuan.xchat_android_library.net.rxnet.utils.RxNetWorkUtils
import com.yizhuan.xchat_android_library.rxbus.RxBus import com.yizhuan.xchat_android_library.rxbus.RxBus
import com.yizhuan.xchat_android_library.utils.* import com.yizhuan.xchat_android_library.utils.*
import com.yizhuan.xchat_android_library.utils.config.BasicConfig import com.yizhuan.xchat_android_library.utils.config.BasicConfig
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
import io.reactivex.functions.BiConsumer
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
@@ -659,22 +652,22 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
for (i in micMemberInfos.indices) { for (i in micMemberInfos.indices) {
targetUids.add(micMemberInfos[i].account.toLong()) targetUids.add(micMemberInfos[i].account.toLong())
} }
val canUseNobleGiftOrNot = GiftModel.get().canUseNobleGiftOrNot(giftInfo) GiftModel.get()
if (canUseNobleGiftOrNot) { .sendRoomGift(giftInfo.giftId, targetUids, number, msg, isKnap, isWholdMic)
GiftModel.get() .compose(bindUntilEvent(FragmentEvent.DESTROY))
.sendRoomGift(giftInfo.giftId, targetUids, number, msg, isKnap, isWholdMic) .doOnError {
.compose(bindUntilEvent(FragmentEvent.DESTROY)) if (it is VipLevelNotEnoughException) {
.subscribe { throwable, _ -> dialogManager.showOkDialog("尚未达到赠送${giftInfo.giftName}所需贵族等级,所需贵族等级:${giftInfo.giftVipInfo?.vipName}")
if (throwable != null) {
callback.onFail()
} else {
callback.onSuccess()
}
} }
} else { }
dialogManager.showOkDialog("尚未达到赠送${giftInfo.giftName}所需贵族等级,所需贵族等级:${giftInfo.giftVipInfo?.vipName}") .subscribe { throwable, _ ->
callback.onFail() if (throwable != null) {
} callback.onFail()
} else {
callback.onSuccess()
}
}
if (AvRoomDataManager.get().isCpRoom) { if (AvRoomDataManager.get().isCpRoom) {
StatisticManager.Instance() StatisticManager.Instance()
.onEvent(StatisticsProtocol.Event.roomcp_gift_open_click, "礼物面板按钮") .onEvent(StatisticsProtocol.Event.roomcp_gift_open_click, "礼物面板按钮")

View File

@@ -7,7 +7,6 @@ import com.netease.nim.uikit.business.session.helper.MessageListPanelHelper;
import com.yizhuan.erban.R; import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.dialog.DialogManager; import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.ui.widget.GiftDialog; import com.yizhuan.erban.ui.widget.GiftDialog;
import com.yizhuan.erban.ui.widget.dialog.OpenNobleDialog;
import com.yizhuan.xchat_android_core.gift.GiftModel; import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
import com.yizhuan.xchat_android_core.gift.toolbox.GiftToolbox; import com.yizhuan.xchat_android_core.gift.toolbox.GiftToolbox;
@@ -18,13 +17,11 @@ import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo; import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager; import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver; import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.VipLevelNotEnoughException;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
/** /**
* Created by xiaoyu * Created by xiaoyu
@@ -58,31 +55,29 @@ public class GiftAction extends BaseAction implements GiftDialog.OnGiftDialogBtn
@Override @Override
public void onSendGiftBtnClick(GiftInfo giftInfo, ArrayList<MicMemberInfo> micMemberInfos, int number, String msg, boolean isknap, boolean isWholeMic, GiftDialog.SenGiftCallback callback) { public void onSendGiftBtnClick(GiftInfo giftInfo, ArrayList<MicMemberInfo> micMemberInfos, int number, String msg, boolean isknap, boolean isWholeMic, GiftDialog.SenGiftCallback callback) {
if (giftInfo == null) return; if (giftInfo == null) return;
boolean canUseNobleGiftOrNot = GiftModel.get().canUseNobleGiftOrNot(giftInfo); GiftModel.get().sendPersonalGift(giftInfo.getGiftId(), micMemberInfos.get(0).getAccount(), number, msg, isknap)
if (canUseNobleGiftOrNot) { .doOnError(throwable -> {
GiftModel.get().sendPersonalGift(giftInfo.getGiftId(), micMemberInfos.get(0).getAccount(), number, msg, isknap) if (callback != null) {
.doOnError(throwable -> { callback.onFail();
if (callback != null) { }
callback.onFail(); if (throwable instanceof VipLevelNotEnoughException) {
} new DialogManager(getActivity()).showOkDialog("尚未达到赠送" +
}) giftInfo.getGiftName() +
.flatMap(serviceResult -> GiftToolbox.sendGiftPrivateChatMessage(serviceResult.getData())) "所需贵族等级,所需贵族等级:" +
.subscribe(imMessage -> { giftInfo.getGiftVipInfo().getVipName());
// 手动更新送礼物的消息 }
MessageListPanelHelper.getInstance().notifyAddMessage(imMessage); })
if (callback != null) { .flatMap(serviceResult -> GiftToolbox.sendGiftPrivateChatMessage(serviceResult.getData()))
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_PRIVATECHAT_SENDGIFT, .subscribe(imMessage -> {
"私聊_送礼物"); // 手动更新送礼物的消息
callback.onSuccess(); MessageListPanelHelper.getInstance().notifyAddMessage(imMessage);
} if (callback != null) {
}); StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_PRIVATECHAT_SENDGIFT,
} else { "私聊_送礼物");
new DialogManager(getActivity()).showOkDialog("尚未达到赠送" + callback.onSuccess();
giftInfo.getGiftName() + }
"所需贵族等级,所需贵族等级:" + });
giftInfo.getGiftVipInfo().getVipName());
callback.onFail();
}
} }
@Override @Override

View File

@@ -9,6 +9,7 @@
type="com.yizhuan.erban.ui.gift.dialog.GiftInfoVm" /> type="com.yizhuan.erban.ui.gift.dialog.GiftInfoVm" />
<import type="android.view.View" /> <import type="android.view.View" />
<import type="android.text.TextUtils" />
</data> </data>
<RelativeLayout <RelativeLayout
@@ -16,7 +17,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="105dp" android:layout_height="105dp"
android:gravity="center" android:gravity="center"
tools:layout_width="75dp"> tools:layout_width="100dp">
<View <View
android:id="@+id/view_room_gift_select" android:id="@+id/view_room_gift_select"
@@ -67,6 +68,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:gravity="center"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:orientation="horizontal"> android:orientation="horizontal">
@@ -105,6 +107,17 @@
android:src="@drawable/icon_gift_effect" android:src="@drawable/icon_gift_effect"
android:visibility="@{item.isShowEffect ? View.VISIBLE : View.GONE}" android:visibility="@{item.isShowEffect ? View.VISIBLE : View.GONE}"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageView
android:id="@+id/iv_noble_tag"
nomalUrl="@{item.vipIcon}"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_marginEnd="@dimen/dp_3"
android:adjustViewBounds="true"
android:visibility="@{TextUtils.isEmpty(item.vipIcon) ? View.GONE : View.VISIBLE}"
tools:src="@drawable/icon_gift_effect" />
</LinearLayout> </LinearLayout>
<TextView <TextView
@@ -120,16 +133,6 @@
android:textSize="@dimen/sp_9" android:textSize="@dimen/sp_9"
android:visibility="@{item.isKnap ? View.VISIBLE : View.GONE}" /> android:visibility="@{item.isKnap ? View.VISIBLE : View.GONE}" />
<ImageView
android:id="@+id/iv_noble_tag"
nomalUrl="@{item.vipIcon}"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_alignParentRight="true"
android:layout_marginTop="@dimen/dp_3"
android:layout_marginEnd="@dimen/dp_3"
android:adjustViewBounds="true"
tools:src="@drawable/ic_tag_1" />
<ImageView <ImageView
android:id="@+id/iv_vip_locked" android:id="@+id/iv_vip_locked"

View File

@@ -1,15 +1,15 @@
package com.yizhuan.xchat_android_core.gift; package com.yizhuan.xchat_android_core.gift;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_ALL_MIC_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_MULTI_LUCK_GIFT;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.alibaba.fastjson.JSON; import androidx.annotation.Nullable;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
@@ -17,7 +17,6 @@ import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.base.BaseModel; import com.yizhuan.xchat_android_core.base.BaseModel;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftList;
import com.yizhuan.xchat_android_core.gift.bean.GiftListInfo; import com.yizhuan.xchat_android_core.gift.bean.GiftListInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftMultiReceiverInfo; import com.yizhuan.xchat_android_core.gift.bean.GiftMultiReceiverInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftSendType; import com.yizhuan.xchat_android_core.gift.bean.GiftSendType;
@@ -38,11 +37,8 @@ import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager; import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent; import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.pay.PayModel; import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.radish.RadishModel;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo; import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.face.IFaceCore;
import com.yizhuan.xchat_android_core.room.giftvalue.bean.GiftValueCommonUpdate; import com.yizhuan.xchat_android_core.room.giftvalue.bean.GiftValueCommonUpdate;
import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg; import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg;
import com.yizhuan.xchat_android_core.user.UserModel; import com.yizhuan.xchat_android_core.user.UserModel;
@@ -50,6 +46,7 @@ import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption; import com.yizhuan.xchat_android_core.utils.net.BalanceNotEnoughExeption;
import com.yizhuan.xchat_android_core.utils.net.RadishNotEnoughException; import com.yizhuan.xchat_android_core.utils.net.RadishNotEnoughException;
import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_core.utils.net.VipLevelNotEnoughException;
import com.yizhuan.xchat_android_core.vip.UserVipInfo; import com.yizhuan.xchat_android_core.vip.UserVipInfo;
import com.yizhuan.xchat_android_library.net.rxnet.RxNet; import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.ListUtils;
@@ -70,12 +67,6 @@ import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_ALL_MIC_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_MULTI_LUCK_GIFT;
import androidx.annotation.Nullable;
/** /**
* Created by yudi * Created by yudi
@@ -402,7 +393,10 @@ public class GiftModel extends BaseModel implements IGiftModel {
if (serviceResult.getCode() == BalanceNotEnoughExeption.code) { if (serviceResult.getCode() == BalanceNotEnoughExeption.code) {
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.RECHARGE)); IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.RECHARGE));
return Single.error(new BalanceNotEnoughExeption(serviceResult.getMessage())); return Single.error(new BalanceNotEnoughExeption(serviceResult.getMessage()));
} else if (RadishNotEnoughException.code == serviceResult.getCode()) { }
else if (serviceResult.getCode() == VipLevelNotEnoughException.code) {
return Single.error(new VipLevelNotEnoughException(serviceResult.getMessage()));
}else if (RadishNotEnoughException.code == serviceResult.getCode()) {
//萝卜不足 //萝卜不足
IMNetEaseManager.get().getChatRoomEventObservable().onNext( IMNetEaseManager.get().getChatRoomEventObservable().onNext(
new RoomEvent().setEvent(RoomEvent.RADISH_NOT_ENOUGH)); new RoomEvent().setEvent(RoomEvent.RADISH_NOT_ENOUGH));

View File

@@ -0,0 +1,12 @@
package com.yizhuan.xchat_android_core.utils.net;
/**
* Created by huangmeng1 on 2018/5/14.
*/
public class VipLevelNotEnoughException extends Exception {
public final static int code = 8535;//VIP等级不足
public VipLevelNotEnoughException(String message) {
super(message);
}
}