yuminge-app/yun-min-program-plugin-master/packageD/directSeeding/helperLiveRoom/helperLiveRoom.js

882 lines
24 KiB
JavaScript

// packageD/directSeeding/live_monitoring/live_monitoring.js
import TIM from "../../tim-wx-sdk/tim-wx";
var app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
language: "",
roomid: "",
show2: false,
show3: false,
taideRoom: "",
tim: "",
lasttime: "",
//消息列表
messageList: [],
messagesTop: 0,
active: 0,
now_goods: "",
speak: {
memberAvatar: "",
nickName: "",
index: "",
memberId: "",
},
shiftout: {
memberAvatar: "",
nickName: "",
index: "",
memberId: "",
},
chatBanList: [],
roomBanList: [],
//more
chatBanisLoadMore: true,
chatBanpage: 1,
chatBantotal_page: 0,
//more
roomBanisLoadMore: true,
roomBanpage: 1,
roomBantotal_page: 0,
liveBol: true,
video_url: "",
isLivePK: false,
livePKData:{},
livePKSrc:'',
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (options.roomid) {
this.setData({
roomid: options.roomid,
});
}
this.getsdkappid();
},
logout() {
let that = this;
let promise = that.data.tim.logout();
promise
.then(function (imResponse) {
console.log(imResponse.data); // 登出成功
})
.catch(function (imError) {
console.warn("logout error:", imError);
});
},
stopcomments(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
this.setData({
speak: {
memberAvatar: this.data.messageList[index].memberAvatar,
nickName: this.data.messageList[index].nickName,
index: index,
memberId: memberId,
},
show2: true,
});
},
speakaffirmbtn(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.chat-ban"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
member_id: memberId,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
wx.showToast({
icon: "none",
title: "禁言成功",
duration: 1500,
});
that.setData({
["messageList[" + index + "].show"]: false,
show2: false,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
that.setData({
["messageList[" + index + "].show"]: false,
show2: false,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
speakcancelbtn(e) {
let index = e.currentTarget.dataset.index;
this.setData({
["messageList[" + index + "].show"]: false,
show2: false,
});
},
liftBanBtn(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
let nickname = this.data.chatBanList[index].nickname;
let chatBanList = this.data.chatBanList;
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.chat-reply"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
member_id: memberId,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
wx.showToast({
icon: "none",
title: "已将" + nickname + "解除禁言",
duration: 1500,
});
chatBanList.splice(index, 1);
that.setData({
chatBanList: chatBanList,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
recoverBnt(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
// let nickname = this.data.roomBanList[index].nickname;
let roomBanList = this.data.roomBanList;
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.room-reply"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
member_id: memberId,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
wx.showToast({
icon: "none",
title: "该会员已恢复",
duration: 1500,
});
roomBanList.splice(index, 1);
that.setData({
roomBanList: roomBanList,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
kickingPlayerBtn(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
this.setData({
shiftout: {
memberAvatar: this.data.messageList[index].memberAvatar,
nickName: this.data.messageList[index].nickName,
index: index,
memberId: memberId,
},
show3: true,
});
},
shiftoutAffirmbtn(e) {
let index = e.currentTarget.dataset.index;
let memberId = e.currentTarget.dataset.memberid;
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.room-ban"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
member_id: memberId,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
wx.showToast({
icon: "none",
title: "成功踢出直播间",
duration: 1500,
});
that.setData({
["messageList[" + index + "].show"]: false,
show3: false,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
that.setData({
["messageList[" + index + "].show"]: false,
show3: false,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
show2CloseBtn() {
this.setData({
show2: false,
});
},
show3CloseBtn() {
this.setData({
show3: false,
});
},
shiftoutCancelbtn(e) {
let index = e.currentTarget.dataset.index;
this.setData({
["messageList[" + index + "].show"]: false,
show3: false,
});
},
morebtn(e) {
let index = e.currentTarget.dataset.index;
let that = this;
for (let i = 0; i < that.data.messageList.length; i++) {
that.setData({
["messageList[" + i + "].show"]: false,
});
}
that.setData({
["messageList[" + index + "].show"]: true,
});
},
setActivebtn(e) {
let that = this;
let num = e.currentTarget.dataset.num;
this.setData({
active: num,
});
if (num == 2) {
that.setData({
//more
chatBanisLoadMore: true,
chatBanpage: 1,
chatBantotal_page: 0,
});
this.getchatBanList();
} else if (num == 3) {
that.setData({
//more
roomBanisLoadMore: true,
roomBanpage: 1,
roomBantotal_page: 0,
});
this.getroomBanList();
}
},
getchatBanList() {
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.chat-ban-list"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
page: this.data.chatBanpage,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
chatBanList: res.data.data,
chatBantotal_page: res.data.last_page,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
statechangePK(e){
let code = e.detail.code;
console.log("拉取连麦:::", code);
if (code == "2002" || code == "2002") {
wx.hideLoading({});
}
},
errorPK(e) {
wx.hideLoading({});
wx.showToast({
title: '拉取连麦失败',
icon: 'success',
duration: 2000
});
console.log("拉取连麦失败:::", e);
},
getroomBanList() {
let that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.room-ban-list"
);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
page: this.data.roomBanpage,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
roomBanList: res.data.data,
roomBantotal_page: res.data.last_page,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
setgoods(e) {
let index = e.currentTarget.dataset.index;
let that = this;
let api = "";
let urlStr = "";
let goods = that.data.taideRoom.goods[index];
if (this.data.now_goods && goods.id == this.data.now_goods.goods_id) {
api = "plugin.room.frontend.anchor-aide.cancel-explain";
urlStr = app.getNetAddresss(api);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: that.data.roomid,
goods_id: goods.id,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
now_goods: "",
});
wx.showToast({
icon: "none",
title: "取消成功",
duration: 1500,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
} else {
api = "plugin.room.frontend.anchor-aide.explain-goods";
urlStr = app.getNetAddresss(api);
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: that.data.roomid,
goods_id: goods.id,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
"now_goods.goods_id": goods.id,
});
wx.showToast({
icon: "none",
title: "设置成功",
duration: 1500,
});
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
}
},
getsdkappid() {
let that = this;
let urlStr = app.getNetAddresss("plugin.room.frontend.im.get-im-sdk");
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
let options = {
SDKAppID: res.data.sdkappid, // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID
};
// 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
that.data.tim = TIM.create(options); // SDK 实例通常用 tim 表示
that.data.tim.setLogLevel(0);
that.chatEventList(); //加载聊天事件
that.getaideRoom();
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
//查询我的个人信息
chatMyProfile() {
let that = this;
let promise = that.data.tim.getMyProfile();
promise
.then(function (imResponse) {
console.log(imResponse.data); // 个人资料 - Profile 实例
let myData = imResponse.data;
if (!myData.nick) {
that.changeMyProfile();
}
})
.catch(function (imError) {
console.warn("getMyProfile error:", imError); // 获取个人资料失败的相关信息
});
},
//修改我的个人信息
changeMyProfile() {
let that = this;
let promise = that.data.tim.updateMyProfile({
nick: that.data.taideRoom.userNickname,
avatar: that.data.taideRoom.userAvatar,
});
promise
.then(function (imResponse) {
console.log(imResponse.data); // 更新资料成功
})
.catch(function (imError) {
console.warn("updateMyProfile error:", imError); // 更新资料失败的相关信息
});
},
//聊天事件
chatEventList() {
let that = this;
// 监听事件,例如:
that.data.tim.on(TIM.EVENT.SDK_READY, function (event) {
// 收到离线消息和会话列表同步完毕通知,接入侧可以调用 sendMessage 等需要鉴权的接口
that.chatMyProfile();
// that.chatJoinGroup()
// event.name - TIM.EVENT.SDK_READY
});
that.data.tim.on(TIM.EVENT.MESSAGE_RECEIVED, function (event) {
//防止重新接受两条信息
if (that.data.lasttime == event.data[0].time) {
return;
} else {
that.data.lasttime = event.data[0].time;
}
let message = event.data;
message.forEach(function (val, index) {
let conversationType = val.conversationType;
//判断消息来源群或者个人
if (conversationType == TIM.TYPES.CONV_GROUP) {
let data = val;
//后台发送过来的消息处理
// if (data.from == "administrator") {
// } else if (data.type == "TIMTextElem") {
// } else
if(data.payload.extension == "customPkGroup"){
that.setData({
livePKData: JSON.parse(data.payload.description),
livePKSrc: that.data.roomData.play_url_rtmp.match(/(\S*)\/live\//)[1]+'/live/' + data.payload.description.streamid,
isLivePK: true,
});
} else if (data.payload.extension == "customQuitPkGroup") {
// 结束连麦
that.setData({
livePKData: {},
livePKSrc: "",
isLivePK: false
});
} else if (data.type == "TIMCustomElem") {
//自定义类型解析
if (data.payload.extension == "customText") {
let messageList = that.data.messageList;
let messageListData = JSON.parse(data.payload.description);
messageListData.show = false;
messageList.push(messageListData);
that.setData({
messageList,
messagesTop: messageList.length * 1000,
});
}
}
}
// else if (conversationType == TIM.TYPES.CONV_C2C) {
// }
});
// 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面
// event.name - TIM.EVENT.MESSAGE_RECEIVED
// event.data - 存储 Message 对象的数组 - [Message]
});
that.data.tim.on(TIM.EVENT.MESSAGE_REVOKED, function (event) {
// 收到消息被撤回的通知
// event.name - TIM.EVENT.MESSAGE_REVOKED
// event.data - 存储 Message 对象的数组 - [Message] - 每个 Message 对象的 isRevoked 属性值为 true
});
that.data.tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, function (event) {
// 收到会话列表更新通知,可通过遍历 event.data 获取会话列表数据并渲染到页面
// event.name - TIM.EVENT.CONVERSATION_LIST_UPDATED
// event.data - 存储 Conversation 对象的数组 - [Conversation]
});
that.data.tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function (event) {
// 收到群组列表更新通知,可通过遍历 event.data 获取群组列表数据并渲染到页面
// event.name - TIM.EVENT.GROUP_LIST_UPDATED
// event.data - 存储 Group 对象的数组 - [Group]
});
that.data.tim.on(TIM.EVENT.GROUP_SYSTEM_NOTICE_RECEIVED, function (event) {
// 收到新的群系统通知
// event.name - TIM.EVENT.GROUP_SYSTEM_NOTICE_RECEIVED
// event.data.type - 群系统通知的类型,详情请参见 GroupSystemNoticePayload 的 operationType 枚举值说明
// event.data.message - Message 对象,可将 event.data.message.content 渲染到到页面
});
that.data.tim.on(TIM.EVENT.PROFILE_UPDATED, function (event) {
// 收到自己或好友的资料变更通知
// event.name - TIM.EVENT.PROFILE_UPDATED
// event.data - 存储 Profile 对象的数组 - [Profile]
});
that.data.tim.on(TIM.EVENT.BLACKLIST_UPDATED, function (event) {
// 收到黑名单列表更新通知
// event.name - TIM.EVENT.BLACKLIST_UPDATED
// event.data - 存储 userID 的数组 - [userID]
});
that.data.tim.on(TIM.EVENT.ERROR, function (event) {
// 收到 SDK 发生错误通知,可以获取错误码和错误信息
// event.name - TIM.EVENT.ERROR
// event.data.code - 错误码
// event.data.message - 错误信息
});
that.data.tim.on(TIM.EVENT.SDK_NOT_READY, function (event) {
// 收到 SDK 进入 not ready 状态通知,此时 SDK 无法正常工作
// event.name - TIM.EVENT.SDK_NOT_READY
});
that.data.tim.on(TIM.EVENT.KICKED_OUT, function (event) {
// 收到被踢下线通知
// event.name - TIM.EVENT.KICKED_OUT
// event.data.type - 被踢下线的原因,例如:
// - TIM.TYPES.KICKED_OUT_MULT_ACCOUNT 多实例登录被踢
// - TIM.TYPES.KICKED_OUT_MULT_DEVICE 多终端登录被踢
// - TIM.TYPES.KICKED_OUT_USERSIG_EXPIRED 签名过期被踢
wx.showToast({
icon: "none",
title: "您的IM被踢下线了",
duration: 2000,
});
});
},
getaideRoom() {
let that = this;
let urlStr = app.getNetAddresss("plugin.room.frontend.anchor-aide.room");
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.roomid,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
taideRoom: res.data,
now_goods: res.data.now_goods,
});
if (res.data.status && res.data.status == 4) {
that.setData({
liveBol: false,
video_url: res.data.video_url,
});
}
if (res.data.voice_status) {
that.setData({
livePKData: res.data.voice_anchor,
livePKSrc: res.data.voice_anchor.play_url.play_url_rtmp,
isLivePK: true
});
}
setTimeout(() => {
that.chatLogin();
}, 1000);
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {
console.log(res.msg);
},
});
},
//聊天登录
chatLogin() {
let that = this;
let promise = that.data.tim.login({
userID: that.data.taideRoom.userID.toString(),
userSig: that.data.taideRoom.userSig,
});
promise
.then(function (imResponse) {
console.log(imResponse.data); // 登录成功
that.chatJoinGroup();
})
.catch(function (imError) {
console.warn("login error:", imError); // 登录失败的相关信息
});
},
//获取群详细资料
chatJoinGroup() {
let that = this;
that.data.lastGroupId = that.data.taideRoom.groupId;
let promise = that.data.tim.joinGroup({
groupID: that.data.taideRoom.groupId,
type: TIM.TYPES.GRP_CHATROOM,
});
promise
.then(function (imResponse) {
switch (imResponse.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL:
break; // 等待管理员同意
case TIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功
console.log(imResponse.data.group); // 加入的群组资料
break;
default:
break;
}
})
.catch(function (imError) {
console.warn("joinGroup error:", imError); // 申请加群失败的相关信息
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
let language = wx.getStorageSync("langIndex");
this.setData({ language: language.en });
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
this.logout();
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if (this.data.active == 2) {
if (this.data.chatBanisLoadMore) {
this.getchatBanMoreData();
} else {
console.log("没有更多数据");
}
} else if (this.data.active == 3) {
if (this.data.roomBanisLoadMore) {
this.getroomBanMoreData();
} else {
console.log("没有更多数据");
}
}
},
//获取更多数据
getchatBanMoreData() {
const that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.chat-ban-list"
);
that.data.chatBanisLoadMore = false; // 防止多次请求分页数据
if (this.data.chatBanpage >= this.data.chatBantotal_page) {
return;
} else {
this.data.chatBanpage = this.data.chatBanpage + 1;
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
page: this.data.chatBanpage,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
chatBanList: that.data.chatBanList.concat(res.data.data),
});
} else {
that.setData({
chatBanpage: that.data.chatBanpage - 1,
chatBanisLoadMore: false,
});
return;
}
},
fail: function (res) {
console.log(res.msg);
},
});
}
},
//获取更多数据
getroomBanMoreData() {
const that = this;
let urlStr = app.getNetAddresss(
"plugin.room.frontend.anchor-aide.room-ban-list"
);
that.data.roomBanisLoadMore = false; // 防止多次请求分页数据
if (this.data.roomBanpage >= this.data.roomBantotal_page) {
return;
} else {
this.data.roomBanpage = this.data.roomBanpage + 1;
app._postNetWork({
url: urlStr,
showToastIn: false,
data: {
id: this.data.taideRoom.id,
page: this.data.roomBanpage,
},
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
roomBanList: that.data.roomBanList.concat(res.data.data),
});
} else {
that.setData({
roomBanpage: that.data.roomBanpage - 1,
roomBanisLoadMore: false,
});
return;
}
},
fail: function (res) {
console.log(res.msg);
},
});
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {},
});