From c3469a7c2150f061128caff5497ee361416d5f95 Mon Sep 17 00:00:00 2001 From: oujunhui <313127320@qq.com> Date: Thu, 14 May 2020 16:36:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4mengsheng=E5=92=8Chaha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/build.gradle | 26 - .../xchat_android_core/UriProvider.java | 152 - .../xchat_android_core/find/FindModel.java | 51 - .../xchat_android_core/find/IFindModel.java | 21 - .../find/bean/FindInfo.java | 28 - .../find/bean/FindWeekStarInfo.java | 292 -- .../xchat_android_core/home/HomeModel.java | 221 -- .../xchat_android_core/home/IHomeModel.java | 48 - .../home/bean/BannerInfo.java | 75 - .../home/bean/FindInfo.java | 61 - .../home/bean/HomeInfo.java | 29 - .../home/bean/HomeItem.java | 82 - .../home/bean/HomeRoom.java | 164 -- .../home/bean/HomeRoomList.java | 38 - .../home/bean/RankingInfo.java | 158 -- .../xchat_android_core/home/bean/TabInfo.java | 119 - .../manager/IMNetEaseManager.java | 2458 ----------------- .../manager/RtcEngineManager.java | 679 ----- .../version/IVersionModel.java | 17 - .../version/VersionModel.java | 39 - .../xchat_android_core/UriProvider.java | 152 - .../xchat_android_core/find/FindModel.java | 45 - .../xchat_android_core/find/IFindModel.java | 18 - .../xchat_android_core/home/HomeModel.java | 208 -- .../xchat_android_core/home/IHomeModel.java | 48 - .../home/bean/BannerInfo.java | 75 - .../home/bean/FindInfo.java | 61 - .../home/bean/HomeInfo.java | 29 - .../home/bean/HomeItem.java | 82 - .../home/bean/HomeRoom.java | 165 -- .../home/bean/HomeRoomList.java | 38 - .../home/bean/RankingInfo.java | 158 -- .../xchat_android_core/home/bean/TabInfo.java | 118 - .../version/IVersionModel.java | 17 - .../version/VersionModel.java | 48 - 35 files changed, 6020 deletions(-) delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/UriProvider.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/FindModel.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/IFindModel.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindWeekStarInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/HomeModel.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/IHomeModel.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/IVersionModel.java delete mode 100644 core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/VersionModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/UriProvider.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/FindModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/IFindModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/HomeModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/IHomeModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/IVersionModel.java delete mode 100644 core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/VersionModel.java diff --git a/core/build.gradle b/core/build.gradle index 52a7f4493..b251ddfec 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -50,38 +50,12 @@ android { ] jniLibs.srcDirs = ['libs', 'umeng-app-libs/jniLibs', 'shumei-tianwang-libs/jniLibs'] } - - mengsheng { - java.srcDirs = [ - 'src/main/java', - 'src/diff_src_mengsheng/java', - 'src/model_smscode/java' - ] - jniLibs.srcDirs = ['libs'] - } - haha { - java.srcDirs = [ - 'src/main/java', - 'src/diff_src_haha/java', - 'src/model_smscode/java', - 'src/model_pay/java' - ] - jniLibs.srcDirs = ['libs'] - } - } productFlavors{ accompany { dimension 'default' } - mengsheng{ - dimension 'default' - } - haha{ - dimension 'default' - } - } buildToolsVersion = '28.0.3' diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/UriProvider.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/UriProvider.java deleted file mode 100644 index 89a274ae9..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/UriProvider.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.yizhuan.xchat_android_core; - -import android.text.TextUtils; - -import com.yizhuan.xchat_android_library.utils.config.BasicConfig; -import com.yizhuan.xchat_android_library.utils.pref.CommonPref; - -/** - * 请求接口接口地址 - */ -public class UriProvider { - - public static void init(Env.UriSetting uriSetting, String url) { - if (uriSetting == Env.UriSetting.Product) { - //生产环境地址 - initProductUri(url); - } else if (uriSetting == Env.UriSetting.Test) { - //测试环境地址 - initTestUri(url); - } - } - - private static String DEBUG_URL; - - public static void initDevUri(String url) { - DEBUG_URL = url; - JAVA_WEB_URL = url; - IM_SERVER_URL = url; - } - - private static void initProductUri(String url) { - JAVA_WEB_URL = url; - IM_SERVER_URL = url; - } - - - private static void initTestUri(String url) { - int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("enviroment"); - if (enviroment == 0) { - initProductUri(url);//其他使用DEV的配置,就神曲这个跟新一下 - } else { - if (!TextUtils.isEmpty(DEBUG_URL)) - initDevUri(DEBUG_URL); - else - initDevUri(url); - } - } - - /** - * 默认以下生产环境地址 - */ - public static String JAVA_WEB_URL = "http://www.daxiaomao.com"; - public static String IM_SERVER_URL = "https://www.daxiaomao.com"; - - public static String getGroupResourceBaseUri() { - return JAVA_WEB_URL.concat("/app/service/resource/list"); - } - - - /** - * - * @return - */ - public static String getLotteryActivityPage() { - return IM_SERVER_URL.concat("/activity/double12/index.html"); - } - - /** - * 贵族订单页面 - * - * @return - - */ - public static String getNobleOrderPage() { - return IM_SERVER_URL.concat("/modules/noble/order.html"); - } - - /** - * 获取房间背景(有动效) - * - * @return - - */ - public static String getRoomBg() { - return IM_SERVER_URL.concat("/modules/noble/roomBgList.html"); - } - - /** - * 获取贵族推荐页面 - * - * @return - - */ - public static String getNobleIntroducePage() { - return IM_SERVER_URL.concat("/modules/noble/intro.html"); - } - - /** - * 获取贵族个人管理页面 - * - * @return - - */ - public static String getNobleHomePage() { - return IM_SERVER_URL.concat("/modules/noble/homepage.html"); - } - - /** 贵族介绍页 */ - public static String getNobleIntro() { - return "modules/noble/intro.html"; - } - - /** 等级界面 */ - public static String getUserLevelUrl() { - return "modules/level/levelExper.html"; - } - /** 等级界面 */ - public static String getUserCUrl() { - return "modules/level/levelCharm.html"; - } - - - - - /** - * 耳伴头条 http://beta.erbanyy.com/modules/headNews/index.html - * @return - */ - public static String getErbanTopMessageUrl() { - return JAVA_WEB_URL.concat("/modules/headNews/index.html"); - } - - /** - * 创建家族 - * @return - */ - public static String getCreateFamilyUrl() { - return JAVA_WEB_URL.concat("/modules/family/create.html"); - } - - /** - * 家族指南 - * @return - */ - public static String getFamilyInstructionUrl() { - return JAVA_WEB_URL.concat("/modules/family/handbook.html"); - } - - /** - * 家族币获取帮助 - * @return - */ - public static String getFamilyCurrencyHelpUrl() { - return JAVA_WEB_URL.concat("/modules/family/faq.html"); - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/FindModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/FindModel.java deleted file mode 100644 index 2df953006..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/FindModel.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.yizhuan.xchat_android_core.find; - -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.find.bean.FindWeekStarInfo; -import com.yizhuan.xchat_android_core.find.bean.FindInfo; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import java.util.List; - -import io.reactivex.Single; -import retrofit2.http.GET; - -/** - * create by lvzebiao on 2018/9/13 - */ -public class FindModel extends BaseModel implements IFindModel { - - private final Api api = RxNet.create(Api.class); - - private static final class Helper { - public static final FindModel INSTANCE = new FindModel(); - } - - public static FindModel get() { - return Helper.INSTANCE; - } - - @Override - public Single>> getFindInfo() { - return api.getFindInfo() - .compose(RxHelper.handleSchedulers()); - } - - @Override - public Single> getFindWeekStar() { - return api.getFindWeekStar() - .compose(RxHelper.handleBeanData()) - .compose(RxHelper.handleSchedulers()); - } - - private interface Api{ - @GET("week/star/previous") - Single>> getFindWeekStar(); - - @GET("discovery/items") - Single>> getFindInfo(); - } - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/IFindModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/IFindModel.java deleted file mode 100644 index 68d59be7e..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/IFindModel.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.yizhuan.xchat_android_core.find; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.find.bean.FindInfo; -import com.yizhuan.xchat_android_core.find.bean.FindWeekStarInfo; - -import java.util.List; - -import io.reactivex.Single; - -/** - * create by lvzebiao on 2018/9/13 - */ -public interface IFindModel extends IModel { - - Single>> getFindInfo(); - - Single> getFindWeekStar(); - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindInfo.java deleted file mode 100644 index 7729dde8c..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindInfo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.yizhuan.xchat_android_core.find.bean; - -import lombok.Data; - -@Data -public class FindInfo { - /** - * id : 3 - * name : 邀请好友来玩哈哈 - * routerType : 14 - * seqNo : 3 - * status : 1 - * createTime : 1535528000000 - * updateTime : 1535528003000 - */ - - private int id; - private String name; - private String subheading; - private String icon; - private String routerValue; - private int routerType; - private int seqNo; - private int status; - private long createTime; - private long updateTime; - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindWeekStarInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindWeekStarInfo.java deleted file mode 100644 index 9c035f614..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/find/bean/FindWeekStarInfo.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.yizhuan.xchat_android_core.find.bean; - -import java.util.List; - -public class FindWeekStarInfo { - - /** - * stars : [{"erbanNo":6666,"nick":"虎爷套现85卖靓号","avatar":"https://image.zhongjialx.com/FroBcMNb5ya6FzRenQYJd-SN9m1f?imageslim","totalCount":506418,"seqNo":0,"uid":90004445}] - * gift : {"giftId":1149,"giftName":"爱情锁","goldPrice":66,"seqNo":10,"nobleId":0,"nobleName":"","isNobleGift":false,"giftType":2,"giftStatus":1,"picUrl":"https://image.zhongjialx.com/Fhf25vW7zxeq96Tp510ffEGgDwyc?imageslim","hasVggPic":false,"vggUrl":"","isLatest":true,"isTimeLimit":false,"hasEffect":false,"isWholeServer":false,"notifyStaySecond":0,"isSendMsg":false,"isSkipRoom":false} - */ - - private GiftBean gift; - private List stars; - - public GiftBean getGift() { - return gift; - } - - public void setGift(GiftBean gift) { - this.gift = gift; - } - - public List getStars() { - return stars; - } - - public void setStars(List stars) { - this.stars = stars; - } - - public static class GiftBean { - /** - * giftId : 1149 - * giftName : 爱情锁 - * goldPrice : 66 - * seqNo : 10 - * nobleId : 0 - * nobleName : - * isNobleGift : false - * giftType : 2 - * giftStatus : 1 - * picUrl : https://image.zhongjialx.com/Fhf25vW7zxeq96Tp510ffEGgDwyc?imageslim - * hasVggPic : false - * vggUrl : - * isLatest : true - * isTimeLimit : false - * hasEffect : false - * isWholeServer : false - * notifyStaySecond : 0 - * isSendMsg : false - * isSkipRoom : false - */ - - private int giftId; - private String giftName; - private int goldPrice; - private int seqNo; - private int nobleId; - private String nobleName; - private boolean isNobleGift; - private int giftType; - private int giftStatus; - private String picUrl; - private boolean hasVggPic; - private String vggUrl; - private boolean isLatest; - private boolean isTimeLimit; - private boolean hasEffect; - private boolean isWholeServer; - private int notifyStaySecond; - private boolean isSendMsg; - private boolean isSkipRoom; - - public int getGiftId() { - return giftId; - } - - public void setGiftId(int giftId) { - this.giftId = giftId; - } - - public String getGiftName() { - return giftName; - } - - public void setGiftName(String giftName) { - this.giftName = giftName; - } - - public int getGoldPrice() { - return goldPrice; - } - - public void setGoldPrice(int goldPrice) { - this.goldPrice = goldPrice; - } - - public int getSeqNo() { - return seqNo; - } - - public void setSeqNo(int seqNo) { - this.seqNo = seqNo; - } - - public int getNobleId() { - return nobleId; - } - - public void setNobleId(int nobleId) { - this.nobleId = nobleId; - } - - public String getNobleName() { - return nobleName; - } - - public void setNobleName(String nobleName) { - this.nobleName = nobleName; - } - - public boolean isIsNobleGift() { - return isNobleGift; - } - - public void setIsNobleGift(boolean isNobleGift) { - this.isNobleGift = isNobleGift; - } - - public int getGiftType() { - return giftType; - } - - public void setGiftType(int giftType) { - this.giftType = giftType; - } - - public int getGiftStatus() { - return giftStatus; - } - - public void setGiftStatus(int giftStatus) { - this.giftStatus = giftStatus; - } - - public String getPicUrl() { - return picUrl; - } - - public void setPicUrl(String picUrl) { - this.picUrl = picUrl; - } - - public boolean isHasVggPic() { - return hasVggPic; - } - - public void setHasVggPic(boolean hasVggPic) { - this.hasVggPic = hasVggPic; - } - - public String getVggUrl() { - return vggUrl; - } - - public void setVggUrl(String vggUrl) { - this.vggUrl = vggUrl; - } - - public boolean isIsLatest() { - return isLatest; - } - - public void setIsLatest(boolean isLatest) { - this.isLatest = isLatest; - } - - public boolean isIsTimeLimit() { - return isTimeLimit; - } - - public void setIsTimeLimit(boolean isTimeLimit) { - this.isTimeLimit = isTimeLimit; - } - - public boolean isHasEffect() { - return hasEffect; - } - - public void setHasEffect(boolean hasEffect) { - this.hasEffect = hasEffect; - } - - public boolean isIsWholeServer() { - return isWholeServer; - } - - public void setIsWholeServer(boolean isWholeServer) { - this.isWholeServer = isWholeServer; - } - - public int getNotifyStaySecond() { - return notifyStaySecond; - } - - public void setNotifyStaySecond(int notifyStaySecond) { - this.notifyStaySecond = notifyStaySecond; - } - - public boolean isIsSendMsg() { - return isSendMsg; - } - - public void setIsSendMsg(boolean isSendMsg) { - this.isSendMsg = isSendMsg; - } - - public boolean isIsSkipRoom() { - return isSkipRoom; - } - - public void setIsSkipRoom(boolean isSkipRoom) { - this.isSkipRoom = isSkipRoom; - } - } - - public static class StarsBean { - /** - * erbanNo : 6666 - * nick : 虎爷套现85卖靓号 - * avatar : https://image.zhongjialx.com/FroBcMNb5ya6FzRenQYJd-SN9m1f?imageslim - * totalCount : 506418 - * seqNo : 0 - * uid : 90004445 - */ - - private int erbanNo; - private String nick; - private String avatar; - private int totalCount; - private int seqNo; - private int uid; - - public int getErbanNo() { - return erbanNo; - } - - public void setErbanNo(int erbanNo) { - this.erbanNo = erbanNo; - } - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public String getAvatar() { - return avatar; - } - - public void setAvatar(String avatar) { - this.avatar = avatar; - } - - public int getTotalCount() { - return totalCount; - } - - public void setTotalCount(int totalCount) { - this.totalCount = totalCount; - } - - public int getSeqNo() { - return seqNo; - } - - public void setSeqNo(int seqNo) { - this.seqNo = seqNo; - } - - public int getUid() { - return uid; - } - - public void setUid(int uid) { - this.uid = uid; - } - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/HomeModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/HomeModel.java deleted file mode 100644 index 6634e29e3..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/HomeModel.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.yizhuan.xchat_android_core.home; - -import com.orhanobut.logger.Logger; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.home.bean.HomeInfo; -import com.yizhuan.xchat_android_core.home.bean.HomeRoom; -import com.yizhuan.xchat_android_core.home.bean.TabInfo; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import java.util.ArrayList; -import java.util.List; - -import io.reactivex.Single; -import io.reactivex.SingleSource; -import io.reactivex.functions.Consumer; -import io.reactivex.functions.Function; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Query; - -public class HomeModel extends BaseModel implements IHomeModel { - private volatile static IHomeModel instance; - private Api api; - - private List mTabInfoList; - - public static IHomeModel get() { - if (instance == null){ - synchronized (HomeModel.class){ - if (instance == null){ - instance = new HomeModel(); - } - } - } - return instance; - } - - private HomeModel(){ - api = RxNet.create(Api.class); - } - - /** - * 获取缓存的房间分类数据 - * @return - */ - @Override - public List getmTabInfoList() { - return mTabInfoList; - } - - - /** - * 获取首页Tab失败 - * @return - */ - @Override - public Single> getMainTabData() { - return api.getMainTabList(AuthModel.get().getCurrentUid()) - .compose(RxHelper.handleSchedulers()) - .compose(RxHelper.handleBeanData()) - .doOnSuccess(new Consumer>() { - @Override - public void accept(List tabInfos) throws Exception { - mTabInfoList = tabInfos; - } - }) - .doOnError(new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - Logger.e("获取首页Tab失败......"); - } - }); - - } - - /** - * 获取首页数据 - * @param page - * @param pageSize - * @return - */ - @Override - public Single getHomeData(final int page, int pageSize) { - return api.getMainHotData( - String.valueOf(AuthModel.get().getCurrentUid()), - String.valueOf(page), - String.valueOf(pageSize) - ) - .flatMap(new Function, SingleSource>() { - @Override - public SingleSource apply(ServiceResult result) throws Exception { - if (result == null || !result.isSuccess()) { - return Single.error(new Throwable(RxHelper.getValidMessage(result))); - } - HomeInfo homeInfo = result.getData(); - //如果为null,也需要返回成功,否则加载更多的逻辑就无法执行 - if (homeInfo == null) { - homeInfo = new HomeInfo(); - } - return Single.just(homeInfo); - } - }) - .compose(RxHelper.handleSchedulers()); - - } - - /** - * 反馈 - * @param feedbackDesc - * @param contact - * @return - */ - @Override - public Single commitFeedback(String feedbackDesc, String contact) { - return api.commitFeedback( - String.valueOf(AuthModel.get().getCurrentUid()), - feedbackDesc, - contact, - AuthModel.get().getTicket() - ) - .flatMap(new Function>() { - @Override - public SingleSource apply(ServiceResult serviceResult) throws Exception { - if (serviceResult.isSuccess()) { - return Single.just("反馈成功"); - } else { - return Single.error(new Throwable(serviceResult.getMessage())); - } - } - }) - .compose(RxHelper.handleSchedulers()); - - } - - /** - * 根据分类 获取房间列表 - * @param tagId - * @param pageNum - * @param pageSize - */ - @Override - public Single> getMainDataByTab(final int tagId, final int pageNum, int pageSize) { - return api.getMainDataByTab( - String.valueOf(tagId), - String.valueOf(pageNum), - String.valueOf(pageSize) - ) - .flatMap(new Function>, SingleSource>>() { - @Override - public SingleSource> apply(ServiceResult> listServiceResult) throws Exception { - if (listServiceResult.isSuccess()){ - if (listServiceResult.getData() == null){ - return Single.just(new ArrayList()); - } - return Single.just(listServiceResult.getData()); - }else { - return Single.error(new Throwable(listServiceResult.getMessage())); - } - } - }) - .compose(RxHelper.handleSchedulers()); - - } - - - private interface Api{ - /** - * 获取首页热门数据 - * - * @param uid - * @param pageNum - * @param pageSize - * @return - */ - @GET("/home/v2/hotindex") - Single> getMainHotData(@Query("uid") String uid, - @Query("pageNum") String pageNum, - @Query("pageSize") String pageSize); - - /** - * 提交反馈 - * - * @param uid - * @param feedbackDesc - * @param contact - * @param ticket - * @return - */ - @POST("/feedback") - Single commitFeedback(@Query("uid") String uid, - @Query("feedbackDesc") String feedbackDesc, - @Query("contact") String contact, - @Query("ticket") String ticket); - - - /** - * 获取首页tab数据 - * - * @return - */ - @GET("/room/tag/top") - Single>> getMainTabList(@Query("uid") long uid); - - /** - * 获取 - * @param tagId - * @param pageNum - * @param pageSize - * @return - */ - @POST("home/v2/tagindex") - Single>> getMainDataByTab(@Query("tagId") String tagId, - @Query("pageNum") String pageNum, - @Query("pageSize") String pageSize); - - } - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/IHomeModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/IHomeModel.java deleted file mode 100644 index cc35a748b..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/IHomeModel.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.yizhuan.xchat_android_core.home; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.home.bean.HomeInfo; -import com.yizhuan.xchat_android_core.home.bean.HomeRoom; -import com.yizhuan.xchat_android_core.home.bean.TabInfo; - -import java.util.List; - -import io.reactivex.Single; - -public interface IHomeModel extends IModel { - /** - * 获取缓存的房间分类数据 - * @return - */ - List getmTabInfoList(); - - /** - * 获取首页Tab失败 - * @return - */ - Single> getMainTabData(); - - /** - * 获取首页数据 - * @param page - * @param pageSize - * @return - */ - Single getHomeData(int page, int pageSize); - - /** - * 反馈 - * @param feedbackDesc - * @param contact - * @return - */ - Single commitFeedback(String feedbackDesc, String contact); - - /** - * 根据分类 获取房间列表 - * @param tagId - * @param pageNum - * @param pageSize - */ - Single> getMainDataByTab(int tagId, int pageNum, int pageSize); -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java deleted file mode 100644 index abfe5cd6d..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import lombok.Data; - -/** - * Created by Administrator on 2017/8/7. - */ -@Data -public class BannerInfo implements Parcelable { - /* - bannerId:1 //id - bannerName: xx//横幅广告名称 - bannerPic:xx //横幅图片 - skipType:xx // 1跳app页面,2跳聊天室,3跳h5页面 - displayType //1顶部banner 2底部banner - skipUri:xx //跳转uri - */ - private int bannerId; - private String bannerName; - private String bannerPic; - private int skipType; - private int displayType; - private String skipUri; - - @Override - public String toString() { - return "BannerInfo{" + - "bannerId=" + bannerId + - ", bannerName='" + bannerName + '\'' + - ", bannerPic='" + bannerPic + '\'' + - ", skipType=" + skipType + - ", skipUri='" + skipUri + '\'' + - '}'; - } - - protected BannerInfo(Parcel in) { - bannerId = in.readInt(); - bannerName = in.readString(); - bannerPic = in.readString(); - skipType = in.readInt(); - skipUri = in.readString(); - displayType = in.readInt(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(bannerId); - dest.writeString(bannerName); - dest.writeString(bannerPic); - dest.writeInt(skipType); - dest.writeString(skipUri); - dest.writeInt(displayType); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public BannerInfo createFromParcel(Parcel in) { - return new BannerInfo(in); - } - - @Override - public BannerInfo[] newArray(int size) { - return new BannerInfo[size]; - } - }; - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java deleted file mode 100644 index bb04f0d59..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -/** - * Created by huangmeng1 on 2018/1/31. - */ - -public class FindInfo { - /** - * advName : 测试啊 - * advIcon : http://img.letusmix.com/FvbRJRJgufTpntjatyfL8xx1yBQ5?imageslim - * skipType : 3 - * skipUri : www.baidu.com - */ - - private String advName; - private String advIcon; - private int skipType; - private String skipUri; - - @Override - public String toString() { - return "FindInfo{" + - "advName='" + advName + '\'' + - ", advIcon='" + advIcon + '\'' + - ", skipType=" + skipType + - ", skipUri='" + skipUri + '\'' + - '}'; - } - - public String getAdvName() { - return advName; - } - - public void setAdvName(String advName) { - this.advName = advName; - } - - public String getAdvIcon() { - return advIcon; - } - - public void setAdvIcon(String advIcon) { - this.advIcon = advIcon; - } - - public int getSkipType() { - return skipType; - } - - public void setSkipType(int skipType) { - this.skipType = skipType; - } - - public String getSkipUri() { - return skipUri; - } - - public void setSkipUri(String skipUri) { - this.skipUri = skipUri; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java deleted file mode 100644 index 4fcda7b60..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import java.util.List; - -/** - *

首页数据

- * - * @author Administrator - * @date 2017/11/22 - */ -public class HomeInfo { - public List banners; - /** 排行数据 */ - public RankingInfo rankHome; - /** 热门推荐 */ - public List hotRooms; - /** 房间推荐 */ - public List listRoom; - - @Override - public String toString() { - return "HomeInfo{" + - "banners=" + banners + - ", rankHome=" + rankHome + - ", hotRooms=" + hotRooms + - ", listRoom=" + listRoom + - '}'; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java deleted file mode 100644 index ce3ce390e..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - - -import android.os.Parcel; -import android.os.Parcelable; - -import com.chad.library.adapter.base.entity.MultiItemEntity; - -import java.util.List; - -/** - *

首页热门实体u

- * - * @author Administrator - * @date 2017/11/16 - */ -public class HomeItem implements MultiItemEntity, Parcelable { - - public static final int BANNER = 1; - public static final int RANKING = 2; - public static final int RECOMMEND = 3; - public static final int NORMAL = 4; - - - private int itemType; - - //正常数据 - public List recomList; - public List homeItemRoomList; - public List bannerInfoList; - public RankingInfo mRankingInfo; - - - public HomeItem(int itemType) { - this.itemType = itemType; - } - - - public HomeItem(int itemType, RankingInfo rankingInfo) { - this.itemType = itemType; - mRankingInfo = rankingInfo; - } - - protected HomeItem(Parcel in) { - itemType = in.readInt(); - recomList = in.createTypedArrayList(HomeRoom.CREATOR); - homeItemRoomList = in.createTypedArrayList(HomeRoom.CREATOR); - bannerInfoList = in.createTypedArrayList(BannerInfo.CREATOR); - mRankingInfo = in.readParcelable(RankingInfo.class.getClassLoader()); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(itemType); - dest.writeTypedList(recomList); - dest.writeTypedList(homeItemRoomList); - dest.writeTypedList(bannerInfoList); - dest.writeParcelable(mRankingInfo, flags); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public HomeItem createFromParcel(Parcel in) { - return new HomeItem(in); - } - - @Override - public HomeItem[] newArray(int size) { - return new HomeItem[size]; - } - }; - - @Override - public int getItemType() { - return itemType; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java deleted file mode 100644 index 13adeec69..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.chad.library.adapter.base.entity.MultiItemEntity; -import com.yizhuan.xchat_android_core.level.UserLevelVo; -import com.yizhuan.xchat_android_core.noble.NobleInfo; -import com.yizhuan.xchat_android_core.room.bean.RoomInfo; -import com.yizhuan.xchat_android_library.utils.ListUtils; - -import java.util.ArrayList; - -/** - * @author zhouxiangfeng - * @date 2017/5/17 - */ - -public class HomeRoom extends RoomInfo implements Parcelable, MultiItemEntity { - - public static final int BANNER = 1; - public static final int NORMAL = 2; - - //性别 1:男 2:女 0 :未知 - private int gender; - - private String nick; - //1普通账号,2官方账号,3机器账号 - private int defUser; - - private long erbanNo; - - //角标相关的 - public String badge; - - /** 是否是靓号,1:靓号 */ - public boolean hasPrettyErbanNo; - public NobleInfo nobleUsers; - public UserLevelVo userLevelVo; - public boolean newUser; - private ArrayList bannerInfos; - - public HomeRoom() { - } - - protected HomeRoom(Parcel in) { - super(in); - gender = in.readInt(); - nick = in.readString(); - defUser = in.readInt(); - erbanNo = in.readLong(); - badge = in.readString(); - hasPrettyErbanNo = in.readByte() != 0; - bannerInfos = in.createTypedArrayList(BannerInfo.CREATOR); - newUser = in.readByte() != 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeInt(gender); - dest.writeString(nick); - dest.writeInt(defUser); - dest.writeLong(erbanNo); - dest.writeString(badge); - dest.writeByte((byte) (hasPrettyErbanNo ? 1 : 0)); - dest.writeTypedList(bannerInfos); - dest.writeByte((byte) (newUser ? 1 : 0)); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public HomeRoom createFromParcel(Parcel in) { - return new HomeRoom(in); - } - - @Override - public HomeRoom[] newArray(int size) { - return new HomeRoom[size]; - } - }; - - public int getGender() { - return gender; - } - - public void setGender(int gender) { - this.gender = gender; - } - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getDefUser() { - return defUser; - } - - public void setDefUser(int defUser) { - this.defUser = defUser; - } - - public long getErbanNo() { - return erbanNo; - } - - public void setErbanNo(long erbanNo) { - this.erbanNo = erbanNo; - } - - public String getBadge() { - return badge; - } - - public void setBadge(String badge) { - this.badge = badge; - } - - public boolean isHasPrettyErbanNo() { - return hasPrettyErbanNo; - } - - public void setHasPrettyErbanNo(boolean hasPrettyErbanNo) { - this.hasPrettyErbanNo = hasPrettyErbanNo; - } - - public NobleInfo getNobleUsers() { - return nobleUsers; - } - - public void setNobleUsers(NobleInfo nobleUsers) { - this.nobleUsers = nobleUsers; - } - - public UserLevelVo getUserLevelVo() { - return userLevelVo; - } - - public void setUserLevelVo(UserLevelVo userLevelVo) { - this.userLevelVo = userLevelVo; - } - - public ArrayList getBannerInfos() { - return bannerInfos; - } - - public void setBannerInfos(ArrayList bannerInfos) { - this.bannerInfos = bannerInfos; - } - - @Override - public int getItemType() { - return ListUtils.isListEmpty(bannerInfos)?NORMAL:BANNER; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java deleted file mode 100644 index 2dfc71784..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import java.io.Serializable; -import java.util.List; - -/** - * Created by chenran on 2017/10/4. - */ - -public class HomeRoomList implements Serializable{ - private List recomRooms; - private List gameRooms; - private List chatRooms; - - public List getRecomRooms() { - return recomRooms; - } - - public void setRecomRooms(List recomRooms) { - this.recomRooms = recomRooms; - } - - public List getGameRooms() { - return gameRooms; - } - - public void setGameRooms(List gameRooms) { - this.gameRooms = gameRooms; - } - - public List getChatRooms() { - return chatRooms; - } - - public void setChatRooms(List chatRooms) { - this.chatRooms = chatRooms; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java deleted file mode 100644 index 6362e3493..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import java.util.List; - -/** - *

首页排行信息

- * Created by Administrator on 2017/11/8. - */ -public class RankingInfo implements Parcelable { - - public List starList; - public List nobleList; - public List roomList; - - @Override - public String toString() { - return "RankingInfo{" + - "starList=" + starList + - ", nobleList=" + nobleList + - ", roomList=" + roomList + - '}'; - } - - public static class Ranking implements Parcelable { - @Override - public String toString() { - return "Ranking{" + - "erbanNo=" + erbanNo + - ", avatar='" + avatar + '\'' + - ", nick='" + nick + '\'' + - ", gender=" + gender + - ", totalNum=" + totalNum + - '}'; - } - - /** - * erbanNo : 850379 - * avatar : https://nos.netease.com/nim/NDI3OTA4NQ==/bmltYV83Nzg4MzQyNDJfMTUwNzIwMzM4NTc2N184YmJlZmQ4ZS01YzdiLTRmMWMtYmFhOC0xMWRlNzg3MzRlMzk= - * nick : 阿拉善 - * gender : 1 - * totalNum : 9988923 - */ - - private int erbanNo; - private String avatar; - private String nick; - private int gender; - private int totalNum; - - protected Ranking(Parcel in) { - erbanNo = in.readInt(); - avatar = in.readString(); - nick = in.readString(); - gender = in.readInt(); - totalNum = in.readInt(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(erbanNo); - dest.writeString(avatar); - dest.writeString(nick); - dest.writeInt(gender); - dest.writeInt(totalNum); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public Ranking createFromParcel(Parcel in) { - return new Ranking(in); - } - - @Override - public Ranking[] newArray(int size) { - return new Ranking[size]; - } - }; - - public int getErbanNo() { - return erbanNo; - } - - public void setErbanNo(int erbanNo) { - this.erbanNo = erbanNo; - } - - public String getAvatar() { - return avatar; - } - - public void setAvatar(String avatar) { - this.avatar = avatar; - } - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getGender() { - return gender; - } - - public void setGender(int gender) { - this.gender = gender; - } - - public int getTotalNum() { - return totalNum; - } - - public void setTotalNum(int totalNum) { - this.totalNum = totalNum; - } - } - - - protected RankingInfo(Parcel in) { - starList = in.createTypedArrayList(Ranking.CREATOR); - nobleList = in.createTypedArrayList(Ranking.CREATOR); - roomList = in.createTypedArrayList(Ranking.CREATOR); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeTypedList(starList); - dest.writeTypedList(nobleList); - dest.writeTypedList(roomList); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public RankingInfo createFromParcel(Parcel in) { - return new RankingInfo(in); - } - - @Override - public RankingInfo[] newArray(int size) { - return new RankingInfo[size]; - } - }; -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java deleted file mode 100644 index eb24c831f..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import lombok.Data; - -/** - *

tab 标签数据

- * - * @author Administrator - * @date 2017/11/21 - */ -@Data -public class TabInfo implements Parcelable, Serializable{ - - /** - * id : 8 - * name : 聊天 - * pict : https://image.zhongjialx.com/tag%E8%81%8A%E5%A4%A9.png - * seq : 3 - * type : 1 - * status : true - * istop : true - * createTime : 1511155717000 - */ - - private int id; - private String name; - private String pict; - private String icon; - private int seq; - private int type; - private boolean status; - private boolean istop; - private long createTime; - - public TabInfo(int id, String name) { - this.id = id; - this.name = name; - } - - public TabInfo(int id, String name,String icon) { - this(id, name); - this.icon=icon; - } - - - protected TabInfo(Parcel in) { - id = in.readInt(); - name = in.readString(); - pict = in.readString(); - seq = in.readInt(); - type = in.readInt(); - status = in.readByte() != 0; - istop = in.readByte() != 0; - createTime = in.readLong(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(id); - dest.writeString(name); - dest.writeString(pict); - dest.writeInt(seq); - dest.writeInt(type); - dest.writeByte((byte) (status ? 1 : 0)); - dest.writeByte((byte) (istop ? 1 : 0)); - dest.writeLong(createTime); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public TabInfo createFromParcel(Parcel in) { - return new TabInfo(in); - } - - @Override - public TabInfo[] newArray(int size) { - return new TabInfo[size]; - } - }; - - - - public static List getTabDefaultList() { - List tabInfoList = new ArrayList<>(); - tabInfoList.add(new TabInfo(1, "新秀","https://img.letusmix.com/xinxiu_tag_icon.png")); - tabInfoList.add(new TabInfo(2, "遇见","https://img.letusmix.com/xiehou_tag_icon.png")); - tabInfoList.add(new TabInfo(3, "交友","https://img.letusmix.com/jiaoyou_tag_icon.png")); - tabInfoList.add(new TabInfo(4, "娱乐","https://img.letusmix.com/yule_tag_icon.png")); - tabInfoList.add(new TabInfo(5, "音乐","https://img.letusmix.com/yinyue_tag_icon.png")); - tabInfoList.add(new TabInfo(6, "电台","https://img.letusmix.com/diantai_tag_icon.png")); - return tabInfoList; - } - - - public static List getTabCheckVersion() { - List tabInfoList = new ArrayList<>(); - tabInfoList.add(new TabInfo(16, "邂逅","https://img.letusmix.com/xiehou_tag_icon.png")); - return tabInfoList; - } - - @Override - public String toString() { - return "TabInfo{" + - "name='" + name + '\'' + - '}'; - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java deleted file mode 100644 index b97f7ab47..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ /dev/null @@ -1,2458 +0,0 @@ -package com.yizhuan.xchat_android_core.manager; - -import android.os.Handler; -import android.os.Message; -import androidx.annotation.NonNull; -import android.text.TextUtils; -import android.util.Log; -import android.util.SparseArray; - -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.netease.nim.uikit.business.session.helper.MessageListPanelHelper; -import com.netease.nim.uikit.common.util.log.LogUtil; -import com.netease.nimlib.sdk.NIMChatRoomSDK; -import com.netease.nimlib.sdk.NIMClient; -import com.netease.nimlib.sdk.Observer; -import com.netease.nimlib.sdk.RequestCallback; -import com.netease.nimlib.sdk.ResponseCode; -import com.netease.nimlib.sdk.StatusCode; -import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder; -import com.netease.nimlib.sdk.chatroom.ChatRoomService; -import com.netease.nimlib.sdk.chatroom.constant.MemberType; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMemberUpdate; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessageExtension; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomNotificationAttachment; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomQueueChangeAttachment; -import com.netease.nimlib.sdk.chatroom.model.ChatRoomStatusChangeData; -import com.netease.nimlib.sdk.chatroom.model.MemberOption; -import com.netease.nimlib.sdk.msg.MessageBuilder; -import com.netease.nimlib.sdk.msg.MsgService; -import com.netease.nimlib.sdk.msg.MsgServiceObserve; -import com.netease.nimlib.sdk.msg.attachment.MsgAttachment; -import com.netease.nimlib.sdk.msg.attachment.NotificationAttachment; -import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; -import com.netease.nimlib.sdk.msg.constant.NotificationType; -import com.netease.nimlib.sdk.msg.model.IMMessage; -import com.netease.nimlib.sdk.util.Entry; -import com.netease.nimlib.sdk.util.api.RequestResult; -import com.orhanobut.logger.Logger; -import com.yizhuan.xchat_android_constants.XChatConstants; -import com.yizhuan.xchat_android_core.Constants; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.bean.RoomMicInfo; -import com.yizhuan.xchat_android_core.bean.RoomQueueInfo; -import com.yizhuan.xchat_android_core.bean.attachmsg.RoomQueueMsgAttachment; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.decoration.car.bean.CarInfo; -import com.yizhuan.xchat_android_core.decoration.headwear.bean.HeadWearInfo; -import com.yizhuan.xchat_android_core.exception.ErrorThrowable; -import com.yizhuan.xchat_android_core.family.bean.FamilyInfo; -import com.yizhuan.xchat_android_core.family.event.FamilyMineEvent; -import com.yizhuan.xchat_android_core.gift.GiftModel; -import com.yizhuan.xchat_android_core.gift.bean.GiftInfo; -import com.yizhuan.xchat_android_core.im.custom.bean.CarAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.GiftAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.InAppSharingFamilyAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.InAppSharingRoomAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.InAppSharingTeamAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.LuckyMoneyAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.LuckyMoneyTipsAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MagicAllMicAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MagicAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MonsterAttackAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MonsterAwardAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MonsterHuntingResultAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MonsterStatusAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.MultiGiftAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.NobleAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.RoomInfoAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.RoomTipAttachment; -import com.yizhuan.xchat_android_core.im.custom.bean.RouterType; -import com.yizhuan.xchat_android_core.im.custom.bean.SysMsgAttachment; -import com.yizhuan.xchat_android_core.level.UserLevelVo; -import com.yizhuan.xchat_android_core.luckymoney.LuckyMoneyInfo; -import com.yizhuan.xchat_android_core.magic.MagicModel; -import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterEvent; -import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterInfo; -import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterProtocol; -import com.yizhuan.xchat_android_core.msg.sys.ErbanSysMsgInfo; -import com.yizhuan.xchat_android_core.msg.sys.ErbanSysMsgParamKey; -import com.yizhuan.xchat_android_core.noble.NobleInfo; -import com.yizhuan.xchat_android_core.noble.NobleResourceType; -import com.yizhuan.xchat_android_core.noble.NobleUtil; -import com.yizhuan.xchat_android_core.room.auction.bean.AuctionInfo; -import com.yizhuan.xchat_android_core.room.bean.RoomInfo; -import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel; -import com.yizhuan.xchat_android_core.room.model.AvRoomModel; -import com.yizhuan.xchat_android_core.share.bean.InAppSharingFamilyInfo; -import com.yizhuan.xchat_android_core.share.bean.InAppSharingRoomInfo; -import com.yizhuan.xchat_android_core.share.bean.InAppSharingTeamInfo; -import com.yizhuan.xchat_android_core.share.bean.SessionType; -import com.yizhuan.xchat_android_core.statistic.LogFactory; -import com.yizhuan.xchat_android_core.statistic.StatLogKey; -import com.yizhuan.xchat_android_core.statistic.StatisticManager; -import com.yizhuan.xchat_android_core.statistic.protocol.LogProtocol; -import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; -import com.yizhuan.xchat_android_core.team.bean.TeamInfo; -import com.yizhuan.xchat_android_core.user.UserModel; -import com.yizhuan.xchat_android_core.user.bean.UserInfo; -import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils; -import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; -import com.yizhuan.xchat_android_library.rxbus.RxBus; -import com.yizhuan.xchat_android_library.utils.JavaUtil; -import com.yizhuan.xchat_android_library.utils.ListUtils; -import com.yizhuan.xchat_android_library.utils.NetworkUtils; -import com.yizhuan.xchat_android_library.utils.SingleToastUtil; -import com.yizhuan.xchat_android_library.utils.config.BasicConfig; -import com.yizhuan.xchat_android_library.utils.log.MLog; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.Objects; - -import io.reactivex.BackpressureStrategy; -import io.reactivex.Observable; -import io.reactivex.Single; -import io.reactivex.SingleEmitter; -import io.reactivex.SingleOnSubscribe; -import io.reactivex.SingleSource; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.BiConsumer; -import io.reactivex.functions.Function; -import io.reactivex.functions.Predicate; -import io.reactivex.processors.PublishProcessor; -import io.reactivex.schedulers.Schedulers; -import io.reactivex.subjects.PublishSubject; - -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_CAR; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_CAR_ENTER_ROOM; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_ROOM_WELCOME; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_BOX; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_DRAGON_BAR; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_DRAGON_BAR_CANCEL; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_DRAGON_BAR_END; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_DRAGON_BAR_RUNAWAY; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_DRAGON_BAR_START; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_AUCTION; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_FACE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_GIFT; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_KICK_MIC; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MULTI_GIFT; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE_INVITE; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE_KICK; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_SEND_MAGIC; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_MONSTER_AWARD; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_MONSTER_AWARD_MSG; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ALL_ROOM; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_IN_ROOM; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ME; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_ADD_BLACK; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_KICK_ROOM; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_MULTI_MAGIC; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_SINGLE_MAGIC; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO_AUDIO; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO_CLOSE_SCREEN; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_UPDATE_ROOM_INFO_GIFT; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_NOTI_SUB_GAME_ATTACK; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_NOTI_SUB_GAME_END; -import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_NOTI_SUB_GAME_RESULT; - -/** - *

云信聊天室管理,一个全局的Model

- * - * @author jiahui - * @date 2017/12/12 - */ -public final class IMNetEaseManager { - public static final String ROOM_ENTER_DAY = "current_day_room_id"; - public static final String ROOM_INTRO_TAG = "[房间介绍]"; - private static final String TAG = "IMNetEaseManager"; - - private final AvRoomModel model; - - public RoomQueueInfo mCacheRoomQueueInfo; - - private static final class Helper { - private static final IMNetEaseManager INSTANCE = new IMNetEaseManager(); - } - - public static IMNetEaseManager get() { - return Helper.INSTANCE; - } - - private IMNetEaseManager() { - registerInComingRoomMessage(); - registerKickoutEvent(); - registerOnlineStatusChange(); - registerServerMessage(); - registerMessageFilter(); - model = new AvRoomModel(); - } - - private void registerMessageFilter() { - NIMClient.getService(MsgService.class) - .registerIMMessageFilter(message -> { - if (message.getMsgType() == MsgTypeEnum.custom) { - CustomAttachment customAttachment = (CustomAttachment) message.getAttachment(); - int second = customAttachment.getSecond(); - switch (customAttachment.getFirst()) { - case CustomAttachment.CUSTOM_MSG_HEADER_TYPE_LUCKY_MONEY: - switch (second) { - case CustomAttachment.CUSTOM_MSG_SUB_TYPE_RECEIVE_LUCKY_MONEY: - LuckyMoneyTipsAttachment luckyMoneyAttachment = (LuckyMoneyTipsAttachment) message.getAttachment(); - LuckyMoneyInfo luckyMoneyInfo = luckyMoneyAttachment.getLuckyMoneyInfo(); - String uid = String.valueOf(AuthModel.get().getCurrentUid()); - // 你领取了某人的红包 || 某人领取了你的红包 - if (!(Objects.equals(uid, String.valueOf(luckyMoneyInfo.getReceiveUid())) || - Objects.equals(uid, String.valueOf(luckyMoneyInfo.getSenderUid())))) { - Log.e(TAG, "registerMessageFilter: "); - return true; - } - break; - } - break; - } - } - return false; - }); - } - - /** - * 接收来后台的开通贵族的小秘书通知,做出更新房间贵族和等级,座驾等操作 - */ - private void registerServerMessage() { - MsgServiceObserve service = NIMClient.getService(MsgServiceObserve.class); - service.observeReceiveMessage((Observer>) imMessages -> { - imMessages = IMMessageManager.filterMessage(imMessages); - for (IMMessage imMessage : imMessages) { - MsgAttachment attachment = imMessage.getAttachment(); - if (attachment instanceof NobleAttachment) { - int first = ((NobleAttachment) attachment).getFirst(); - if (first == CustomAttachment.CUSTOM_MESS_HEAD_NOBLE) { - int second = ((NobleAttachment) attachment).getSecond(); - if (second == CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE || - second == CustomAttachment.CUSTOM_MESS_SUB_HADEXPIRE) { - RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (mCurrentRoomInfo == null || mCurrentRoomInfo.getRoomId() == 0) - return; - // 如果是开通或者过期都需要更新房间里面的ext字段 - updateMyRoomRole(); - } - } - } else if (attachment instanceof CarAttachment) { - int first = ((CarAttachment) attachment).getFirst(); - if (first == CUSTOM_MESS_HEAD_CAR) { - int second = ((CarAttachment) attachment).getSecond(); - if (second == CUSTOM_MESS_SUB_CAR_ENTER_ROOM) { - - } - } - } else if (attachment instanceof SysMsgAttachment) { - SysMsgAttachment sysMsgAttachment = (SysMsgAttachment) attachment; - ErbanSysMsgInfo erbanSysMsgInfo = sysMsgAttachment.getErbanSysMsgInfo(); - Map params = erbanSysMsgInfo.getParams(); - if (params != null && params.get(ErbanSysMsgParamKey.FAMILY_ID) != null && - params.get(ErbanSysMsgParamKey.ACTION_TYPE) != null) { - RxBus.get().post(new FamilyMineEvent() - .setFamilyId(String.valueOf(params.get(ErbanSysMsgParamKey.FAMILY_ID))) - .setType(JavaUtil.str2int(params.get(ErbanSysMsgParamKey.ACTION_TYPE)))); - } - } else if (attachment instanceof MonsterAwardAttachment) { - //被赠送 头饰,座驾 - MonsterAwardAttachment monsterAwardAttachment = (MonsterAwardAttachment) attachment; - if (monsterAwardAttachment.routerType == RouterType.CAR - || monsterAwardAttachment.routerType == RouterType.DECORATION) { - SharedPreferenceUtils.put("IS_CHECK_MY_DECORATION", false); - } - - } - } - }, true); - } - - /** - * 更新本人在聊天室内的信息 - */ - private void updateMyRoomRole() { - final long currentUid = AuthModel.get().getCurrentUid(); - if (currentUid <= 0) return; - UserModel.get().getUserInfo(currentUid, true) - .flatMap((Function>) userInfo -> { - if (userInfo == null) - return Single.error(new Exception("获取用户的信息字段为空")); - return Single.create((SingleOnSubscribe) e -> { - RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (mCurrentRoomInfo == null || mCurrentRoomInfo.getRoomId() == 0) { - e.onError(new Exception("不在房间内或房间信息为空")); - return; - } - long roomId = mCurrentRoomInfo.getRoomId(); - NobleInfo nobleInfo = userInfo.getNobleInfo(); - UserLevelVo userLevelVo = userInfo.getUserLevelVo(); - HeadWearInfo headWearInfo = userInfo.getUserHeadwear(); - ChatRoomMemberUpdate chatRoomMemberUpdate = new ChatRoomMemberUpdate(); - Map map = new HashMap<>(1); - Map objectMap = new HashMap<>(); - Map valueMap = null; - valueMap.put(UserInfo.IS_NEW_USER, userInfo.isNewUser()); - if (nobleInfo != null) { - valueMap = nobleInfo.toMap(valueMap); - } - if (userLevelVo != null) { - valueMap = userLevelVo.toMap(valueMap); - } - if (headWearInfo != null) { - valueMap = headWearInfo.toMap(valueMap); - } -// if (nobleInfo==null){ -// if (userLevelVo != null){ -// if (headWearInfo!=null){ -// map.put(String.valueOf(currentUid), headWearInfo.toMap(userLevelVo.toMap(objectMap))); -// }else { -// map.put(String.valueOf(currentUid), userLevelVo.toMap(objectMap)); -// } -// }else { -// map.put(String.valueOf(currentUid), objectMap); -// } -// }else { -// if (userLevelVo != null){ -// if (headWearInfo!=null) { -// map.put(String.valueOf(currentUid), headWearInfo.toMap(userLevelVo.toMap(userInfo.getNobleInfo().toMap(objectMap)))); -// }else { -// map.put(String.valueOf(currentUid), userLevelVo.toMap(userInfo.getNobleInfo().toMap(objectMap))); -// } -// }else { -// map.put(String.valueOf(currentUid), userInfo.getNobleInfo().toMap(objectMap)); -// } -// } - - if (valueMap != null && valueMap.size() > 0) { - map.put(String.valueOf(currentUid), valueMap); - } -// map.put(String.valueOf(currentUid), nobleInfo == null ? -// (userLevelVo != null ? userLevelVo.toMap(objectMap) : objectMap) : -// (userLevelVo != null ? userLevelVo.toMap(userInfo.getNobleInfo().toMap(objectMap)) -// : userInfo.getNobleInfo().toMap(objectMap))); - chatRoomMemberUpdate.setExtension(map); - NIMChatRoomSDK.getChatRoomService().updateMyRoomRole(String.valueOf(roomId), chatRoomMemberUpdate, true, map); - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - }).subscribe(); - } - - - private void registerOnlineStatusChange() { - Observer onlineStatus = (Observer) this::dealChatRoomOnlineStatus; - NIMChatRoomSDK.getChatRoomServiceObserve().observeOnlineStatus(onlineStatus, true); - } - - private void registerKickoutEvent() { - Observer kickOutObserver = (Observer) chatRoomKickOutEvent -> { - // 收到不是自己房间的踢人消息直接return - if (filterAnotherChatRoom(chatRoomKickOutEvent)) return; - LogUtil.e(TAG, "收到踢人信息"); - // 提示被踢出的原因(聊天室已解散、被管理员踢出、被其他端踢出等 - Map extension = chatRoomKickOutEvent.getExtension(); - String account = null; - String userIdKick = null; - if (extension != null) { - account = (String) extension.get("account"); - userIdKick = (String) extension.get(StatLogKey.USER_ID_KICK); - } - - //写日志 - StatisticManager.Instance().logToLocalFileAndSendAliyun(LogFactory.create( - LogProtocol.LogLevel.LEVEL_VERBOSE, - LogProtocol.Topic.TOPIC_IM_LOG, - LogProtocol.Event.EVENT_IM_KICKED) - .append(StatLogKey.ROOM_ID, AvRoomDataManager.get().mCurrentRoomInfo != null ? - String.valueOf(AvRoomDataManager.get().mCurrentRoomInfo.getRoomId()) : "") - .append(StatLogKey.USER_ID_KICK, userIdKick) - .append(StatLogKey.USER_ID_KICKED, account)); - - if (AvRoomDataManager.get().mCurrentRoomInfo != null) { - //通知服务端该用户要退出房间 - model.quitUserRoomV2().subscribe(); - } - noticeKickOutChatMember(chatRoomKickOutEvent, account); - // 清空缓存数据 - AvRoomDataManager.get().release(); - }; - NIMChatRoomSDK.getChatRoomServiceObserve().observeKickOutEvent(kickOutObserver, true); - } - - private void registerInComingRoomMessage() { - Observer> incomingChatObserver = (Observer>) chatRoomMessages -> { - if (ListUtils.isListEmpty(chatRoomMessages)) return; - dealChatMessage(chatRoomMessages); - }; - NIMChatRoomSDK.getChatRoomServiceObserve().observeReceiveMessage(incomingChatObserver, true); - } - - - private void dealChatRoomOnlineStatus(ChatRoomStatusChangeData chatRoomStatusChangeData) { - if (filterAnotherChatRoom(chatRoomStatusChangeData)) return; - long currentUid = AuthModel.get().getCurrentUid(); - if (chatRoomStatusChangeData.status == StatusCode.CONNECTING) { - MLog.info(TAG, "连接中..."); - } else if (chatRoomStatusChangeData.status == StatusCode.UNLOGIN) { - int errorCode = NIMChatRoomSDK.getChatRoomService().getEnterErrorCode(chatRoomStatusChangeData.roomId); - // 如果遇到错误码13001,13002,13003,403,404,414,表示无法进入聊天室,此时应该调用离开聊天室接口。 - if (errorCode == ResponseCode.RES_CHATROOM_STATUS_EXCEPTION) { - // 聊天室连接状态异常 - MLog.error(TAG, "聊天室状态异常!"); - } - MLog.error(TAG, "聊天室在线状态变为UNLOGIN!"); - if (AvRoomDataManager.get().isOnMic(currentUid)) { - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().getRoomQueueMemberInfoByAccount(String.valueOf(currentUid)); - if (roomQueueInfo == null) return; - mCacheRoomQueueInfo = new RoomQueueInfo(roomQueueInfo.mRoomMicInfo, roomQueueInfo.mChatRoomMember); - } - } else if (chatRoomStatusChangeData.status == StatusCode.LOGINING) { - MLog.info(TAG, "登录中..."); - } else if (chatRoomStatusChangeData.status == StatusCode.LOGINED) { - MLog.info(TAG, "云信聊天室已登录成功"); - noticeImNetReLogin(mCacheRoomQueueInfo); - - Map parans = new HashMap<>(3); - parans.put("user_id", String.valueOf(currentUid)); - parans.put("net_type", NetworkUtils.getNetworkTypeName(BasicConfig.INSTANCE.getAppContext())); - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo != null) - parans.put("room_id", String.valueOf(roomInfo.getRoomId())); - - StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(), - StatisticsProtocol.Event.EVENT_RECONNECTION_ROOM_CHAT, "重连聊天室事", parans); - - StatisticManager.Instance().sendAliyunLog(LogFactory.create( - LogProtocol.LogLevel.LEVEL_VERBOSE, - LogProtocol.Topic.TOPIC_IM_LOG, - LogProtocol.Event.EVENT_IM_CHANNEL) - .append("roomUid", roomInfo != null ? String.valueOf(roomInfo.getUid()) : "") - .append("uid", String.valueOf(AuthModel.get().getCurrentUid())) - .append("type", "3")); - - } else if (chatRoomStatusChangeData.status.wontAutoLogin()) { - MLog.info(TAG, "需要重新登录(被踢或验证信息错误)..."); - - } else if (chatRoomStatusChangeData.status == StatusCode.NET_BROKEN) { - Map parans = new HashMap<>(4); - parans.put("user_id", String.valueOf(currentUid)); - parans.put("net_type", NetworkUtils.getNetworkTypeName(BasicConfig.INSTANCE.getAppContext())); - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo != null) - parans.put("room_id", String.valueOf(roomInfo.getRoomId())); - - MLog.info(TAG, "网络断开..."); - if (AvRoomDataManager.get().isOnMic(currentUid)) { - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().getRoomQueueMemberInfoByAccount(String.valueOf(currentUid)); - if (roomQueueInfo == null) { - parans.put("is_on_mic", "1"); - return; - } - parans.put("is_on_mic", "2"); - mCacheRoomQueueInfo = new RoomQueueInfo(roomQueueInfo.mRoomMicInfo, roomQueueInfo.mChatRoomMember); - } else { - parans.put("is_on_mic", "0"); - } - StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(), - StatisticsProtocol.Event.EVENT_LOST_NETWORK, "断网事件", parans); - } - } - - private boolean needToHideEnterMessage(ChatRoomMessage chatRoomMessage) { - String resource = NobleUtil.getResource(NobleResourceType.KEY_ENTER_HIDE, chatRoomMessage); - if (resource.toLowerCase().equals("0")) { - return false; - } else if (resource.toLowerCase().equals("1")) { - return true; - } - return false; - } - - private boolean filterAnotherChatRoom(ChatRoomStatusChangeData chatRoomStatusChangeData) { - return chatRoomStatusChangeData != null && filterAnotherChatRoomInternal(chatRoomStatusChangeData.roomId); - } - - private boolean filterAnotherChatRoom(ChatRoomKickOutEvent chatRoomKickOutEvent) { - return chatRoomKickOutEvent != null && filterAnotherChatRoomInternal(chatRoomKickOutEvent.getRoomId()); - } - - private boolean filterAnotherChatRoom(ChatRoomMessage chatRoomMessage) { - return chatRoomMessage != null && filterAnotherChatRoomInternal(chatRoomMessage.getSessionId()); - } - - private boolean filterAnotherChatRoomInternal(String sessionId) { - RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (currentRoomInfo == null) return false; - String roomId = String.valueOf(currentRoomInfo.getRoomId()); - System.out.println("roomId: " + roomId + ", sessionId: " + sessionId); - boolean notTheSameRoom = !Objects.equals(roomId, sessionId); - // 退出异常的房间 - if (notTheSameRoom) - NIMChatRoomSDK.getChatRoomService().exitChatRoom(sessionId); - return !(TextUtils.isEmpty(sessionId) || TextUtils.isEmpty(roomId)) && notTheSameRoom; - } - - private void dealChatMessage(List chatRoomMessages) { - ArrayList messages = new ArrayList<>(); - boolean face = false; - boolean gift = false; - for (ChatRoomMessage msg : chatRoomMessages) { - // 过滤其他房间的信息 - if (filterAnotherChatRoom(msg)) return; - if (msg.getMsgType() == MsgTypeEnum.notification) { - NotificationAttachment attachment = (NotificationAttachment) msg.getAttachment(); - if (attachment == null) continue; - if (attachment.getType() == NotificationType.ChatRoomQueueChange) { - chatRoomQueueChangeNotice(msg); - } else if (attachment.getType() == NotificationType.ChatRoomInfoUpdated) { - chatRoomInfoUpdate(msg); - } else if (attachment.getType() == NotificationType.ChatRoomMemberIn) { - - sendDescMessage(msg); - // 如果能隐身进入不显示公屏通知,否则显示公屏通知 - addMessagesImmediately(!needToHideEnterMessage(msg) ? msg : null); - List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); - chatRoomMemberIn(targets.get(0)); - - } else if (attachment.getType() == NotificationType.ChatRoomMemberExit) { - List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); - chatRoomMemberExit(targets.get(0)); - } else if (attachment.getType() == NotificationType.ChatRoomManagerAdd) { - //管理员id集合列表 - List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); - addManagerMember(targets.get(0)); - } else if (attachment.getType() == NotificationType.ChatRoomManagerRemove) { - List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); - removeManagerMember(targets.get(0)); - } else if (attachment.getType() == NotificationType.ChatRoomMemberBlackAdd) { - List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); - noticeChatMemberBlackAdd(targets.get(0)); - } else if (attachment.getType() == NotificationType.ChatRoomMyRoomRoleUpdated) { - // 房间内的某人的贵族信息更新了 - Map extension = null; - ChatRoomMessageExtension chatRoomMessageExtension = msg.getChatRoomMessageExtension(); - // 如果有发送过来的,获取对应的ext字段 - if (attachment instanceof ChatRoomQueueChangeAttachment) { - extension = ((ChatRoomQueueChangeAttachment) attachment).getExtension(); - } - // 没有直接发送过来,可以获取发送者的ext字段 - if (extension == null && chatRoomMessageExtension != null) { - extension = chatRoomMessageExtension.getSenderExtension(); - } - // 如果有对应的ext字段 - if (extension != null) { - // 更新房间内队列的chatRoomMember - AvRoomDataManager.get().updateQueueChatRoomMemberExtension(msg.getFromAccount(), extension); - noticeQueueMemberInfoUpdate(); - } - } - } else if (msg.getMsgType() == MsgTypeEnum.custom) { - MsgAttachment attachment = msg.getAttachment(); - if (attachment == null) return; - - //自定义消息 - CustomAttachment customAttachment = (CustomAttachment) msg.getAttachment(); - if (customAttachment.getFirst() == CUSTOM_MSG_HEADER_TYPE_AUCTION - || customAttachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_GIFT - || customAttachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_ROOM_TIP - || customAttachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_SEND_MAGIC - || customAttachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MULTI_GIFT - || customAttachment.getFirst() == CUSTOM_MSG_HEADER_TYPE_KICK_MIC - || customAttachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) { - addMessages(msg); - } - Logger.i("自定义消息:" + customAttachment); - int second = customAttachment.getSecond(); - switch (customAttachment.getFirst()) { - case CUSTOM_MSG_HEADER_TYPE_QUEUE: - RoomQueueMsgAttachment queueMsgAttachment = (RoomQueueMsgAttachment) attachment; - long uid = AuthModel.get().getCurrentUid(); - if (customAttachment.getSecond() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE_INVITE) { - //邀請上麥 - if (Objects.equals(queueMsgAttachment.uid, String.valueOf(uid))) { - noticeInviteUpMic(queueMsgAttachment.micPosition, queueMsgAttachment.uid); - } - } else if (customAttachment.getSecond() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE_KICK) { - //踢他下麥 - if (Objects.equals(queueMsgAttachment.uid, String.valueOf(uid))) { - int micPosition = AvRoomDataManager.get().getMicPosition(uid); - noticeKickDownMic(micPosition); - } - //只有下麦需要添加消息,修复房主拉人上麦,出现空公屏的bug - addMessages(msg); - } - break; - case CUSTOM_MSG_HEADER_TYPE_AUCTION: -// AuctionAttachment auctionAttachment = (AuctionAttachment) attachment; -// if (auctionAttachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_TYPE_AUCTION_START) { -// AuctionModel.get().setAuctionInfo(auctionAttachment.getAuctionInfo()); -// noticeAuctionStart(auctionAttachment.getAuctionInfo()); -// } else if (auctionAttachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_TYPE_AUCTION_FINISH) { -// AuctionModel.get().setAuctionInfo(null); -// noticeAuctionFinish(auctionAttachment.getAuctionInfo()); -// } else if (CustomAttachment.CUSTOM_MSG_SUB_TYPE_AUCTION_UPDATE == auctionAttachment.getSecond()) { -// AuctionModel.get().setAuctionInfo(auctionAttachment.getAuctionInfo()); -// noticeAuctionUpdate(auctionAttachment.getAuctionInfo()); -// } - break; - case CUSTOM_MSG_HEADER_TYPE_FACE: - messages.add(msg); - face = true; - break; - case CUSTOM_MSG_HEADER_TYPE_GIFT: - GiftAttachment giftAttachment = (GiftAttachment) attachment; - GiftInfo giftInfo = giftAttachment.getGiftReceiveInfo().getGift(); - // 兼容旧版发过来的giftAttachment没有发送giftInfo的问题 - giftInfo = giftInfo == null ? - GiftModel.get().findGiftInfoById(giftAttachment.getGiftReceiveInfo().getGiftId()) : giftInfo; - giftAttachment.getGiftReceiveInfo().setGift(giftInfo); - GiftModel.get().addNewGift(giftInfo); - messages.add(msg); - gift = true; - break; - case CUSTOM_MSG_HEADER_TYPE_MULTI_GIFT: - MultiGiftAttachment multiGiftAttachment = (MultiGiftAttachment) attachment; - giftInfo = multiGiftAttachment.getMultiGiftReceiveInfo().getGift(); - // 兼容旧版发过来的giftAttachment没有发送giftInfo的问题 - giftInfo = giftInfo == null ? - GiftModel.get().findGiftInfoById(multiGiftAttachment.getMultiGiftReceiveInfo().getGiftId()) : giftInfo; - multiGiftAttachment.getMultiGiftReceiveInfo().setGift(giftInfo); - GiftModel.get().addNewGift(giftInfo); - messages.add(msg); - gift = true; - break; - case CUSTOM_MESS_HEAD_NOBLE: - NobleAttachment nobleMsgAttachment = (NobleAttachment) attachment; - // 是否需要显示在公屏上 - NobleInfo nobleInfo = nobleMsgAttachment.nobleInfo; - Map remoteExtension = msg.getRemoteExtension(); - if (nobleInfo == null && remoteExtension != null) - nobleInfo = new NobleInfo((Map) remoteExtension.get(msg.getFromAccount())); - if (nobleInfo == null) continue; - nobleMsgAttachment.nobleInfo = nobleInfo; - if (second == CUSTOM_MESS_SUB_OPENNOBLE || second == CUSTOM_MESS_SUB_RENEWNOBLE) { - addMessagesImmediately(msg); - } - if (second == CUSTOM_MESS_SUB_ROOM_WELCOME) { - noticeNobleMemberIn(nobleMsgAttachment); - } else if (second == CUSTOM_MESS_SUB_OPENNOBLE) { - // 开通贵族需要展示svga,显示出来,否则只显示公屏 - if (NobleUtil.needShowSvgaOpenEffect(nobleInfo.getLevel())) - noticeOpenNoble(nobleMsgAttachment); - } - break; - case CUSTOM_MSG_UPDATE_ROOM_INFO: - if (second == CUSTOM_MSG_UPDATE_ROOM_INFO_AUDIO && - (AvRoomDataManager.get().mCurrentRoomInfo != null && AvRoomDataManager.get().mCurrentRoomInfo.getAudioQuality() == 2)) { - addMessages(msg); - } else if (second == CUSTOM_MSG_UPDATE_ROOM_INFO_GIFT) { - if (!AvRoomDataManager.get().mIsNeedGiftEffect) { - ChatRoomMessage tipMessage = ChatRoomMessageBuilder.createTipMessage("礼物特效"); - tipMessage.setContent("礼物特效"); - addMessages(tipMessage); - } - } else { - noticeUpdateRoomInfo((CustomAttachment) attachment); - } - break; - case CUSTOM_MESS_HEAD_CAR: - CarAttachment carAttachment = (CarAttachment) attachment; - if (second == CUSTOM_MESS_SUB_CAR_ENTER_ROOM) { - noticeCarMemberIn(carAttachment); - } - break; - case CUSTOM_MSG_HEADER_TYPE_SEND_MAGIC: - // 如果本地没有的话,尝试获取服务器最新列表 - MagicModel.get().getLocalMagicList().subscribe(); - if (second == CUSTOM_MSG_SUB_TYPE_SEND_SINGLE_MAGIC) { - MagicAttachment magicAttachment = (MagicAttachment) attachment; - noticeReceivedSingleMagic(magicAttachment); - } else if (second == CUSTOM_MSG_SUB_TYPE_SEND_MULTI_MAGIC) { - MagicAllMicAttachment magicAllMicAttachment = (MagicAllMicAttachment) attachment; - noticeReceivedAllMicMagic(magicAllMicAttachment); - } - break; - case CUSTOM_MSG_HEADER_TYPE_KICK_MIC: - // 如果本地没有的话,尝试获取服务器最新列表 - // MagicModel.get().getLocalMagicList().subscribe(); - if (second == CUSTOM_MSG_SUB_TYPE_SEND_KICK_ROOM) { - RoomQueueMsgAttachment magicAttachment = (RoomQueueMsgAttachment) attachment; - noticeReceivedKickRoom(magicAttachment); - } else if (second == CUSTOM_MSG_SUB_TYPE_SEND_ADD_BLACK) { - RoomQueueMsgAttachment magicAttachment = (RoomQueueMsgAttachment) attachment; - noticeReceivedAddBlack(magicAttachment); - } - break; - case CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING: - switch (second) { - case CUSTOM_NOTI_SUB_GAME_ATTACK: - MonsterAttackAttachment monsterAttackAttachment = (MonsterAttackAttachment) attachment; - noticeReceivedMonsterHuntingAttack(monsterAttackAttachment); - break; - - case CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING: - case CUSTOM_NOTI_SUB_GAME_END: - MonsterStatusAttachment monsterStatusAttachment = (MonsterStatusAttachment) attachment; - Log.e(TAG, "dealChatMessage: " + monsterStatusAttachment); - noticeReceivedMonsterStatus(monsterStatusAttachment); - break; - - case CUSTOM_NOTI_SUB_GAME_RESULT: - MonsterHuntingResultAttachment monsterHuntingResultAttachment = (MonsterHuntingResultAttachment) attachment; - Log.e(TAG, "dealChatMessage: " + monsterHuntingResultAttachment); - noticeReceivedMonsterResult(monsterHuntingResultAttachment); - break; - } - case CUSTOM_MSG_MONSTER_AWARD: - if (second == CUSTOM_MSG_MONSTER_AWARD_MSG) { - MonsterAwardAttachment monsterAwardAttachment = (MonsterAwardAttachment) attachment; - noticeReceivedMonsterAward(monsterAwardAttachment); - } - break; - case CUSTOM_MSG_BOX: - switch (second) { - case CUSTOM_MSG_SUB_BOX_ME: - if (AuthModel.get().getCurrentUid() == ((RoomBoxPrizeAttachment) msg.getAttachment()).getUid()) - addMessages(msg); - break; - case CUSTOM_MSG_SUB_BOX_IN_ROOM: - case CUSTOM_MSG_SUB_BOX_ALL_ROOM: - addMessages(msg); - break; - case CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY: - addMessages(msg); - noticeBox(msg); - break; - } - break; - case CUSTOM_MSG_DRAGON_BAR: - if (second == CUSTOM_MSG_DRAGON_BAR_START) { - noticeDragonBarStart(msg, RoomEvent.DRAGON_BAR_START); - } else if (second == CUSTOM_MSG_DRAGON_BAR_END) { - addMessages(msg); - noticeDragonBarStart(msg, RoomEvent.DRAGON_BAR_END); - } else if (second == CUSTOM_MSG_DRAGON_BAR_CANCEL) { - addMessages(msg); - noticeDragonBarStart(msg, RoomEvent.DRAGON_BAR_CANCEL); - } else if (second == CUSTOM_MSG_DRAGON_BAR_RUNAWAY) { - addMessages(msg); - noticeDragonBarStart(msg, RoomEvent.DRAGON_BAR_START); - } - break; - default: - } - } else if (msg.getMsgType() == MsgTypeEnum.text) { - addMessages(msg); - } - } - - if (face) { - DynamicFaceModel.get().onReceiveChatRoomMessages(messages); - } else if (gift) { - GiftModel.get().onReceiveChatRoomMessages(messages); - } - } - - private void noticeReceivedMonsterAward(MonsterAwardAttachment monsterAwardAttachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.MONSTER_HUNTING) - .setMonsterAwardAttachment(monsterAwardAttachment)); - } - - private void noticeReceivedKickRoom(RoomQueueMsgAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVED_ALL_MIC_MAGIC) - .setQueueMsgAttachment(attachment)); - } - - private void noticeReceivedAddBlack(RoomQueueMsgAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVED_ALL_MIC_MAGIC) - .setQueueMsgAttachment(attachment)); - } - - /** - * 成员进入房间 - */ - private void chatRoomMemberIn(final String account) { - List list = new ArrayList<>(1); - list.add(account); - fetchRoomMembersByIds(list) - .subscribe((chatRoomMemberList, throwable) -> { - if (ListUtils.isListEmpty(chatRoomMemberList)) return; - ChatRoomMember chatRoomMember = chatRoomMemberList.get(0); - AvRoomDataManager.get().mRoomAllMemberList.add(chatRoomMember); - if (chatRoomMember.getMemberType() == MemberType.ADMIN) { - addManagerMember(chatRoomMember); - } - noticeRoomMemberChange(true, account); - }); - } - - /** - * 退出房间处理 - */ - private void chatRoomMemberExit(String account) { - noticeRoomMemberChange(false, account); - RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (mCurrentRoomInfo == null) return; - if (AvRoomDataManager.get().isOnMic(Long.valueOf(account))) { - //在麦上的要退出麦 - IMNetEaseManager.get().downMicroPhoneBySdk(AvRoomDataManager.get().getMicPosition(Long.valueOf(account)), null); - SparseArray mMicQueueMemberMap = AvRoomDataManager.get().mMicQueueMemberMap; - int size = mMicQueueMemberMap.size(); - for (int i = 0; i < size; i++) { - RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.valueAt(i); - if (roomQueueInfo.mChatRoomMember != null - && Objects.equals(roomQueueInfo.mChatRoomMember.getAccount(), account)) { - roomQueueInfo.mChatRoomMember = null; - noticeDownMic(String.valueOf(mMicQueueMemberMap.keyAt(i)), account); - break; - } - } - } - - ChatRoomMember removeChatMember = null; - boolean isAdmin = false; - ListIterator iterator = AvRoomDataManager.get().mRoomAllMemberList.listIterator(); - for (; iterator.hasNext(); ) { - removeChatMember = iterator.next(); - if (Objects.equals(removeChatMember.getAccount(), account)) { - if (removeChatMember.getMemberType() == MemberType.ADMIN) { - isAdmin = true; - } - iterator.remove(); - } - } - if (isAdmin) { - removeManagerMember(removeChatMember); - } - } - - /** - * 麦序更新 - * - * @param extension - - * @param gson - - */ - private void roomQueueMicUpdate(Map extension, Gson gson) { - String micInfo = (String) extension.get("micInfo"); - if (!TextUtils.isEmpty(micInfo)) { - RoomMicInfo roomMicInfo = gson.fromJson(micInfo, RoomMicInfo.class); - if (roomMicInfo != null) { - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(roomMicInfo.getPosition()); - if (roomQueueInfo != null) { - roomQueueInfo.mRoomMicInfo = roomMicInfo; - //处理声网声音相关的 - if (roomQueueInfo.mChatRoomMember != null) { - if (AvRoomDataManager.get().isOwner(roomQueueInfo.mChatRoomMember.getAccount())) { - RtcEngineManager.get().setRole( - roomQueueInfo.mRoomMicInfo.isMicMute() ? Constants.CLIENT_ROLE_AUDIENCE : Constants.CLIENT_ROLE_BROADCASTER); - } - } - noticeMicPosStateChange(roomMicInfo.getPosition() + 1, roomQueueInfo); - } - } - } - } - - - /** - * 麦序状态,房间信息 - * - * @param msg - - */ - private void chatRoomInfoUpdate(ChatRoomMessage msg) { - ChatRoomNotificationAttachment notificationAttachment = (ChatRoomNotificationAttachment) msg.getAttachment(); - Map extension = notificationAttachment.getExtension(); - if (extension != null) { - Gson gson = new Gson(); - // 1----房间信息更新 2-----麦序信息更新 - int type = (int) extension.get("type"); - if (type == 2) { - roomQueueMicUpdate(extension, gson); - } else if (type == 1) { - roomInfoUpdate(extension, gson); - } - } - } - - - /** - * 房间信息更新 - * - * @param extension -- - * @param gson -- - */ - private void roomInfoUpdate(Map extension, Gson gson) { - String roomInfoStr = (String) extension.get("roomInfo"); - if (!TextUtils.isEmpty(roomInfoStr)) { - RoomInfo roomInfo = gson.fromJson(roomInfoStr, RoomInfo.class); - if (roomInfo != null) { - AvRoomDataManager.get().mCurrentRoomInfo = roomInfo; - noticeRoomInfoUpdate(roomInfo); - } - } - } - - private void chatRoomQueueChangeNotice(ChatRoomMessage msg) { - ChatRoomQueueChangeAttachment roomQueueChangeAttachment = (ChatRoomQueueChangeAttachment) msg.getAttachment(); - //麦上成员信息(uid...) key:坑位 ,content:{"nick":"行走的老者","uid":90972,"gender":1,"avatar":"https://image.zhongjialx.com/Fmtbprx5cGc3KABKjDxs_udJZb3O?imageslim"} - String content = roomQueueChangeAttachment.getContent(); - String key = roomQueueChangeAttachment.getKey(); - switch (roomQueueChangeAttachment.getChatRoomQueueChangeType()) { - case DROP: - break; - case POLL: - downMicroQueue(key); - break; - case OFFER: - Map senderExtension = msg.getChatRoomMessageExtension().getSenderExtension(); - upMicroQueue(content, key, senderExtension); - break; - case PARTCLEAR: - break; - case undefined: - break; - default: - } - } - - /** - * 进入聊天室 - */ - public void joinAvRoom() { - RoomInfo curRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - noticeEnterMessages(); - - handler.removeMessages(0); - handler.sendEmptyMessageDelayed(0, 60000); - - if (curRoomInfo != null) { - long uid = AuthModel.get().getCurrentUid(); - model.userRoomIn(String.valueOf(uid), curRoomInfo.getUid()) - .subscribe(new BiConsumer, Throwable>() { - @Override - public void accept(ServiceResult stringServiceResult, - Throwable throwable) throws Exception { - if (throwable != null) - LogUtil.e(TAG, "userroomin", throwable); - } - }); - - if (curRoomInfo.getUid() == uid) { - StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(), - StatisticsProtocol.Event.EVENT_OPENROOM, "开房"); - } - } - StatisticManager.Instance().onEventStart(BasicConfig.INSTANCE.getAppContext(), - StatisticsProtocol.Event.EVENT_OPENROOM, "进入房间"); - - } - - public ChatRoomMessage getFirstMessageContent() { - String content = XChatConstants.MESSAGE_VIEW_FIRST_MSG; - ChatRoomMessage message = ChatRoomMessageBuilder.createTipMessage(content); - message.setContent(content); - return message; - } - - /** - * 检查是否是公屏需要的消息,打怪兽的消息不加入公屏 - * - * @param chatRoomMessage - * @return - */ - private boolean checkNoNeedMsg(ChatRoomMessage chatRoomMessage) { - if (chatRoomMessage == null) return true; - if (chatRoomMessage.getMsgType() == MsgTypeEnum.custom) { - CustomAttachment attachment = (CustomAttachment) chatRoomMessage.getAttachment(); - if (attachment.getSecond() == CustomAttachment.CUSTOM_NOTI_SUB_GAME_ATTACK || - attachment.getSecond() == CustomAttachment.CUSTOM_NOTI_SUB_GAME_END) { - return true; - } - if (attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING) { - MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean(); - if (dataBean.getMonsterStatus() == MonsterInfo.MONSTER_STATUS_WILL_APPEAR) { - if (dataBean.getBeforeAppearSeconds() > 15) { - return true; - } - } - } - if (attachment.getSecond() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_QUEUE_KICK || - attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_KICK_ROOM || - attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_TYPE_SEND_ADD_BLACK) { - RoomQueueMsgAttachment roomQueueMsgAttachment = (RoomQueueMsgAttachment) attachment; - if (Objects.equals("", roomQueueMsgAttachment.targetNick)) { - return true; - } - } - } - return false; - } - - - /** - * 添加消息到公屏 - * - * @param msg - */ - public void addMessagesImmediately(ChatRoomMessage msg) { - if (AvRoomDataManager.get().mCurrentRoomInfo != null && AvRoomDataManager.get().mCurrentRoomInfo.isCloseScreen()) - return; - if (msg != null && !checkNoNeedMsg(msg)) { - noticeReceiverMessageImmediately(msg); - } - } - - /** - * 添加消息到公屏 - * - * @param msg - */ - public void addMessages(ChatRoomMessage msg) { - if (AvRoomDataManager.get().mCurrentRoomInfo != null && AvRoomDataManager.get().mCurrentRoomInfo.isCloseScreen()) - return; - if (msg != null && !checkNoNeedMsg(msg)) { - noticeReceiverMessage(msg); - } - } - - - public void addCloseScreenMessages(ChatRoomMessage msg) { - noticeReceiverMessage(msg); - } - - - private PublishProcessor roomProcessor; - private PublishProcessor relationShipProcessor; - private PublishSubject msgProcessor; - private PublishProcessor monsterEventPublishProcessor; - - public Observable getChatRoomMsgFlowable() { - return getChatRoomMsgPublisher() - .toFlowable(BackpressureStrategy.BUFFER) - .toObservable() - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()); - } - - private PublishSubject getChatRoomMsgPublisher() { - if (msgProcessor == null) { - synchronized (IMNetEaseManager.class) { - if (msgProcessor == null) { - msgProcessor = PublishSubject.create(); - msgProcessor.subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()); - } - } - } - return msgProcessor; - } - - public PublishProcessor getRelationShipEventObservable() { - if (relationShipProcessor == null) { - synchronized (IMNetEaseManager.class) { - if (relationShipProcessor == null) { - relationShipProcessor = PublishProcessor.create(); - relationShipProcessor.subscribeOn(AndroidSchedulers.mainThread()) - .observeOn(AndroidSchedulers.mainThread()); - } - } - } - return relationShipProcessor; - } - - public PublishProcessor getChatRoomEventObservable() { - if (roomProcessor == null) { - synchronized (IMNetEaseManager.class) { - if (roomProcessor == null) { - roomProcessor = PublishProcessor.create(); - roomProcessor.subscribeOn(AndroidSchedulers.mainThread()) - .observeOn(AndroidSchedulers.mainThread()); - } - } - } - return roomProcessor; - } - - public PublishProcessor getMonsterEventPublishProcessor() { - if (monsterEventPublishProcessor == null) { - synchronized (IMNetEaseManager.class) { - if (monsterEventPublishProcessor == null) { - monsterEventPublishProcessor = PublishProcessor.create(); - monsterEventPublishProcessor.subscribeOn(AndroidSchedulers.mainThread()) - .observeOn(AndroidSchedulers.mainThread()); - } - } - } - return monsterEventPublishProcessor; - } - - private MessageHandler handler = new MessageHandler(); - - private static class MessageHandler extends Handler { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - IMNetEaseManager.get().sendStatistics(); - sendEmptyMessageDelayed(0, 60000); - } - } - - /************************云信聊天室 普通操作(每个人都可以使用的) start******************************/ - - /** - * 发送公屏上的Tip信息 - * 子协议一: 关注房主提示- CustomAttachment.CUSTOM_MSG_SUB_TYPE_ROOM_TIP_SHARE_ROOM - * 子协议二: 分享房间成功的提示- CustomAttachment.CUSTOM_MSG_SUB_TYPE_ROOM_TIP_ATTENTION_ROOM_OWNER - * - * @param targetUid - - * @param subType -发送公屏上Tip信息的子协议 - */ - public Single sendChatRoomTipMsg(long targetUid, int subType) { - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - UserInfo userInfo = UserModel.get().getCacheUserInfoByUid(targetUid); - long myUid = AuthModel.get().getCurrentUid(); - UserInfo myUserInfo = UserModel.get().getCacheUserInfoByUid(myUid); - if (roomInfo != null && userInfo != null && myUserInfo != null) { - RoomTipAttachment roomTipAttachment = new RoomTipAttachment( - CustomAttachment.CUSTOM_MSG_HEADER_TYPE_ROOM_TIP, - subType - ); - roomTipAttachment.setUid(myUid); - roomTipAttachment.setNick(myUserInfo.getNick()); - roomTipAttachment.setTargetUid(targetUid); - roomTipAttachment.setTargetNick(userInfo.getNick()); - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - // 聊天室id - roomInfo.getRoomId() + "", - // 自定义消息 - roomTipAttachment - ); - return sendChatRoomMessage(message, false); - } - return Single.error(new Exception("roomInfo or userInfo or myUserInfo is null !")); - } - - /** - * 发送文本信息 - * - * @param message - - */ - public Single sendTextMsg(long roomId, String message) { - if (TextUtils.isEmpty(message) || TextUtils.isEmpty(message.trim())) - return Single.error(new ErrorThrowable("message == null !!!")); - ChatRoomMessage chatRoomMessage = ChatRoomMessageBuilder.createChatRoomTextMessage( - String.valueOf(roomId), message); - return sendChatRoomMessage(chatRoomMessage, false); - } - - /** - * 下麦 - * - * @param key -- - */ - private void downMicroQueue(String key) { - SparseArray mMicQueueMemberMap = AvRoomDataManager.get().mMicQueueMemberMap; - if (!TextUtils.isEmpty(key) && mMicQueueMemberMap != null) { - RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.get(Integer.parseInt(key)); - if (roomQueueInfo != null && roomQueueInfo.mChatRoomMember != null) { - String account = roomQueueInfo.mChatRoomMember.getAccount(); - if (AvRoomDataManager.get().isOwner(account)) { - // 更新声网闭麦 ,发送状态信息 - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); - AvRoomDataManager.get().mIsNeedOpenMic = true; - } - roomQueueInfo.mChatRoomMember = null; - // 通知界面更新麦序信息 - noticeDownMic(key, account); - } - } - } - - /** - * 上麦 - * - * @param content -- - */ - private synchronized void upMicroQueue(String content, final String key, Map extension) { - final SparseArray mMicQueueMemberMap = AvRoomDataManager.get().mMicQueueMemberMap; - if (!TextUtils.isEmpty(content)) { - JsonParser jsonParser = new JsonParser(); - final JsonObject contentJsonObj = jsonParser.parse(content).getAsJsonObject(); - if (contentJsonObj != null) { - int micPosition = Integer.parseInt(key); - RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.get(micPosition); - if (roomQueueInfo == null) { - return; - } - ChatRoomMember chatRoomMember = parseChatRoomMember(contentJsonObj, roomQueueInfo); - - int size = mMicQueueMemberMap.size(); - if (size > 0) { - for (int j = 0; j < size; j++) { - RoomQueueInfo temp = mMicQueueMemberMap.valueAt(j); - if (temp.mChatRoomMember != null - && Objects.equals(temp.mChatRoomMember.getAccount(), chatRoomMember.getAccount())) { - //处理同一个人换坑问题 - temp.mChatRoomMember = null; - } - // 允许接收所有人的声网音频流,不会影响本来麦上的静音状态,也不会影响自己操作过的静音按钮 - RtcEngineManager.get().setRemoteMute(temp.mChatRoomMember, false); - } - } - RoomQueueInfo tempRoomQueueInfo = mMicQueueMemberMap.get(micPosition); - if (tempRoomQueueInfo != null && tempRoomQueueInfo.mChatRoomMember != null - && !Objects.equals(tempRoomQueueInfo.mChatRoomMember.getAccount(), chatRoomMember.getAccount())) { - //被挤下麦的情况 - noticeDownCrowdedMic(micPosition, tempRoomQueueInfo.mChatRoomMember.getAccount()); - } - - chatRoomMember.setExtension(extension); - roomQueueInfo.mChatRoomMember = chatRoomMember; - // 这个人上麦后,恢复之前他因为是黑麦被禁言 - RtcEngineManager.get().setRemoteMute(chatRoomMember, false); - - //重新更新队列,队列上是否还有自己 - if (!AvRoomDataManager.get().isOwnerOnMic()) { - //处理可能自己被挤下还能说话的情况 - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); - } - - if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { - if (!roomQueueInfo.mRoomMicInfo.isMicMute()) { - //开麦 - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_BROADCASTER); - //是否需要开麦 - if (!AvRoomDataManager.get().mIsNeedOpenMic) { - //闭麦 - RtcEngineManager.get().setMute(true); - AvRoomDataManager.get().mIsNeedOpenMic = true; - } - } else { - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); - } - } - noticeUpMic(Integer.parseInt(key), chatRoomMember.getAccount()); - } - } else { - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); - } - } - - @NonNull - private ChatRoomMember parseChatRoomMember(JsonObject contentJsonObj, RoomQueueInfo roomQueueInfo) { - ChatRoomMember chatRoomMember = new ChatRoomMember(); - if (contentJsonObj.has("uid")) { - int uid = contentJsonObj.get("uid").getAsInt(); - chatRoomMember.setAccount(String.valueOf(uid)); - } - if (contentJsonObj.has("nick")) { - chatRoomMember.setNick(contentJsonObj.get("nick").getAsString()); - } - if (contentJsonObj.has("avatar")) { - chatRoomMember.setAvatar(contentJsonObj.get("avatar").getAsString()); - } - if (contentJsonObj.has("gender")) { - roomQueueInfo.gender = contentJsonObj.get("gender").getAsInt(); - } - return chatRoomMember; - } - - public Single> fetchRoomMembersByIds(final List accounts) { - return Single.create((SingleOnSubscribe>) e -> { - final RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (mCurrentRoomInfo == null || ListUtils.isListEmpty(accounts)) { - e.onError(new IllegalArgumentException("RoomInfo is null or accounts is null")); - return; - } - NIMChatRoomSDK.getChatRoomService() - .fetchRoomMembersByIds(String.valueOf(mCurrentRoomInfo.getRoomId()), accounts) - .setCallback(new RequestCallback>() { - @Override - public void onSuccess(List param) { - e.onSuccess(param); - } - - @Override - public void onFailed(int code) { - e.onError(new Exception("错误码: " + code)); - } - - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - - }).subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()); - } - - /************************云信聊天室 普通操作 end******************************/ - - /************************云信聊天室 房主/管理员操作 begin******************************/ - - /** - * 增加管理员 - * - * @param chatRoomMember - - */ - private void addManagerMember(final ChatRoomMember chatRoomMember) { - AvRoomDataManager.get().addAdminMember(chatRoomMember); - } - - /** - * 增加管理员 - * - * @param account - - */ - private void addManagerMember(final String account) { - List accounts = new ArrayList<>(1); - accounts.add(account); - fetchRoomMembersByIds(accounts).subscribe(new BiConsumer, Throwable>() { - @Override - public void accept(List chatRoomMembers, Throwable throwable) throws Exception { - if (!ListUtils.isListEmpty(chatRoomMembers)) { - ChatRoomMember chatRoomMember = chatRoomMembers.get(0); - addManagerMember(chatRoomMember); - if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { - AvRoomDataManager.get().mOwnerMember = chatRoomMember; - } - // 放在这里的原因是,只有管理员身份改变了才能发送通知 - noticeManagerChange(true, account); - } - } - }); - } - - private void removeManagerMember(final String account) { - if (TextUtils.isEmpty(account)) return; - List accounts = new ArrayList<>(1); - accounts.add(account); - fetchRoomMembersByIds(accounts).subscribe(new BiConsumer, Throwable>() { - @Override - public void accept(List chatRoomMemberList, Throwable throwable) throws Exception { - if (!ListUtils.isListEmpty(chatRoomMemberList)) { - ChatRoomMember chatRoomMember = chatRoomMemberList.get(0); - if (AvRoomDataManager.get().isOwner(chatRoomMember.getAccount())) { - AvRoomDataManager.get().mOwnerMember = chatRoomMember; - } - removeManagerMember(chatRoomMember); - noticeManagerChange(false, account); - } - } - }); - } - - private void removeManagerMember(ChatRoomMember chatRoomMember) { - if (chatRoomMember == null) return; - String account = chatRoomMember.getAccount(); - AvRoomDataManager.get().removeManagerMember(account); - } - - /** - * 加入黑名单 - * - * @param roomId - - * @param account - - * @param mark true:设置,false:取消 - */ - public void markBlackListBySdk(String roomId, final String account, final boolean mark, final CallBack callBack) { - NIMClient.getService(ChatRoomService.class) - .markChatRoomBlackList(mark, new MemberOption(roomId, account)) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(ChatRoomMember chatRoomMember) { - if (callBack != null) { - callBack.onSuccess(chatRoomMember); - } - } - - @Override - public void onFailed(int i) { - SingleToastUtil.showToast(BasicConfig.INSTANCE.getAppContext(), "操作失败,请重试"); - if (callBack != null) { - callBack.onFail(i, ""); - } - } - - @Override - public void onException(Throwable throwable) { - SingleToastUtil.showToast(BasicConfig.INSTANCE.getAppContext(), "操作失败,请重试"); - if (callBack != null) { - callBack.onFail(-1, throwable.getMessage()); - } - } - }); - } - - /** - * 设置管理员 - * - * @param roomId - - * @param account 要设置的管理员id - * @param mark true:设置,false:取消 - */ - public void markManagerListBySdk(String roomId, final String account, final boolean mark, final CallBack callBack) { - NIMClient.getService(ChatRoomService.class) - .markChatRoomManager(mark, new MemberOption(roomId, account)) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(ChatRoomMember chatRoomMember) { - if (callBack != null) - callBack.onSuccess(chatRoomMember); - if (mark) addManagerMember(chatRoomMember); - else removeManagerMember(chatRoomMember); - } - - @Override - public void onFailed(int i) { - SingleToastUtil.showToast(BasicConfig.INSTANCE.getAppContext(), "操作失败,请重试"); - if (callBack != null) { - callBack.onFail(i, ""); - } - } - - @Override - public void onException(Throwable throwable) { - SingleToastUtil.showToast(BasicConfig.INSTANCE.getAppContext(), "操作失败,请重试"); - if (callBack != null) { - callBack.onFail(-1, throwable.getMessage()); - } - } - }); - } - - /** - * 下麦 - * - * @param micPosition - - * @param callBack - - */ - public void downMicroPhoneBySdk(int micPosition, final CallBack callBack) { - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) return; - - NIMChatRoomSDK.getChatRoomService() - .pollQueue(String.valueOf(roomInfo.getRoomId()), String.valueOf(micPosition)) - .setCallback(new RequestCallback>() { - @Override - public void onSuccess(Entry stringStringEntry) { - if (callBack != null) - callBack.onSuccess("下麦成功"); - } - - @Override - public void onFailed(int i) { - if (callBack != null) { - callBack.onFail(-1, "下麦失败"); - } - } - - @Override - public void onException(Throwable throwable) { - if (callBack != null) { - callBack.onFail(-1, "下麦异常:" + throwable.getMessage()); - } - } - }); - } - - /** - *

下麦

- * 云信聊天室队列服务:取出队列头部或者指定元素 - *

roomId - 聊天室id

- *

key - 需要取出的元素的唯一键。若为 null,则表示取出队头元素

- * - * @param micPosition - - */ - public Single downMicroPhoneBySdk(final int micPosition) { - final RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) return null; - return Single.create((SingleOnSubscribe) e -> { - RequestResult> result = NIMClient.syncRequest(NIMChatRoomSDK.getChatRoomService() - .pollQueue(String.valueOf(roomInfo.getRoomId()), String.valueOf(micPosition))); - if (result.exception != null) - e.onError(result.exception); - else if (result.code != BaseMvpModel.RESULT_OK) - e.onError(new Throwable("错误码: " + result.code)); - else { - e.onSuccess("下麦回调成功"); - } - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - } - - /** - * 加入/移除黑名单 - *

添加/移出聊天室黑名单

- * Parameters: - * isAdd - true:添加, false:移出 - * memberOption - 请求参数,包含聊天室id,帐号id以及可选的扩展字段 - * Returns: - * InvocationFuture 可以设置回调函数。回调中返回成员信息 - * - * @param roomId - - * @param account - - * @param mark true:设置,false:取消 - */ - public Single markBlackListBySdk(final String roomId, final String account, final boolean mark, String nick) { - RoomQueueMsgAttachment queueMsgAttachment = new RoomQueueMsgAttachment(CUSTOM_MSG_HEADER_TYPE_KICK_MIC, - CUSTOM_MSG_SUB_TYPE_SEND_ADD_BLACK); - queueMsgAttachment.uid = String.valueOf(account); - queueMsgAttachment.handleUid = AuthModel.get().getCurrentUid(); - queueMsgAttachment.targetNick = nick; - queueMsgAttachment.handleNick = UserModel.get().getCacheLoginUserInfo().getNick(); - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - return sendChatRoomMessage(message, false); - } - - /** - * 加入/移除黑名单 - *

添加/移出聊天室黑名单

- * Parameters: - * isAdd - true:添加, false:移出 - * memberOption - 请求参数,包含聊天室id,帐号id以及可选的扩展字段 - * Returns: - * InvocationFuture 可以设置回调函数。回调中返回成员信息 - * - * @param roomId - - * @param account - - * @param mark true:设置,false:取消 - */ - public Single markBlackListBySdk(final String roomId, final String account, final boolean mark) { - return Single.create((SingleOnSubscribe) e -> { - RequestResult result = NIMClient.syncRequest(NIMClient.getService(ChatRoomService.class) - .markChatRoomBlackList(mark, new MemberOption(roomId, account))); - if (result.exception != null) - e.onError(result.exception); - else if (result.code != BaseMvpModel.RESULT_OK) - e.onError(new Exception("错误码: " + result.code)); - else { - e.onSuccess("黑名单处理回调成功"); - } - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - } - - /** - * 踢出房间 - * - * @param roomId 聊天室 id - * @param account 踢出成员帐号。仅管理员可以踢;如目标是管理员仅创建者可以踢 - * @param notifyExtension 被踢通知扩展字段,这个字段会放到被踢通知的扩展字段中 - */ - public Single kickMemberFromRoomBySdk(final long roomId, final long account, final Map notifyExtension) { - return Single.create(new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - NIMChatRoomSDK.getChatRoomService().kickMember( - String.valueOf(roomId), - String.valueOf(account), - notifyExtension - ) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(Void param) { - e.onSuccess("踢人出房间回调成功"); - } - - @Override - public void onFailed(int code) { - e.onError(new Exception("错误码: " + code)); - } - - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - } - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - - } - - /** - * 踢出房间 - * - * @param roomId 聊天室 id - * @param account 踢出成员帐号。仅管理员可以踢;如目标是管理员仅创建者可以踢 - */ - public Single kickMemberFromRoomBySdk(final long roomId, final long account, String nick) { - - RoomQueueMsgAttachment queueMsgAttachment = new RoomQueueMsgAttachment(CUSTOM_MSG_HEADER_TYPE_KICK_MIC, - CUSTOM_MSG_SUB_TYPE_SEND_KICK_ROOM); - queueMsgAttachment.uid = String.valueOf(account); - queueMsgAttachment.handleUid = AuthModel.get().getCurrentUid(); - queueMsgAttachment.targetNick = nick; - queueMsgAttachment.handleNick = UserModel.get().getCacheLoginUserInfo().getNick(); - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - return sendChatRoomMessage(message, false); - } - - /** - * 更改房间声音品质 - * - * @param roomId 聊天室 id - */ - public Single updateAudiouality(final long roomId) { - RoomInfoAttachment queueMsgAttachment = new RoomInfoAttachment(CUSTOM_MSG_UPDATE_ROOM_INFO, - CUSTOM_MSG_UPDATE_ROOM_INFO_AUDIO); - queueMsgAttachment.roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - return sendChatRoomMessage(message, false); - } - - /** - * 开启关闭公屏 - * - * @param roomId 聊天室 id - */ - public Single closeOpenScreen(final long roomId, RoomInfo roomInfo) { - RoomInfoAttachment queueMsgAttachment = new RoomInfoAttachment(CUSTOM_MSG_UPDATE_ROOM_INFO, - CUSTOM_MSG_UPDATE_ROOM_INFO_CLOSE_SCREEN); - queueMsgAttachment.roomInfo = roomInfo; - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - return sendChatRoomMessage(message, false); - } - - /** - * 关闭房间礼物特效 - * - * @param roomId 聊天室 id - */ - public Single updateGiftEffect(final long roomId) { - RoomInfoAttachment queueMsgAttachment = new RoomInfoAttachment(CUSTOM_MSG_UPDATE_ROOM_INFO, - CUSTOM_MSG_UPDATE_ROOM_INFO_GIFT); - queueMsgAttachment.roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - return sendChatRoomMessage(message, false); - } - - /** - *

下麦

- * 云信聊天室队列服务:加入或者更新队列元素,支持当用户掉线或退出聊天室后,是否删除这个元素 - *

roomId - 聊天室id

- *

key - 新元素(或待更新元素)的唯一键

- *

value - 新元素(待待更新元素)的内容

- *

isTransient - (可选参数,不传默认false)。true表示当提交这个新元素的用户从聊天室掉线或退出的时候,需要删除这个元素;默认false表示不删除

- * - * @param micPosition - - */ - public Single updateQueueEx(final long roomId, final int micPosition, final String value) { - return Single.create(new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - NIMChatRoomSDK.getChatRoomService().updateQueueEx( - String.valueOf(roomId), - String.valueOf(micPosition), - value, - true - ) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(Void param) { - e.onSuccess(true); - } - - @Override - public void onFailed(int code) { - e.onError(new Exception("错误码: " + code)); - } - - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - } - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - } - - /** - * 邀请上麦的自定义消息 - * - * @param micUid 上麦用户uid - * @param position 要上麦的位置 - */ - public Single inviteMicroPhoneBySdk(final long micUid, final int position) { - final RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) - return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); - return Single.create( - new SingleOnSubscribe() { - @Override - public void subscribe(SingleEmitter e) throws Exception { - RoomQueueMsgAttachment queueMsgAttachment = new RoomQueueMsgAttachment(CUSTOM_MSG_HEADER_TYPE_QUEUE, - CUSTOM_MSG_HEADER_TYPE_QUEUE_INVITE); - - queueMsgAttachment.uid = String.valueOf(micUid); - queueMsgAttachment.micPosition = position; - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomInfo.getRoomId()), queueMsgAttachment); - e.onSuccess(message); - } - }).subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .filter(new Predicate() { - @Override - public boolean test(ChatRoomMessage chatRoomMessage) throws Exception { - //上麦条件:游客不在麦上 或者是管理员,房主 - return (!AvRoomDataManager.get().isOnMic(micUid) - || AvRoomDataManager.get().isRoomOwner() - || AvRoomDataManager.get().isRoomAdmin()) - && position != Integer.MIN_VALUE; - } - }) - .toSingle() - .flatMap(new Function>() { - @Override - public SingleSource apply(ChatRoomMessage chatRoomMessage) throws Exception { - return sendChatRoomMessage(chatRoomMessage, false); - } - }); - } - - /** - * 踢人下麦 - * - * @param micUid 被踢用户uid - * @param roomId 房间ID - */ - public Single kickMicroPhoneBySdk(long micUid, String micNick, long roomId) { - RoomQueueMsgAttachment queueMsgAttachment = new RoomQueueMsgAttachment(CUSTOM_MSG_HEADER_TYPE_QUEUE, - CUSTOM_MSG_HEADER_TYPE_QUEUE_KICK); - queueMsgAttachment.uid = String.valueOf(micUid); - queueMsgAttachment.handleUid = AuthModel.get().getCurrentUid(); - queueMsgAttachment.targetNick = micNick; - queueMsgAttachment.handleNick = UserModel.get().getCacheLoginUserInfo().getNick(); - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomId), queueMsgAttachment); - int micPosition = AvRoomDataManager.get().getMicPosition(micUid); - RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(micPosition); - if (roomQueueInfo != null) { - String level = NobleUtil.getResource(NobleResourceType.KEY_LEVEL, roomQueueInfo.mChatRoomMember); - String name = NobleUtil.getNobleName(level); - if (!NobleUtil.canKickMicroOrNot(level)) { - return Single.error(new Exception(name + "不能被踢下麦")); - } - } - return sendChatRoomMessage(message, false); - } - - /** - * 发送贵族进场自定义消息 - * - * @param nobleInfo 贵族信息 - * @param nick 昵称 - * @param uid 帐号id - * @return Single - */ - public Single sendNobleInRoomMsgBySdk(final NobleInfo nobleInfo, - final String nick, - final long uid) { - final RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) - return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); - return Single.create( - (SingleOnSubscribe) e -> { - NobleAttachment nobleMsgAttachment = new NobleAttachment(CUSTOM_MESS_HEAD_NOBLE, - CUSTOM_MESS_SUB_ROOM_WELCOME); - nobleMsgAttachment.uid = uid; - nobleMsgAttachment.nick = nick; - nobleMsgAttachment.nobleInfo = nobleInfo; - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomInfo.getRoomId()), nobleMsgAttachment); - e.onSuccess(message); - }).subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .filter(chatRoomMessage -> nobleInfo != null && !TextUtils.isEmpty(nick) && uid != 0) - .toSingle() - .flatMap(chatRoomMessage -> sendChatRoomMessage(chatRoomMessage, false)); - } - - /** - * 发送座驾进场自定义消息 - * - * @param carInfo 座驾信息 - * @param uid - * @param nick - * @return - */ - public Single sendCarPlayRoomMsgBySdk(CarInfo carInfo, long uid, String nick) { - final RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) - return Single.error(new ErrorThrowable(ErrorThrowable.ROOM_INFO_NULL_ERROR)); - return Single.create( - (SingleOnSubscribe) e -> { - CarAttachment carAttachment = new CarAttachment(CUSTOM_MESS_HEAD_CAR, - CUSTOM_MESS_SUB_CAR_ENTER_ROOM); - carAttachment.uid = uid; - carAttachment.nick = nick; - carAttachment.effect = carInfo.getEffect(); - - ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage( - String.valueOf(roomInfo.getRoomId()), carAttachment); - e.onSuccess(message); - }).subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .filter(chatRoomMessage -> carInfo != null && !TextUtils.isEmpty(nick) && uid != 0) - .toSingle() - .flatMap(chatRoomMessage -> sendChatRoomMessage(chatRoomMessage, false)); - } - - /************************云信聊天室 房主/管理员操作 end******************************/ - - /** - *

发送 云信聊天室信息

- *

返回的是一个观察者,需要subscribe才会开始发送信息

- *

不关心信息发送是否成功的,可以直接调用无参subscribe()方法, - * 相反关心的则需要在subscribe(new Consumer(..){...})方法中通过Consumer来消耗事件

- *

ps: 无参subscribe()方法调用如果发生错误,会在rxjava的error handler中得到回调,默认的实现在application的onCreate中

- * - * @param chatRoomMessage 自定义的聊天室信息 - * @param resend 是否自动重发 - * @return 返回一个可被observer观察订阅的observable - */ - public Single sendChatRoomMessage(final ChatRoomMessage chatRoomMessage, final boolean resend) { - if (chatRoomMessage == null) { - throw new IllegalArgumentException("ChatRoomMessage can't be null!"); - } - // 设置聊天室的贵族信息字段(包括发的人和麦上的所有人) - final List accounts = new ArrayList<>(10); - final List chatRoomMembers = new ArrayList<>(10); - return Single.create((SingleOnSubscribe>) e -> { - // 发的人 - ChatRoomMember roomMember = AvRoomDataManager.get().getChatRoomMember(chatRoomMessage.getFromAccount()); - if (roomMember != null && roomMember.getExtension() != null) { - chatRoomMembers.add(roomMember); - } else { - accounts.add(chatRoomMessage.getFromAccount()); - } - // 麦上的人 - SparseArray mMicQueueMemberMap = AvRoomDataManager.get().mMicQueueMemberMap; - for (int i = 0; i < mMicQueueMemberMap.size(); i++) { - int key = mMicQueueMemberMap.keyAt(i); - RoomQueueInfo roomQueueInfo = mMicQueueMemberMap.get(key); - if (roomQueueInfo == null || roomQueueInfo.mChatRoomMember == null) continue; - // 有拓展字段 - if (roomQueueInfo.mChatRoomMember.getExtension() != null) { - chatRoomMembers.add(roomQueueInfo.mChatRoomMember); - } else { - // 用于重新获取拓展字段 - accounts.add(roomQueueInfo.mChatRoomMember.getAccount()); - } - } - e.onSuccess(chatRoomMembers); - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).flatMap(chatRoomMembers1 -> { - if (!ListUtils.isListEmpty(accounts)) { - return fetchRoomMembersByIds(accounts); - } else { - return Single.just(chatRoomMembers1); - } - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).flatMap(roomMembers -> { - // 旧版的人上麦可能并没有extension字段 - chatRoomMembers.addAll(roomMembers); - Map map = new HashMap<>(chatRoomMembers.size()); - for (int i = 0; i < chatRoomMembers.size(); i++) { - Map extension = chatRoomMembers.get(i).getExtension(); - if (extension == null || extension.get(chatRoomMembers.get(i).getAccount()) == null) - continue; - map.put(chatRoomMembers.get(i).getAccount(), extension.get(chatRoomMembers.get(i).getAccount())); - } - chatRoomMessage.setLocalExtension(map); - chatRoomMessage.setRemoteExtension(map); - return Single.create((SingleOnSubscribe) e -> { - NIMChatRoomSDK.getChatRoomService().sendMessage( - chatRoomMessage, - resend - ) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(Void param) { - e.onSuccess(chatRoomMessage); - } - - @Override - public void onFailed(int code) { - e.onError(new Exception("错误码: " + code)); - } - - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - }); - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); - } - - /** - * 云信发送消息 - * - * @param message - * @return - */ - public Single sendMessage(IMMessage message) { - return Single.create(e -> { - NIMClient.getService(MsgService.class).sendMessage(message, true) - .setCallback(new RequestCallback() { - @Override - public void onSuccess(Void param) { - e.onSuccess(true); - } - - @Override - public void onFailed(int code) { - e.onError(new Exception("错误码: " + code)); - } - - @Override - public void onException(Throwable exception) { - e.onError(exception); - } - }); - }); - } - - /** - * 云信发送消息 - * - * @param message - * @return - */ - public void sendChatRoomMessage(final ChatRoomMessage message, CallBack callBack) { - // 发送消息。如果需要关心发送结果,可设置回调函数。发送完成时,会收到回调。如果失败,会有具体的错误码。 - IMNetEaseManager.get().sendChatRoomMessage(message, false) - .subscribe((chatRoomMessage, throwable) -> { - //这里回调发送结果 - if (callBack != null) { - if (throwable == null) { - callBack.onSuccess(message); - } else { - callBack.onFail(0, throwable.getMessage()); - } - } - }); - } - - /** - * 云信查询本地数据 - * - * @param uuid 消息 UUID - * @return - */ - public IMMessage queryMessageByUuid(String uuid) { - List uuids = new ArrayList<>(); - uuids.add(uuid); - List data = - NIMClient.getService(MsgService.class) - .queryMessageListByUuidBlock(uuids); - return data != null && data.size() > 0 ? data.get(0) : null; - } - - /** - * 保存数据到本地数据库 - * - * @param message 消息本身 - * @return - */ - public void saveMessageToLocal(IMMessage message) { - NIMClient.getService(MsgService.class) - .saveMessageToLocalEx(message, false, message.getTime()); - } - - /** - * 分享家族时使用的发送云信自定义消息的方法 - * - * @param sessionType 取值: - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#P2P} 私聊 - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#Team} 群聊 - * @param sessionId 如果是私聊,则为用户 UID;如果是群聊,则为群组的 teamId - */ - public void sendSharingRoomMessage(int sessionType, String sessionId) { - InAppSharingRoomInfo inAppSharingRoomInfo = new InAppSharingRoomInfo(); - RoomInfo currentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); - inAppSharingRoomInfo.setInfo(currentRoomInfo); - inAppSharingRoomInfo.setTitle(String.format("我想邀请你进入:%1$s, 和我一起愉快的玩耍~", - currentRoomInfo.getTitle())); - inAppSharingRoomInfo.setAvatar(currentRoomInfo.getAvatar() != null ? currentRoomInfo.getAvatar() : ""); - inAppSharingRoomInfo.setActionName("立即进入"); - inAppSharingRoomInfo.setRouterType(RouterType.ROOM); - inAppSharingRoomInfo.setRouterValue(String.valueOf(currentRoomInfo.getUid())); - InAppSharingRoomAttachment attachment = new InAppSharingRoomAttachment(); - attachment.setUid(String.valueOf(AuthModel.get().getCurrentUid())); - attachment.setInfo(inAppSharingRoomInfo); - IMMessage message = MessageBuilder.createCustomMessage(sessionId, SessionType.get(sessionType), attachment); - sendMessage(message) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(); - } - - /** - * 分享房间时使用的发送云信自定义消息的方法 - * - * @param sessionType 取值: - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#P2P} 私聊 - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#Team} 群聊 - * @param sessionId 如果是私聊,则为用户 UID;如果是群聊,则为群组的 teamId - */ - public void sendSharingFamilyMessage(int sessionType, String sessionId, FamilyInfo familyInfo) { - - //群太多这里了去掉群,成员,游戏,防止家族转json时候 超出云信4096长度限制 - FamilyInfo temp = new Gson().fromJson(new Gson().toJson(familyInfo), FamilyInfo.class); - temp.setGroups(new ArrayList<>()); - temp.setGames(new ArrayList<>()); - temp.setMembers(new ArrayList<>()); - - InAppSharingFamilyInfo inAppSharingFamilyInfo = new InAppSharingFamilyInfo(); - UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); - inAppSharingFamilyInfo.setInfo(temp); - inAppSharingFamilyInfo.setTitle(String.format("我想邀请你加入:%1$s, 和我一起愉快的玩耍~", - temp.getFamilyName())); - inAppSharingFamilyInfo.setAvatar(temp.getFamilyIcon() != null ? temp.getFamilyIcon() : ""); - inAppSharingFamilyInfo.setActionName("立即加入"); - inAppSharingFamilyInfo.setRouterType(RouterType.FAMILY); - inAppSharingFamilyInfo.setRouterValue(temp.getFamilyId()); - InAppSharingFamilyAttachment attachment = new InAppSharingFamilyAttachment(); - attachment.setUid(String.valueOf(AuthModel.get().getCurrentUid())); - attachment.setInfo(inAppSharingFamilyInfo); - IMMessage message = MessageBuilder.createCustomMessage(sessionId, SessionType.get(sessionType), attachment); - sendMessage(message) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(); - } - - /** - * 分享群组时使用的发送云信自定义消息的方法 - * - * @param sessionType 取值: - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#P2P} 私聊 - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#Team} 群聊 - * @param sessionId 如果是私聊,则为用户 UID;如果是群聊,则为群组的 teamId - * @param teamInfo 群组信息(必须包含 ID 和名字) - */ - public void sendSharingTeamMessage(int sessionType, String sessionId, TeamInfo teamInfo) { - InAppSharingTeamInfo inAppSharingTeamInfo = new InAppSharingTeamInfo(); - UserInfo userInfo = UserModel.get().getCacheLoginUserInfo(); - inAppSharingTeamInfo.setInfo(teamInfo); - inAppSharingTeamInfo.setTitle(String.format("我想邀请你加入:%1$s, 和我一起愉快的玩耍~", - teamInfo.getName())); - inAppSharingTeamInfo.setAvatar(userInfo != null ? userInfo.getAvatar() : ""); - inAppSharingTeamInfo.setActionName("立即加入"); - inAppSharingTeamInfo.setRouterType(RouterType.TEAM); - inAppSharingTeamInfo.setRouterValue(teamInfo.getId()); - InAppSharingTeamAttachment attachment = new InAppSharingTeamAttachment(); - attachment.setUid(String.valueOf(AuthModel.get().getCurrentUid())); - attachment.setInfo(inAppSharingTeamInfo); - IMMessage message = MessageBuilder.createCustomMessage(sessionId, SessionType.get(sessionType), attachment); - sendMessage(message) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(); - } - - /** - * 发送红包时,发送云信自定义消息 - * - * @param sessionType 取值: - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#P2P} 私聊 - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#Team} 群聊 - * @param teamId 如果是私聊,则为用户 UID;如果是群聊,则为群组的 teamId - * @param uid 用户 UID - * @param luckyMoneyInfo 红包信息(请求发送红包接口后获得) - */ - public void sendLuckyMoneyMessage(int sessionType, String teamId, String uid, LuckyMoneyInfo luckyMoneyInfo) { - luckyMoneyInfo.setClaimStatus(LuckyMoneyInfo.STATE_NOT_OPEN); - LuckyMoneyAttachment attachment = new LuckyMoneyAttachment(); - attachment.setUid(uid); - attachment.setLuckyMoneyInfo(luckyMoneyInfo); - IMMessage message = MessageBuilder.createCustomMessage(teamId, SessionType.get(sessionType), attachment); - sendMessage(message) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(); - MessageListPanelHelper.getInstance().notifyAddMessage(message); - } - - /** - * 领取群红包时,发送云信 tips 的自定义消息 - * - * @param sessionType 取值: - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#P2P} 私聊 - * {@link com.netease.nimlib.sdk.msg.constant.SessionTypeEnum#Team} 群聊 - * @param teamId 如果是私聊,则为用户 UID;如果是群聊,则为群组的 teamId - * @param uid 用户 UID - * @param luckyMoneyInfo 红包实体 - */ - public void receiveLuckyMoneyMessage(int sessionType, String teamId, String uid, LuckyMoneyInfo luckyMoneyInfo) { - LuckyMoneyTipsAttachment attachment = new LuckyMoneyTipsAttachment(); - attachment.setUid(uid); - attachment.setLuckyMoneyInfo(luckyMoneyInfo); - IMMessage message = MessageBuilder.createCustomMessage(teamId, SessionType.get(sessionType), attachment); - - sendMessage(message) - .subscribeOn(Schedulers.computation()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(); - MessageListPanelHelper.getInstance().notifyAddMessage(message); - } - - /** - * 更新红包信息 - * - * @param uuid 消息 UUID - * @param luckyMoneyInfo 红包实体 - */ - public void updateLuckyMoneyMessage(String uuid, LuckyMoneyInfo luckyMoneyInfo) { - IMMessage message = queryMessageByUuid(uuid); - if (message != null) { - Map localExtension = LuckyMoneyInfo.convertToMap(luckyMoneyInfo); - message.setLocalExtension(localExtension); - NIMClient.getService(MsgService.class) - .updateIMMessage(message); - } - } - - /** - * 更新系统消息到本地数据库 - * - * @param uuid 消息 UUID - * @param sysMsgInfo 系统消息实体 - */ - public void updateErbanSysMsgInfoMessage(String uuid, ErbanSysMsgInfo sysMsgInfo) { - IMMessage message = queryMessageByUuid(uuid); - if (message != null) { - Map localExtension = ErbanSysMsgInfo.convertToMap(sysMsgInfo); - message.setLocalExtension(localExtension); - NIMClient.getService(MsgService.class) - .updateIMMessage(message); - } - } - - /** - * -------------------------通知begin------------------------------- - */ - private void noticeReceivedMonsterResult(MonsterHuntingResultAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.MONSTER_HUNTING_RESULT) - .setMonsterHuntingResultAttachment(attachment)); - } - - private void noticeReceivedMonsterStatus(MonsterStatusAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.MONSTER_STATUS_CHANGED) - .setMonsterStatusAttachment(attachment)); - } - - private void noticeReceivedMonsterHuntingAttack(MonsterAttackAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.MONSTER_HUNTING) - .setMonsterAttackReceiveInfo(attachment.getMonsterAttackReceiveInfo())); - } - - private void noticeReceivedAllMicMagic(MagicAllMicAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVED_ALL_MIC_MAGIC) - .setMultiMagicReceivedInfo(attachment.getMultiMagicReceivedInfo())); - } - - private void noticeReceivedSingleMagic(MagicAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVED_SINGLE_MAGIC) - .setMagicReceivedInfo(attachment.getMagicReceivedInfo())); - } - - public void noticeImNetReLogin(RoomQueueInfo roomQueueInfo) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.ROOM_CHAT_RECONNECTION) - .setRoomQueueInfo(roomQueueInfo)); - } - - private void noticeRoomMemberChange(boolean isMemberIn, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setAccount(account) - .setEvent(isMemberIn ? RoomEvent.ROOM_MEMBER_IN : RoomEvent.ROOM_MEMBER_EXIT)); - } - - public void noticeManagerChange(boolean isAdd, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(isAdd ? RoomEvent.ROOM_MANAGER_ADD : RoomEvent.ROOM_MANAGER_REMOVE) - .setAccount(account)); - } - - public void noticeManagerChange() { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.ROOM_MANAGER_ADD)); - } - - private void noticeReceiverMessageImmediately(ChatRoomMessage chatRoomMessage) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVE_MSG) - .setChatRoomMessage(chatRoomMessage) - ); - } - - private void noticeReceiverMessage(ChatRoomMessage chatRoomMessage) { - getChatRoomMsgPublisher().onNext(chatRoomMessage); - } - - private void noticeEnterMessages() { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.ENTER_ROOM)); - } - - public void noticeKickOutChatMember(ChatRoomKickOutEvent reason, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.KICK_OUT_ROOM) - .setReason(reason) - .setAccount(account)); - } - - private void noticeKickDownMic(int position) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.KICK_DOWN_MIC) - .setMicPosition(position)); - } - - private void noticeInviteUpMic(int position, String account) { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.INVITE_UP_MIC) - .setAccount(account) - .setMicPosition(position)); - } - - private void noticeDownMic(String position, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.DOWN_MIC) - .setAccount(account) - .setMicPosition(Integer.valueOf(position))); - } - - - private void noticeMicPosStateChange(int position, RoomQueueInfo roomQueueInfo) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.MIC_QUEUE_STATE_CHANGE) - .setMicPosition(position) - .setRoomQueueInfo(roomQueueInfo)); - } - - - private void noticeChatMemberBlackAdd(String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.ADD_BLACK_LIST) - .setAccount(account)); - } - - private void noticeUpdateRoomInfo(CustomAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.RECEIVE_MSG) - .setCustomAttachment(attachment)); - } - - private void noticeUpMic(int position, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.UP_MIC) - .setMicPosition(position) - .setAccount(account) - ); - } - - /** - * 被挤下麦通知 - */ - private void noticeDownCrowdedMic(int position, String account) { - getChatRoomEventObservable().onNext(new RoomEvent() - .setEvent(RoomEvent.DOWN_CROWDED_MIC) - .setMicPosition(position) - .setAccount(account) - ); - } - - private void noticeRoomInfoUpdate(RoomInfo roomInfo) { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.ROOM_INFO_UPDATE).setRoomInfo(roomInfo)); - } - - private void noticeAuctionStart(AuctionInfo auctionInfo) { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.AUCTION_START).setAuctionInfo(auctionInfo)); - } - - private void noticeAuctionFinish(AuctionInfo auctionInfo) { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.AUCTION_FINISH).setAuctionInfo(auctionInfo)); - } - - private void noticeAuctionUpdate(AuctionInfo auctionInfo) { - getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.AUCTION_UPDATE).setAuctionInfo(auctionInfo)); - } - - private void noticeCarMemberIn(CarAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.CAR_MEMBER_IN) - .setRoomCarMsgAttachment(attachment)); - } - - private void noticeNobleMemberIn(NobleAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.ON_NOBLE_MEMBER_IN) - .setRoomNobleMsgAttachment(attachment)); - } - - private void noticeOpenNoble(NobleAttachment attachment) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.ON_OPEN_NOBLE_NOTICE) - .setRoomNobleMsgAttachment(attachment)); - } - - private void noticeQueueMemberInfoUpdate() { - getChatRoomEventObservable() - .onNext(new RoomEvent().setEvent(RoomEvent.ON_QUEUE_MEMBER_INFO_UPDATE)); - } - - private void noticeDragonBarStart(ChatRoomMessage msg, int event) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(event) - .setChatRoomMessage(msg)); - } - - private void noticeBox(ChatRoomMessage msg) { - getChatRoomEventObservable() - .onNext(new RoomEvent() - .setEvent(RoomEvent.BOX_NOTIFY) - .setChatRoomMessage(msg)); - } - - private void sendStatistics() { - RoomInfo curRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (curRoomInfo != null) { - long uid = AuthModel.get().getCurrentUid(); - long roomUid = curRoomInfo.getUid(); - String ticket = AuthModel.get().getTicket(); - Map params = new HashMap<>(3); - params.put("uid", String.valueOf(uid)); - params.put("roomUid", String.valueOf(roomUid)); - params.put("ticket", ticket); - StatisticManager.Instance().sendStatisticToService(params); - } - } - - /** - * 公屏本地添加房间介绍信息 - */ - private void sendDescMessage(ChatRoomMessage chatRoomMessage) { - - // 仅房主不提示 - if (AvRoomDataManager.get().isRoomOwner()) - return; - - String from = chatRoomMessage.getFromAccount(); - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) { - return; - } - // 判断当天是否已经进入过此直播间 - boolean isCurrentDayEnter = saveCurrentDayRoomId(roomInfo.getUid()); - - if (!TextUtils.isEmpty(from)) { - - if (from.equals(String.valueOf(AuthModel.get().getCurrentUid()))) { - - String content = roomInfo.getIntroduction(); - ChatRoomMessage message; - - if (!TextUtils.isEmpty(content) && !isCurrentDayEnter) { - message = ChatRoomMessageBuilder.createTipMessage(content); - message.setContent(ROOM_INTRO_TAG + "\n" + content); - addMessagesImmediately(message); - } - - content = XChatConstants.ROOM_INTRODUCTION; - message = ChatRoomMessageBuilder.createTipMessage(content); - message.setContent(content); - addMessagesImmediately(message); - - } - - } - } - - /** - * 记录用户一天进入的房间id,隔天重置 - */ - private boolean saveCurrentDayRoomId(long roomId) { - String ids = (String) SharedPreferenceUtils.get(IMNetEaseManager.ROOM_ENTER_DAY + AuthModel.get().getCurrentUid(), ""); - - if (!TextUtils.isEmpty(ids)) { - String[] idArray = ids.split(","); - - String day = idArray[0]; - long currentDay = System.currentTimeMillis() / 1000 / 60 / 60 / 24; - - if (day.equals(String.valueOf(currentDay))) { - String strRoomId = String.valueOf(roomId); - - for (String id : idArray) { - if (id.equals(strRoomId)) - return true; - } - - SharedPreferenceUtils.put(IMNetEaseManager.ROOM_ENTER_DAY + AuthModel.get().getCurrentUid(), ids + "," + roomId); - } else - resetCurrentDayRoomId(roomId); - - } else { - resetCurrentDayRoomId(roomId); - } - - return false; - } - - private void resetCurrentDayRoomId(long roomId) { - long currentDay = System.currentTimeMillis() / 1000 / 60 / 60 / 24; - String ids = String.valueOf(currentDay) + "," + String.valueOf(roomId); - SharedPreferenceUtils.put(IMNetEaseManager.ROOM_ENTER_DAY + AuthModel.get().getCurrentUid(), ids); - } -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java deleted file mode 100644 index 551145a13..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/manager/RtcEngineManager.java +++ /dev/null @@ -1,679 +0,0 @@ -package com.yizhuan.xchat_android_core.manager; - -import android.annotation.SuppressLint; -import android.os.Environment; -import android.os.Handler; -import android.os.Message; -import androidx.annotation.Nullable; -import android.text.TextUtils; -import android.util.Log; - -import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; -import com.yizhuan.xchat_android_constants.XChatConstants; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.room.bean.RoomInfo; -import com.yizhuan.xchat_android_core.room.ktv.event.RemoteVideoEvent; -import com.yizhuan.xchat_android_core.statistic.LogFactory; -import com.yizhuan.xchat_android_core.statistic.StatisticManager; -import com.yizhuan.xchat_android_core.statistic.protocol.LogProtocol; -import com.yizhuan.xchat_android_library.rxbus.RxBus; -import com.yizhuan.xchat_android_library.utils.SingleToastUtil; -import com.yizhuan.xchat_android_library.utils.config.BasicConfig; - -import java.io.File; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import io.agora.ktvkit.IKTVKitEventHandler; -import io.agora.ktvkit.KTVKit; -import io.agora.rtc.Constants; -import io.agora.rtc.IRtcEngineEventHandler; -import io.agora.rtc.RtcEngine; -import io.agora.rtc.video.VideoCanvas; - -import static io.agora.rtc.Constants.AUDIO_PROFILE_DEFAULT; -import static io.agora.rtc.Constants.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO; -import static io.agora.rtc.Constants.AUDIO_PROFILE_SPEECH_STANDARD; -import static io.agora.rtc.Constants.AUDIO_RECORDING_QUALITY_LOW; -import static io.agora.rtc.Constants.AUDIO_SCENARIO_GAME_STREAMING; - -/** - *

声网管理类

- * - * @author jiahui - * @date 2017/12/12 - */ -public final class RtcEngineManager { - private static volatile RtcEngineManager sEngineManager; - private static final Object SYNC_OBJECT = new Object(); - @Nullable - private RtcEngine mRtcEngine; - private Map speakers; - /** - * 说话列表 - */ - private List speakMembersPosition; - /** - * 队列说话列表 - */ - private List speakQueueMembersPosition; - private String uid; - public boolean isAudienceRole; - /** - * 麦上是否闭麦,true:闭麦,false:开麦 - */ - public boolean isMute; - /** - * 听筒是否关闭 - */ - public boolean isRemoteMute; - private boolean needRecord; - //是否在房间,判断是切换品质还是第一次进 - private boolean inRoom; - private EngineEventHandler eventHandler; - - private static final class Helper { - private static final RtcEngineManager INSTANCE = new RtcEngineManager(); - } - - private RtcEngineManager() { - System.out.println("hehehehe" + RtcEngine.getSdkVersion()); - speakMembersPosition = new ArrayList<>(); - speakQueueMembersPosition = new ArrayList<>(); - } - - public static RtcEngineManager get() { - return Helper.INSTANCE; - } - - public void startRtcEngine(long uid) { - RoomInfo curRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo; -// if (curRoomInfo.getAudioQuality() == RoomInfo.ROOMTYPE_LIGHT_CHAT) { -// joinHighQualityChannel(curRoomInfo.getRoomId(), uid,true); -// } else { - joinChannel(curRoomInfo.getRoomId(), uid); - // } - if (curRoomInfo.getUid() == uid && curRoomInfo.getType() != RoomInfo.ROOMTYPE_HOME_PARTY) { - //设置用户角色为主播,轰趴房不能默认设置房主为主播 - setRole(Constants.CLIENT_ROLE_BROADCASTER); - } else { - setRole(Constants.CLIENT_ROLE_AUDIENCE); - } - } - - public void joinChannel(long channelId, long uid) { - initRtcEngine(channelId, uid, AUDIO_PROFILE_DEFAULT, AUDIO_PROFILE_SPEECH_STANDARD); - } - - public void joinHighQualityChannel(long channelId, long uid, boolean record) { - this.needRecord = record; - initRtcEngine(channelId, uid, AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO, AUDIO_SCENARIO_GAME_STREAMING); - } - - public void reJoinChannel(long channelId, long uid) { - enterChannel(channelId, (int) uid, AUDIO_PROFILE_DEFAULT, AUDIO_PROFILE_SPEECH_STANDARD); - setRemoteMute(isRemoteMute); - setMute(isMute); - } - - public void reJoinHighQualityChannel(long channelId, long uid, boolean record) { - this.needRecord = record; - enterChannel(channelId, (int) uid, AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO, AUDIO_SCENARIO_GAME_STREAMING); - setRemoteMute(isRemoteMute); - setMute(isMute); - } - - private void initRtcEngine(long channelId, long uid, int quality, int audioShowRoom) { - this.uid = uid + ""; - this.isMute = false; - this.isRemoteMute = false; - enterChannel(channelId, (int) uid, quality, audioShowRoom); - } - - private void enterChannel(long channelId, int uid, int quality, int audioShowRoom) { - if (mRtcEngine == null) { - try { - eventHandler = new EngineEventHandler(this); - mRtcEngine = RtcEngine.create(BasicConfig.INSTANCE.getAppContext(), XChatConstants.AGORA_KEY, eventHandler); - } catch (Exception e) { - throw new RuntimeException("NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e)); - } - //设置频道模式为直播 - mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING); - mRtcEngine.setAudioProfile(quality, audioShowRoom); - mRtcEngine.enableAudioVolumeIndication(600, 3); - mRtcEngine.setDefaultAudioRoutetoSpeakerphone(true); - mRtcEngine.setExternalVideoSource(true, false, true); - mRtcEngine.setRecordingAudioFrameParameters(48000, 2, 2, 960); - mRtcEngine.setVideoProfile(Constants.VIDEO_PROFILE_360P, false); - mRtcEngine.enableDualStreamMode(true); - mRtcEngine.setParameters(String.format(Locale.US, "{\"che.audio.profile\":{\"scenario\":%d}}", 1)); - mRtcEngine.setParameters(String.format(Locale.US, "{\"che.audio.headset.monitoring,true\"}")); - mRtcEngine.setParameters(String.format(Locale.US, "{\"che.audio.enable.androidlowlatencymode,true\"}")); - mRtcEngine.setLogFile(Environment.getExternalStorageDirectory() - + File.separator + BasicConfig.INSTANCE.getAppContext().getPackageName() + "/log/agora-rtc.log"); - } - //创建并加入频道 - mRtcEngine.joinChannel(null, String.valueOf(channelId), null, uid); - } - - - public int stopAudioMixing() { - if (mRtcEngine != null) { - return mRtcEngine.stopAudioMixing(); - } - return -1; - } - - public void resetChannel() { - if (mRtcEngine != null) { - stopAudioMixing(); - mRtcEngine.leaveChannel(); - mRtcEngine = null; - } - if (handler != null) - handler.removeCallbacksAndMessages(null); - } - - public void leaveChannel() { - if (mRtcEngine != null) { - stopAudioMixing(); - mRtcEngine.leaveChannel(); - mRtcEngine = null; - } - if (handler != null) - handler.removeCallbacksAndMessages(null); -// isAudienceRole = true; - isMute = false; - isRemoteMute = false; - needRecord = false; - inRoom = false; - } - - public boolean isSpeaking(int position) { - if (speakMembersPosition != null) { - if (speakMembersPosition.contains(position)) { - return true; - } - } - return false; - } - - public boolean isQueueSpeaking(int position) { - if (speakQueueMembersPosition != null) { - if (speakQueueMembersPosition.contains(position)) { - return true; - } - } - return false; - } - - //设置静音 - public void setRemoteMute(boolean mute) { - if (mRtcEngine != null) { - int result = mRtcEngine.muteAllRemoteAudioStreams(mute); - if (result == 0) { - isRemoteMute = mute; - } - } - } - - public void setRemoteMute(int uid, boolean mute) { - if (mRtcEngine != null) { - mRtcEngine.muteRemoteAudioStream(uid, mute); - } - } - - public void setRemoteMute(ChatRoomMember chatRoomMember, boolean mute) { - if (chatRoomMember != null && !TextUtils.isEmpty(chatRoomMember.getAccount())) { - String account = chatRoomMember.getAccount(); - Integer uid = Integer.valueOf(account); - if (uid != 0) - RtcEngineManager.get().setRemoteMute(uid, false); - } - } - - /** - * 设置角色,上麦,下麦(调用) - * - * @param role CLIENT_ROLE_AUDIENCE: 听众 ,CLIENT_ROLE_BROADCASTER: 主播 - */ - public void setRole(int role) { - if (mRtcEngine != null) { - //先已是否静音为准 - mRtcEngine.setClientRole(role); - //isAudienceRole = role != Constants.CLIENT_ROLE_BROADCASTER; - } - } - - /** - * 设置是否能说话,静音,人自己的行为 - * - * @param mute true:静音,false:不静音 - */ - @SuppressLint("CheckResult") - public void setMute(boolean mute) { - if (mRtcEngine != null) { - int result = mRtcEngine.muteLocalAudioStream(mute); - if (result == 0) { - isMute = mute; - } - } - } - - private Handler handler = new RtcEngineHandler(this); - - private static class RtcEngineHandler extends Handler { - private WeakReference mReference; - - RtcEngineHandler(RtcEngineManager manager) { - mReference = new WeakReference<>(manager); - } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - RtcEngineManager rtcEngineManager = mReference.get(); - if (rtcEngineManager == null) return; - if (msg.what == 0) { - if (!RtcEngineManager.get().inRoom) { - IMNetEaseManager.get().joinAvRoom(); - } - - RtcEngineManager.get().inRoom = true; - if (rtcEngineManager.needRecord && rtcEngineManager.mRtcEngine != null) { - rtcEngineManager.mRtcEngine.startAudioRecording(Environment.getExternalStorageDirectory() - + File.separator + BasicConfig.INSTANCE.getAppContext().getPackageName() - + "/audio/" + System.currentTimeMillis() + ".aac", AUDIO_RECORDING_QUALITY_LOW); - } - - } else if (msg.what == 1) {//onAudioVolumeIndication 说话声音音量提示回调 - IRtcEngineEventHandler.AudioVolumeInfo[] speakers = (IRtcEngineEventHandler.AudioVolumeInfo[]) msg.obj; - RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; - if (roomInfo == null) return; - if (rtcEngineManager.speakQueueMembersPosition.size() > 0) { - rtcEngineManager.speakQueueMembersPosition.clear(); - } - if (speakers == null || speakers.length == 0) return; - for (IRtcEngineEventHandler.AudioVolumeInfo speaker : speakers) { - // 0 代表的是房主,其他代表的是uid - int uid = speaker.uid == 0 ? Integer.valueOf(rtcEngineManager.uid) : speaker.uid; - int micPosition = AvRoomDataManager.get().getMicPosition(uid); - // 如果是房主的话,并且房主的mic位置没有的啊,则把房主的位置设置为-1(兼容ios轻聊房光晕) - if (uid == AvRoomDataManager.get().mCurrentRoomInfo.getUid() && - AvRoomDataManager.get().mCurrentRoomInfo.getType() == RoomInfo.ROOMTYPE_LIGHT_CHAT - && micPosition == Integer.MIN_VALUE) { - micPosition = -1; - } - if (micPosition == Integer.MIN_VALUE && - uid == AuthModel.get().getCurrentUid()) { - // 如果麦上没有自己,并且自己在说话,要把自己变成听众 - RtcEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE); - } else if (micPosition == Integer.MIN_VALUE && - uid != AuthModel.get().getCurrentUid()) { - // 如果麦上没有这个人,要把他静音 - RtcEngineManager.get().setRemoteMute(uid, true); - } - if (micPosition == Integer.MIN_VALUE) continue; - rtcEngineManager.speakQueueMembersPosition.add(micPosition); - } - IMNetEaseManager.get().getChatRoomEventObservable().onNext( - new RoomEvent().setEvent(RoomEvent.SPEAK_STATE_CHANGE) - .setMicPositionList(rtcEngineManager.speakQueueMembersPosition) - ); - } else if (msg.what == 2) {//onUserMuteAudio 用户静音回调 - Integer uid = (Integer) msg.obj; - } - } - } - - private static class EngineEventHandler extends IRtcEngineEventHandler { - private WeakReference mReference; - private boolean isEnter; - - EngineEventHandler(RtcEngineManager manager) { - mReference = new WeakReference<>(manager); - isEnter = true; - } - - @Override - public void onJoinChannelSuccess(String channel, int uid, int elapsed) { - super.onJoinChannelSuccess(channel, uid, elapsed); - - //声网进入频道成功日志 - StatisticManager.Instance().sendAliyunLog(LogFactory.create( - LogProtocol.LogLevel.LEVEL_VERBOSE, - LogProtocol.Topic.TOPIC_AUDIO_LOG, - LogProtocol.Event.EVENT_AUDIO_CHANNEL - ) - .append("uid", String.valueOf(AuthModel.get().getCurrentUid())) - .append("type", "1") - .append("room_id", channel)); - if (mReference.get() != null && isEnter) { - isEnter = false; - mReference.get().handler.sendEmptyMessage(0); - } - } - - - @Override - public void onRejoinChannelSuccess(String channel, int uid, int elapsed) { - super.onRejoinChannelSuccess(channel, uid, elapsed); - //声网重新链接频道成功日志 - StatisticManager.Instance().sendAliyunLog(LogFactory.create( - LogProtocol.LogLevel.LEVEL_VERBOSE, - LogProtocol.Topic.TOPIC_AUDIO_LOG, - LogProtocol.Event.EVENT_AUDIO_CHANNEL - ) - .append("uid", String.valueOf(AuthModel.get().getCurrentUid())) - .append("type", "3") - .append("room_id", channel)); - - } - - @Override - public void onLeaveChannel(RtcStats stats) { - super.onLeaveChannel(stats); - //声网离开频道成功日志 - StatisticManager.Instance().sendAliyunLog(LogFactory.create( - LogProtocol.LogLevel.LEVEL_VERBOSE, - LogProtocol.Topic.TOPIC_AUDIO_LOG, - LogProtocol.Event.EVENT_AUDIO_CHANNEL - ) - .append("uid", String.valueOf(AuthModel.get().getCurrentUid())) - .append("type", "2")); - } - - @Override - public void onUserJoined(int uid, int elapsed) { - super.onUserJoined(uid, elapsed); - } - - @Override - public void onActiveSpeaker(int uid) { - super.onActiveSpeaker(uid); - } - - @Override - public void onLastmileQuality(int quality) { - super.onLastmileQuality(quality); - if (quality >= 3) { - IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_BAD) - ); - } - } - - @Override - public void onConnectionInterrupted() { - super.onConnectionInterrupted(); - IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_CLOSE)); - } - - @Override - public void onConnectionLost() { - super.onConnectionLost(); - IMNetEaseManager.postRoomEvent(new RoomEvent().setEvent(RoomEvent.RTC_ENGINE_NETWORK_CLOSE)); - } - - @Override - public void onAudioVolumeIndication(AudioVolumeInfo[] speakers, int totalVolume) { - super.onAudioVolumeIndication(speakers, totalVolume); - RtcEngineManager manager = mReference.get(); - if (manager != null) { - Message message = manager.handler.obtainMessage(); - message.what = 1; - message.obj = speakers; - manager.handler.sendMessage(message); - } - } - - @Override - public void onUserMuteAudio(int uid, boolean muted) { - super.onUserMuteAudio(uid, muted); - RtcEngineManager manager = mReference.get(); - if (manager != null) { - if (muted) { - Message message = manager.handler.obtainMessage(); - message.what = 2; - message.obj = uid; - manager.handler.sendMessage(message); - } - } - } - - @Override - public void onClientRoleChanged(int oldRole, int newRole) { - super.onClientRoleChanged(oldRole, newRole); - if (newRole==1) - get().setMute(get().isMute); - } - - @Override - public void onAudioMixingFinished() {//伴奏播放已结束回调 - super.onAudioMixingFinished(); - IMNetEaseManager.get().getChatRoomEventObservable().onNext( - new RoomEvent().setEvent(RoomEvent.METHOD_ON_AUDIO_MIXING_FINISHED) - ); - } - - @Override - public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) { - RxBus.get().post(new RemoteVideoEvent(uid)); - get().remoteUid = uid; - } - } - - //音乐播放相关---------------begin-------------------------- - - public void adjustAudioMixingVolume(int volume) { - if (mRtcEngine != null) { - mRtcEngine.adjustAudioMixingVolume(volume); - } - } - - public void adjustRecordingSignalVolume(int volume) { - if (mRtcEngine != null) { - mRtcEngine.adjustRecordingSignalVolume(volume); - } - } - - public int resumeAudioMixing() { - if (mRtcEngine != null) { - int result = mRtcEngine.resumeAudioMixing(); - return result; - } - return -1; - } - - public int pauseAudioMixing() { - if (mRtcEngine != null) { - int result = mRtcEngine.pauseAudioMixing(); - return result; - } - return -1; - } - - - public int startAudioMixing(String filePath, boolean loopback, int cycle) { - if (mRtcEngine != null) { - mRtcEngine.stopAudioMixing(); - int result = 0; - try { - result = mRtcEngine.startAudioMixing(filePath, loopback, false, cycle); - } catch (Exception e) { - return -1; - } - return result; - } - return -1; - } - - public int getAudioMixingCurrentPosition() { - return mRtcEngine.getAudioMixingCurrentPosition(); - } - - public int getAudioMixingDuration() { - return mRtcEngine.getAudioMixingDuration(); - } - //音乐播放相关---------------end-------------------------- - - - //ktv相关---------------begin-------------------------- - private boolean isPlaying; - private boolean isAccompany = true; - private boolean isPush; - private boolean isOpenKtv; - private boolean isLive; - private int remoteUid; - private double accompanyVoice = 0.5; - private double personVoice = 0.5; - @Nullable - private KTVKit ktvKit; - - public synchronized void openKtvModel() { - if (mRtcEngine == null || isOpenKtv) return; - try { - ktvKit = KTVKit.create(mRtcEngine, BasicConfig.INSTANCE.getAppContext(), new IKTVKitEventHandler() { - @Override - public void onPlayerError(int error) { - SingleToastUtil.showToast("MV播放出现未知错误,可以点击报错向我们反馈哦~~"); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - mRtcEngine.enableVideo(); - mRtcEngine.enableLocalVideo(false); - isOpenKtv = true; - } - - public synchronized void closeKtvModel() { - if (!isOpenKtv) return; - stopPush(); - isPlaying = false; - isOpenKtv = false; - isLive = false; - if (mRtcEngine != null) { - mRtcEngine.disableVideo(); - } - if (ktvKit != null) { - KTVKit.destroy(); - ktvKit = null; - } - } - - public void stopPush() { - if (isPush){ - isPush = false; - if (mRtcEngine != null) { - mRtcEngine.muteLocalVideoStream(true); - mRtcEngine.enableLocalVideo(false); - // mRtcEngine.enableInEarMonitoring(false); - } - if (ktvKit != null) ktvKit.stopPlayVideoFile(); - } - } - - public synchronized void startMv(String url) { - if (ktvKit == null || mRtcEngine == null || !isOpenKtv || !AvRoomDataManager.get().isOwnerOnMic()) - return; - mRtcEngine.enableLocalVideo(true); - //mRtcEngine.enableInEarMonitoring(true); - mRtcEngine.muteLocalVideoStream(false); - ktvKit.openAndPlayVideoFile(url); - setAccompanyVoice(accompanyVoice); - setPersonVoice(personVoice); - isPlaying = true; - isPush = true; - isLive = true; - } - - public synchronized void setupRemoteVideo(VideoCanvas canvas, int remoteUid) { - if (mRtcEngine != null && isOpenKtv) { - isPlaying = true; - isLive = true; - mRtcEngine.setupRemoteVideo(canvas); - } - } - - - public void playOrPause() { - if (ktvKit != null) ktvKit.pause(); - isPlaying = !isPlaying; - } - - public void changeAudioStream() { - if (ktvKit != null) ktvKit.switchAudioTrack(); - isAccompany = !isAccompany; - } - - public void setAccompanyVoice(double progress) { - if (progress < 0 || progress > 1) { - return; - } - accompanyVoice = progress; - if (ktvKit != null) ktvKit.adjustAccompanyVolume(progress); - } - - public void setPersonVoice(double progress) { - if (progress < 0 || progress > 1) { - return; - } - personVoice = progress; - if (ktvKit != null) ktvKit.adjustVoiceVolume(personVoice); - } - - public boolean isPlaying() { - return isPlaying; - } - - public boolean isPush() { - return isPush; - } - - public boolean isAccompany() { - return isAccompany; - } - - public boolean isOpenKtv() { - return isOpenKtv; - } - - public boolean isLive() { - return isLive; - } - - public void setLive(boolean live) { - isLive = live; - } - - public int getRemoteUid() { - return remoteUid; - } - - public double getAccompanyVoice() { - return accompanyVoice; - } - - public double getPersonVoice() { - return personVoice; - } - - @Nullable - public KTVKit getKtvKit() { - return ktvKit; - } - - public double getPlayPos() { - return ktvKit == null ? 0 : ktvKit.getCurrentPosition(); - } - - public int getPlayDuration() { - return ktvKit == null ? 0 : ktvKit.getDuration(); - } - - //ktv相关---------------end-------------------------- -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/IVersionModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/IVersionModel.java deleted file mode 100644 index 02aa58f48..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/IVersionModel.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.yizhuan.xchat_android_core.version; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.bean.VersionInfo; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; - -import io.reactivex.Single; -import retrofit2.http.Query; - -/** - * create by lvzebiao on 2018/9/14 - */ -public interface IVersionModel extends IModel{ - - Single getVersion(@Query("version") String version); - -} diff --git a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/VersionModel.java b/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/VersionModel.java deleted file mode 100644 index 1b5f947cd..000000000 --- a/core/src/diff_src_haha/java/com/yizhuan/xchat_android_core/version/VersionModel.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.yizhuan.xchat_android_core.version; - -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.VersionInfo; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import io.reactivex.Single; -import retrofit2.http.GET; -import retrofit2.http.Query; - -/** - * create by lvzebiao on 2018/9/14 - */ -public class VersionModel extends BaseModel implements IVersionModel{ - - private Api api; - - public VersionModel() { - api = RxNet.create(Api.class); - } - - @Override - public Single getVersion(String version) { - return api.getVersion(version) - .compose(RxHelper.handleBeanData()) - .compose(RxHelper.handleSchedulers()); - } - - private interface Api { - /** - *版本 - */ - @GET("version/get") - Single> getVersion(@Query("version") String version); - } - -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/UriProvider.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/UriProvider.java deleted file mode 100644 index 53976ee15..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/UriProvider.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.yizhuan.xchat_android_core; - -import android.text.TextUtils; - -import com.yizhuan.xchat_android_library.utils.config.BasicConfig; -import com.yizhuan.xchat_android_library.utils.pref.CommonPref; - -/** - * 请求接口接口地址 - */ -public class UriProvider { - - public static void init(Env.UriSetting uriSetting, String url) { - if (uriSetting == Env.UriSetting.Product) { - //生产环境地址 - initProductUri(url); - } else if (uriSetting == Env.UriSetting.Test) { - //测试环境地址 - initTestUri(url); - } - } - - private static String DEBUG_URL; - - public static void initDevUri(String url) { - DEBUG_URL = url; - JAVA_WEB_URL = url; - IM_SERVER_URL = url; - } - - private static void initProductUri(String url) { - JAVA_WEB_URL = url; - IM_SERVER_URL = url; - } - - - private static void initTestUri(String url) { - int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt("enviroment"); - if (enviroment == 0) { - initProductUri(url);//其他使用DEV的配置,就神曲这个跟新一下 - } else { - if (!TextUtils.isEmpty(DEBUG_URL)) - initDevUri(DEBUG_URL); - else - initDevUri(url); - } - } - - /** - * 默认以下生产环境地址 - */ - public static String JAVA_WEB_URL = "http://www.daxiaomao.com"; - public static String IM_SERVER_URL = "https://www.daxiaomao.com"; - - public static String getGroupResourceBaseUri() { - return JAVA_WEB_URL.concat("/app/service/resource/list"); - } - - - /** - * - * @return - */ - public static String getLotteryActivityPage() { - return IM_SERVER_URL.concat("/ms/modules/userDraw/index.html"); - } - - /** - * 贵族订单页面 - * - * @return - - */ - public static String getNobleOrderPage() { - return IM_SERVER_URL.concat("/modules/noble/order.html"); - } - - /** - * 获取房间背景(有动效) - * - * @return - - */ - public static String getRoomBg() { - return IM_SERVER_URL.concat("/modules/noble/roomBgList.html"); - } - - /** - * 获取贵族推荐页面 - * - * @return - - */ - public static String getNobleIntroducePage() { - return IM_SERVER_URL.concat("/modules/noble/intro.html"); - } - - /** - * 获取贵族个人管理页面 - * - * @return - - */ - public static String getNobleHomePage() { - return IM_SERVER_URL.concat("/modules/noble/homepage.html"); - } - - /** 贵族介绍页 */ - public static String getNobleIntro() { - return "modules/noble/intro.html"; - } - - /** 等级界面 */ - public static String getUserLevelUrl() { - return "modules/level/levelExper.html"; - } - /** 等级界面 */ - public static String getUserCUrl() { - return "modules/level/levelCharm.html"; - } - - - - - /** - * 耳伴头条 http://beta.erbanyy.com/modules/headNews/index.html - * @return - */ - public static String getErbanTopMessageUrl() { - return JAVA_WEB_URL.concat("/modules/headNews/index.html"); - } - - /** - * 创建家族 - * @return - */ - public static String getCreateFamilyUrl() { - return JAVA_WEB_URL.concat("/ms/modules/family/create.html"); - } - - /** - * 家族指南 - * @return - */ - public static String getFamilyInstructionUrl() { - return JAVA_WEB_URL.concat("/ms/modules/family/handbook.html"); - } - - /** - * 家族币获取帮助 - * @return - */ - public static String getFamilyCurrencyHelpUrl() { - return JAVA_WEB_URL.concat("/ms/modules/family/faq.html"); - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/FindModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/FindModel.java deleted file mode 100644 index 7d2f816f5..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/FindModel.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.yizhuan.xchat_android_core.find; - -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.home.bean.FindInfo; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import java.util.List; - -import io.reactivex.Single; -import retrofit2.http.GET; - -public class FindModel extends BaseModel implements IFindModel { - - private Api api; - - private FindModel() { - api = RxNet.create(Api.class); - } - - public static FindModel get() { - return FindModelHolder.instance; - } - - private static class FindModelHolder { - private static FindModel instance = new FindModel(); - } - - @Override - public Single>> getFindInfo() { - return api.getFindInfo() - .compose(RxHelper.handleSchedulers()); - } - - interface Api { - - /** - * 获取发现页广告位的列表 - * @return - */ - @GET("advertise/getList") - Single>> getFindInfo(); - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/IFindModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/IFindModel.java deleted file mode 100644 index d9ec8faa0..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/find/IFindModel.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.yizhuan.xchat_android_core.find; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.home.bean.FindInfo; - -import java.util.List; - -import io.reactivex.Single; - -public interface IFindModel extends IModel { - - /** - * 发现页广告位列表 - * @return - */ - Single>> getFindInfo(); -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/HomeModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/HomeModel.java deleted file mode 100644 index 241009122..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/HomeModel.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.yizhuan.xchat_android_core.home; - -import com.orhanobut.logger.Logger; -import com.yizhuan.xchat_android_core.auth.AuthModel; -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.home.bean.HomeInfo; -import com.yizhuan.xchat_android_core.home.bean.HomeRoom; -import com.yizhuan.xchat_android_core.home.bean.TabInfo; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import java.util.ArrayList; -import java.util.List; - -import io.reactivex.Single; -import io.reactivex.SingleSource; -import io.reactivex.functions.Consumer; -import io.reactivex.functions.Function; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Query; - -public class HomeModel extends BaseModel implements IHomeModel { - private volatile static IHomeModel instance; - private Api api; - - private List mTabInfoList; - - public static IHomeModel get() { - if (instance == null){ - synchronized (HomeModel.class){ - if (instance == null){ - instance = new HomeModel(); - } - } - } - return instance; - } - - private HomeModel(){ - api = RxNet.create(Api.class); - } - - /** - * 获取缓存的房间分类数据 - * @return - */ - @Override - public List getmTabInfoList() { - return mTabInfoList; - } - - - /** - * 获取首页Tab失败 - * @return - */ - @Override - public Single> getMainTabData() { - return api.getMainTabList() - .compose(RxHelper.handleSchedulers()) - .compose(RxHelper.handleBeanData()) - .doOnSuccess(new Consumer>() { - @Override - public void accept(List tabInfos) throws Exception { - mTabInfoList = tabInfos; - } - }) - .doOnError(new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - Logger.e("获取首页Tab失败......"); - } - }); - - } - - /** - * 获取首页数据 - * @param page - * @param pageSize - * @return - */ - @Override - public Single getHomeData(final int page, int pageSize) { - return api.getMainHotData( - String.valueOf(AuthModel.get().getCurrentUid()), - String.valueOf(page), - String.valueOf(pageSize) - ) - .compose(RxHelper.handleBeanData()) - .compose(RxHelper.handleSchedulers()); - - } - - /** - * 反馈 - * @param feedbackDesc - * @param contact - * @return - */ - @Override - public Single commitFeedback(String feedbackDesc, String contact) { - return api.commitFeedback( - String.valueOf(AuthModel.get().getCurrentUid()), - feedbackDesc, - contact, - AuthModel.get().getTicket() - ) - .flatMap(new Function>() { - @Override - public SingleSource apply(ServiceResult serviceResult) throws Exception { - if (serviceResult.isSuccess()) { - return Single.just("反馈成功"); - } else { - return Single.error(new Throwable(serviceResult.getMessage())); - } - } - }) - .compose(RxHelper.handleSchedulers()); - - } - - /** - * 根据分类 获取房间列表 - * @param tagId - * @param pageNum - * @param pageSize - */ - @Override - public Single> getMainDataByTab(final int tagId, final int pageNum, int pageSize) { - return api.getMainDataByTab( - String.valueOf(tagId), - String.valueOf(pageNum), - String.valueOf(pageSize) - ) - .flatMap(new Function>, SingleSource>>() { - @Override - public SingleSource> apply(ServiceResult> listServiceResult) throws Exception { - if (listServiceResult.isSuccess()){ - if (listServiceResult.getData() == null){ - return Single.just(new ArrayList()); - } - return Single.just(listServiceResult.getData()); - }else { - return Single.error(new Throwable(listServiceResult.getMessage())); - } - } - }) - .compose(RxHelper.handleSchedulers()); - - } - - - private interface Api{ - /** - * 获取首页热门数据 - * - * @param uid - * @param pageNum - * @param pageSize - * @return - */ - @GET("/home/v2/hotindex") - Single> getMainHotData(@Query("uid") String uid, - @Query("pageNum") String pageNum, - @Query("pageSize") String pageSize); - - /** - * 提交反馈 - * - * @param uid - * @param feedbackDesc - * @param contact - * @param ticket - * @return - */ - @POST("/feedback") - Single commitFeedback(@Query("uid") String uid, - @Query("feedbackDesc") String feedbackDesc, - @Query("contact") String contact, - @Query("ticket") String ticket); - - - /** - * 获取首页tab数据 - * - * @return - */ - @GET("/room/tag/top") - Single>> getMainTabList(); - - /** - * 获取 - * @param tagId - * @param pageNum - * @param pageSize - * @return - */ - @POST("home/v2/tagindex") - Single>> getMainDataByTab(@Query("tagId") String tagId, - @Query("pageNum") String pageNum, - @Query("pageSize") String pageSize); - - } - -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/IHomeModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/IHomeModel.java deleted file mode 100644 index 5d9d543a5..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/IHomeModel.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.yizhuan.xchat_android_core.home; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.home.bean.HomeInfo; -import com.yizhuan.xchat_android_core.home.bean.HomeRoom; -import com.yizhuan.xchat_android_core.home.bean.TabInfo; - -import java.util.List; - -import io.reactivex.Single; - -public interface IHomeModel extends IModel { - /** - * 获取缓存的房间分类数据 - * @return - */ - List getmTabInfoList(); - - /** - * 获取首页Tab失败 - * @return - */ - Single> getMainTabData(); - - /** - * 获取首页数据 - * @param page - * @param pageSize - * @return - */ - Single getHomeData(int page, int pageSize); - - /** - * 反馈 - * @param feedbackDesc - * @param contact - * @return - */ - Single commitFeedback( String feedbackDesc, String contact); - - /** - * 根据分类 获取房间列表 - * @param tagId - * @param pageNum - * @param pageSize - */ - Single> getMainDataByTab(int tagId, int pageNum, int pageSize); -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java deleted file mode 100644 index abfe5cd6d..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/BannerInfo.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import lombok.Data; - -/** - * Created by Administrator on 2017/8/7. - */ -@Data -public class BannerInfo implements Parcelable { - /* - bannerId:1 //id - bannerName: xx//横幅广告名称 - bannerPic:xx //横幅图片 - skipType:xx // 1跳app页面,2跳聊天室,3跳h5页面 - displayType //1顶部banner 2底部banner - skipUri:xx //跳转uri - */ - private int bannerId; - private String bannerName; - private String bannerPic; - private int skipType; - private int displayType; - private String skipUri; - - @Override - public String toString() { - return "BannerInfo{" + - "bannerId=" + bannerId + - ", bannerName='" + bannerName + '\'' + - ", bannerPic='" + bannerPic + '\'' + - ", skipType=" + skipType + - ", skipUri='" + skipUri + '\'' + - '}'; - } - - protected BannerInfo(Parcel in) { - bannerId = in.readInt(); - bannerName = in.readString(); - bannerPic = in.readString(); - skipType = in.readInt(); - skipUri = in.readString(); - displayType = in.readInt(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(bannerId); - dest.writeString(bannerName); - dest.writeString(bannerPic); - dest.writeInt(skipType); - dest.writeString(skipUri); - dest.writeInt(displayType); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public BannerInfo createFromParcel(Parcel in) { - return new BannerInfo(in); - } - - @Override - public BannerInfo[] newArray(int size) { - return new BannerInfo[size]; - } - }; - -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java deleted file mode 100644 index bb04f0d59..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/FindInfo.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -/** - * Created by huangmeng1 on 2018/1/31. - */ - -public class FindInfo { - /** - * advName : 测试啊 - * advIcon : http://img.letusmix.com/FvbRJRJgufTpntjatyfL8xx1yBQ5?imageslim - * skipType : 3 - * skipUri : www.baidu.com - */ - - private String advName; - private String advIcon; - private int skipType; - private String skipUri; - - @Override - public String toString() { - return "FindInfo{" + - "advName='" + advName + '\'' + - ", advIcon='" + advIcon + '\'' + - ", skipType=" + skipType + - ", skipUri='" + skipUri + '\'' + - '}'; - } - - public String getAdvName() { - return advName; - } - - public void setAdvName(String advName) { - this.advName = advName; - } - - public String getAdvIcon() { - return advIcon; - } - - public void setAdvIcon(String advIcon) { - this.advIcon = advIcon; - } - - public int getSkipType() { - return skipType; - } - - public void setSkipType(int skipType) { - this.skipType = skipType; - } - - public String getSkipUri() { - return skipUri; - } - - public void setSkipUri(String skipUri) { - this.skipUri = skipUri; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java deleted file mode 100644 index 4fcda7b60..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import java.util.List; - -/** - *

首页数据

- * - * @author Administrator - * @date 2017/11/22 - */ -public class HomeInfo { - public List banners; - /** 排行数据 */ - public RankingInfo rankHome; - /** 热门推荐 */ - public List hotRooms; - /** 房间推荐 */ - public List listRoom; - - @Override - public String toString() { - return "HomeInfo{" + - "banners=" + banners + - ", rankHome=" + rankHome + - ", hotRooms=" + hotRooms + - ", listRoom=" + listRoom + - '}'; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java deleted file mode 100644 index ce3ce390e..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeItem.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - - -import android.os.Parcel; -import android.os.Parcelable; - -import com.chad.library.adapter.base.entity.MultiItemEntity; - -import java.util.List; - -/** - *

首页热门实体u

- * - * @author Administrator - * @date 2017/11/16 - */ -public class HomeItem implements MultiItemEntity, Parcelable { - - public static final int BANNER = 1; - public static final int RANKING = 2; - public static final int RECOMMEND = 3; - public static final int NORMAL = 4; - - - private int itemType; - - //正常数据 - public List recomList; - public List homeItemRoomList; - public List bannerInfoList; - public RankingInfo mRankingInfo; - - - public HomeItem(int itemType) { - this.itemType = itemType; - } - - - public HomeItem(int itemType, RankingInfo rankingInfo) { - this.itemType = itemType; - mRankingInfo = rankingInfo; - } - - protected HomeItem(Parcel in) { - itemType = in.readInt(); - recomList = in.createTypedArrayList(HomeRoom.CREATOR); - homeItemRoomList = in.createTypedArrayList(HomeRoom.CREATOR); - bannerInfoList = in.createTypedArrayList(BannerInfo.CREATOR); - mRankingInfo = in.readParcelable(RankingInfo.class.getClassLoader()); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(itemType); - dest.writeTypedList(recomList); - dest.writeTypedList(homeItemRoomList); - dest.writeTypedList(bannerInfoList); - dest.writeParcelable(mRankingInfo, flags); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public HomeItem createFromParcel(Parcel in) { - return new HomeItem(in); - } - - @Override - public HomeItem[] newArray(int size) { - return new HomeItem[size]; - } - }; - - @Override - public int getItemType() { - return itemType; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java deleted file mode 100644 index 56dd421bf..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoom.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import com.chad.library.adapter.base.entity.MultiItemEntity; -import com.yizhuan.xchat_android_core.level.UserLevelVo; -import com.yizhuan.xchat_android_core.noble.NobleInfo; -import com.yizhuan.xchat_android_core.room.bean.RoomInfo; -import com.yizhuan.xchat_android_library.utils.ListUtils; - -import java.util.ArrayList; - -/** - * @author zhouxiangfeng - * @date 2017/5/17 - */ - -public class HomeRoom extends RoomInfo implements Parcelable, MultiItemEntity { - - public static final int BANNER = 1; - public static final int NORMAL = 2; - - //性别 1:男 2:女 0 :未知 - private int gender; - - private String nick; - //1普通账号,2官方账号,3机器账号 - private int defUser; - - private long erbanNo; - - //角标相关的 - public String badge; - - /** 是否是靓号,1:靓号 */ - public boolean hasPrettyErbanNo; - public NobleInfo nobleUsers; - public UserLevelVo userLevelVo; - public boolean newUser; - private ArrayList bannerInfos; - - public HomeRoom() { - } - - protected HomeRoom(Parcel in) { - super(in); - gender = in.readInt(); - nick = in.readString(); - defUser = in.readInt(); - erbanNo = in.readLong(); - badge = in.readString(); - hasPrettyErbanNo = in.readByte() != 0; - bannerInfos = in.createTypedArrayList(BannerInfo.CREATOR); - newUser = in.readByte() != 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeInt(gender); - dest.writeString(nick); - dest.writeInt(defUser); - dest.writeLong(erbanNo); - dest.writeString(badge); - dest.writeByte((byte) (hasPrettyErbanNo ? 1 : 0)); - dest.writeTypedList(bannerInfos); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public HomeRoom createFromParcel(Parcel in) { - return new HomeRoom(in); - } - - @Override - public HomeRoom[] newArray(int size) { - return new HomeRoom[size]; - } - }; - - public int getGender() { - return gender; - } - - public void setGender(int gender) { - this.gender = gender; - } - - - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getDefUser() { - return defUser; - } - - public void setDefUser(int defUser) { - this.defUser = defUser; - } - - public long getErbanNo() { - return erbanNo; - } - - public void setErbanNo(long erbanNo) { - this.erbanNo = erbanNo; - } - - public String getBadge() { - return badge; - } - - public void setBadge(String badge) { - this.badge = badge; - } - - public boolean isHasPrettyErbanNo() { - return hasPrettyErbanNo; - } - - public void setHasPrettyErbanNo(boolean hasPrettyErbanNo) { - this.hasPrettyErbanNo = hasPrettyErbanNo; - } - - public NobleInfo getNobleUsers() { - return nobleUsers; - } - - public void setNobleUsers(NobleInfo nobleUsers) { - this.nobleUsers = nobleUsers; - } - - public UserLevelVo getUserLevelVo() { - return userLevelVo; - } - - public void setUserLevelVo(UserLevelVo userLevelVo) { - this.userLevelVo = userLevelVo; - } - - public ArrayList getBannerInfos() { - return bannerInfos; - } - - public void setBannerInfos(ArrayList bannerInfos) { - this.bannerInfos = bannerInfos; - } - - @Override - public int getItemType() { - return ListUtils.isListEmpty(bannerInfos)?NORMAL:BANNER; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java deleted file mode 100644 index 2dfc71784..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomList.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import java.io.Serializable; -import java.util.List; - -/** - * Created by chenran on 2017/10/4. - */ - -public class HomeRoomList implements Serializable{ - private List recomRooms; - private List gameRooms; - private List chatRooms; - - public List getRecomRooms() { - return recomRooms; - } - - public void setRecomRooms(List recomRooms) { - this.recomRooms = recomRooms; - } - - public List getGameRooms() { - return gameRooms; - } - - public void setGameRooms(List gameRooms) { - this.gameRooms = gameRooms; - } - - public List getChatRooms() { - return chatRooms; - } - - public void setChatRooms(List chatRooms) { - this.chatRooms = chatRooms; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java deleted file mode 100644 index 6362e3493..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/RankingInfo.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import java.util.List; - -/** - *

首页排行信息

- * Created by Administrator on 2017/11/8. - */ -public class RankingInfo implements Parcelable { - - public List starList; - public List nobleList; - public List roomList; - - @Override - public String toString() { - return "RankingInfo{" + - "starList=" + starList + - ", nobleList=" + nobleList + - ", roomList=" + roomList + - '}'; - } - - public static class Ranking implements Parcelable { - @Override - public String toString() { - return "Ranking{" + - "erbanNo=" + erbanNo + - ", avatar='" + avatar + '\'' + - ", nick='" + nick + '\'' + - ", gender=" + gender + - ", totalNum=" + totalNum + - '}'; - } - - /** - * erbanNo : 850379 - * avatar : https://nos.netease.com/nim/NDI3OTA4NQ==/bmltYV83Nzg4MzQyNDJfMTUwNzIwMzM4NTc2N184YmJlZmQ4ZS01YzdiLTRmMWMtYmFhOC0xMWRlNzg3MzRlMzk= - * nick : 阿拉善 - * gender : 1 - * totalNum : 9988923 - */ - - private int erbanNo; - private String avatar; - private String nick; - private int gender; - private int totalNum; - - protected Ranking(Parcel in) { - erbanNo = in.readInt(); - avatar = in.readString(); - nick = in.readString(); - gender = in.readInt(); - totalNum = in.readInt(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(erbanNo); - dest.writeString(avatar); - dest.writeString(nick); - dest.writeInt(gender); - dest.writeInt(totalNum); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public Ranking createFromParcel(Parcel in) { - return new Ranking(in); - } - - @Override - public Ranking[] newArray(int size) { - return new Ranking[size]; - } - }; - - public int getErbanNo() { - return erbanNo; - } - - public void setErbanNo(int erbanNo) { - this.erbanNo = erbanNo; - } - - public String getAvatar() { - return avatar; - } - - public void setAvatar(String avatar) { - this.avatar = avatar; - } - - public String getNick() { - return nick; - } - - public void setNick(String nick) { - this.nick = nick; - } - - public int getGender() { - return gender; - } - - public void setGender(int gender) { - this.gender = gender; - } - - public int getTotalNum() { - return totalNum; - } - - public void setTotalNum(int totalNum) { - this.totalNum = totalNum; - } - } - - - protected RankingInfo(Parcel in) { - starList = in.createTypedArrayList(Ranking.CREATOR); - nobleList = in.createTypedArrayList(Ranking.CREATOR); - roomList = in.createTypedArrayList(Ranking.CREATOR); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeTypedList(starList); - dest.writeTypedList(nobleList); - dest.writeTypedList(roomList); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public RankingInfo createFromParcel(Parcel in) { - return new RankingInfo(in); - } - - @Override - public RankingInfo[] newArray(int size) { - return new RankingInfo[size]; - } - }; -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java deleted file mode 100644 index c16f84e41..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/home/bean/TabInfo.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.yizhuan.xchat_android_core.home.bean; - -import android.os.Parcel; -import android.os.Parcelable; - -import java.util.ArrayList; -import java.util.List; - -import lombok.Data; - -/** - *

tab 标签数据

- * - * @author Administrator - * @date 2017/11/21 - */ -@Data -public class TabInfo implements Parcelable { - - /** - * id : 8 - * name : 聊天 - * pict : https://image.zhongjialx.com/tag%E8%81%8A%E5%A4%A9.png - * seq : 3 - * type : 1 - * status : true - * istop : true - * createTime : 1511155717000 - */ - - private int id; - private String name; - private String pict; - private String icon; - private int seq; - private int type; - private boolean status; - private boolean istop; - private long createTime; - - public TabInfo(int id, String name) { - this.id = id; - this.name = name; - } - - public TabInfo(int id, String name,String icon) { - this(id, name); - this.icon=icon; - } - - - protected TabInfo(Parcel in) { - id = in.readInt(); - name = in.readString(); - pict = in.readString(); - seq = in.readInt(); - type = in.readInt(); - status = in.readByte() != 0; - istop = in.readByte() != 0; - createTime = in.readLong(); - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(id); - dest.writeString(name); - dest.writeString(pict); - dest.writeInt(seq); - dest.writeInt(type); - dest.writeByte((byte) (status ? 1 : 0)); - dest.writeByte((byte) (istop ? 1 : 0)); - dest.writeLong(createTime); - } - - @Override - public int describeContents() { - return 0; - } - - public static final Creator CREATOR = new Creator() { - @Override - public TabInfo createFromParcel(Parcel in) { - return new TabInfo(in); - } - - @Override - public TabInfo[] newArray(int size) { - return new TabInfo[size]; - } - }; - - - - public static List getMsTabDefaultList() { - List tabInfoList = new ArrayList<>(); - tabInfoList.add(new TabInfo(1, "新秀","https://img.letusmix.com/xinxiu_tag_icon.png")); - tabInfoList.add(new TabInfo(2, "遇见","https://img.letusmix.com/xiehou_tag_icon.png")); - tabInfoList.add(new TabInfo(3, "交友","https://img.letusmix.com/jiaoyou_tag_icon.png")); - tabInfoList.add(new TabInfo(4, "娱乐","https://img.letusmix.com/yule_tag_icon.png")); - tabInfoList.add(new TabInfo(5, "音乐","https://img.letusmix.com/yinyue_tag_icon.png")); - tabInfoList.add(new TabInfo(6, "电台","https://img.letusmix.com/diantai_tag_icon.png")); - return tabInfoList; - } - - - public static List getTabCheckVersion() { - List tabInfoList = new ArrayList<>(); - tabInfoList.add(new TabInfo(16, "邂逅","https://img.letusmix.com/xiehou_tag_icon.png")); - return tabInfoList; - } - - @Override - public String toString() { - return "TabInfo{" + - "name='" + name + '\'' + - '}'; - } -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/IVersionModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/IVersionModel.java deleted file mode 100644 index 02aa58f48..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/IVersionModel.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.yizhuan.xchat_android_core.version; - -import com.yizhuan.xchat_android_core.base.IModel; -import com.yizhuan.xchat_android_core.bean.VersionInfo; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; - -import io.reactivex.Single; -import retrofit2.http.Query; - -/** - * create by lvzebiao on 2018/9/14 - */ -public interface IVersionModel extends IModel{ - - Single getVersion(@Query("version") String version); - -} diff --git a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/VersionModel.java b/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/VersionModel.java deleted file mode 100644 index 29fdb5589..000000000 --- a/core/src/diff_src_mengsheng/java/com/yizhuan/xchat_android_core/version/VersionModel.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.yizhuan.xchat_android_core.version; - -import com.yizhuan.xchat_android_core.base.BaseModel; -import com.yizhuan.xchat_android_core.bean.VersionInfo; -import com.yizhuan.xchat_android_core.bean.response.ServiceResult; -import com.yizhuan.xchat_android_core.utils.net.RxHelper; -import com.yizhuan.xchat_android_library.net.rxnet.RxNet; - -import io.reactivex.Single; -import retrofit2.http.GET; -import retrofit2.http.Query; - -/** - * create by lvzebiao on 2018/9/14 - * updated by MadisonRong on 2018/9/26 - */ -public class VersionModel extends BaseModel implements IVersionModel{ - - private Api api; - - private VersionModel() { - api = RxNet.create(Api.class); - } - - public static VersionModel get() { - return VersionModelHolder.instance; - } - - private static class VersionModelHolder { - private static VersionModel instance = new VersionModel(); - } - - @Override - public Single getVersion(String version) { - return api.getVersion(version) - .compose(RxHelper.handleBeanData()) - .compose(RxHelper.handleSchedulers()); - } - - private interface Api { - /** - *版本 - */ - @GET("version/get") - Single> getVersion(@Query("version") String version); - } - -}