// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里填写详细说明,主要填写该模块的功能简要
|
// <br/>Create: 2018-12-24 16:41:34
|
// --------------------------------------------------------------------
|
|
var FriendController = require("friend_controller");
|
var FriendVo = require("friend_vo");
|
var FriendEvent = require("friend_event")
|
|
var FriendModel = cc.Class({
|
extends: BaseClass,
|
ctor: function () {
|
this.ctrl = FriendController.getInstance();
|
this.initConfig();
|
},
|
|
properties: {
|
},
|
|
initConfig: function () {
|
|
this.list = {} // 好友列表
|
this.apply = [] // 好友申请列表
|
this.plist = {}
|
this.onlinelist = {}
|
this.blacklist = [] // 黑名单列表
|
this.honey_list_count = 20 //最近联系人限制
|
this.last_select_group = 1 //最后选择的分组(默认选择第一个分组)
|
this.last_select_friend_srv_id = null
|
this.last_select_friend_rid = null
|
this.present_count = 0 //当天可以赠送好友体力剩余次数
|
this.draw_count = 0 //当天可以领取好友体力剩余次数
|
this.draw_total_count = 0 //当天可以领取好友体力总次数
|
this.last_select_index = 1 //默认上次选中的序号
|
},
|
|
//添加数据
|
add: function (val) {
|
if (this.list[val.srv_id + "_" + val.rid] == null)
|
this.list[val.srv_id + "_" + val.rid] = val;
|
},
|
|
addPchat: function (val) {
|
if (this.plist[val.srv_id + "_" + val.rid] == null)
|
this.plist[val.srv_id + "_" + val.rid] = val;
|
},
|
|
getOnlineFriendList: function () {
|
var online_list = [];
|
for (var k in this.list) {
|
var v = this.list[k]
|
if (v && v.is_online == 1) { //在线
|
online_list.push(v);
|
}
|
}
|
return online_list
|
},
|
|
getFriendInfo: function(srv_id, rid) {
|
var friend_i = srv_id + "_" + rid;
|
return this.list[friend_i];
|
},
|
|
//申请列表
|
setApplyList: function (list) {
|
var arr = [];
|
for (var i in list) {
|
var v = list[i];
|
if (v) {
|
arr.push(v)
|
}
|
}
|
this.apply = arr;
|
|
gcore.Timer.set(function () {
|
gcore.GlobalEvent.fire(FriendEvent.Update_Red_Point);
|
}, 1000, -1);
|
},
|
|
getApplyList: function () {
|
return this.apply || [];
|
},
|
|
getApplyNum: function () {
|
return this.apply.length
|
},
|
|
//删除数据
|
del: function (srv_id, rid) {
|
if (this.list[srv_id + "_" + rid] != null)
|
this.list[srv_id + "_" + rid] = null;
|
// this.list.splice(srv_id + "_" + rid,1)
|
},
|
|
//更新单个数据
|
updateVo: function (srv_id, rid, key, value) {
|
var vo = this.list[srv_id + "_" + rid];
|
if (vo != null) {
|
vo.update(key, value);
|
}
|
return vo
|
},
|
|
//红点判断,要显示出可领取的数量,跟申请列表的数量
|
getAwardNum: function () {
|
var num = 0;
|
for (var i in this.list) {
|
var v = this.list[i]
|
if (v && v.is_draw == 1) {
|
num = num + 1;
|
}
|
}
|
return num
|
},
|
|
updateSingleFriendData: function (srv_id, rid, data) {
|
var key = srv_id + "_" + rid;
|
if (this.list[key])
|
this.list[key].setData(data);
|
},
|
|
//获取单个数据
|
getVo: function (srv_id, rid) {
|
return this.list[srv_id + "_" + rid];
|
},
|
|
//转化为数组
|
getArray: function () {
|
var array = new Array();
|
for (var k in this.list) {
|
if(this.list[k]){
|
array.push(this.list[k]);
|
}
|
}
|
array.sort(Utils.tableUpperSorter(["is_online", "lev", "power"]));
|
return array
|
},
|
|
//获取跨服/同服好友数据
|
getGroupList: function (name) {
|
var array = new Array();
|
for (var k in this.list) {
|
var v = this.list[k]
|
if (v.is_cross == 1 && name == "cross") {
|
array.push(v);
|
} else if (v.is_cross == 0 && name == "alike") {
|
array.push(v);
|
}
|
}
|
array.sort(Utils.tableUpperSorter(["is_online", "lev"]));
|
return array
|
},
|
|
//获取跨服/同服好友在线数和总数
|
getGroupOnlineAndTotal: function (group_name) {
|
var online_num = 0;
|
var total_num = 0;
|
var group_data = this.getGroupList(group_name);
|
var len = group_data.GetSize();
|
total_num = len;
|
for (var i = 1; i <= len; i++) {
|
var friend_vo = group_data.Get(i - 1);
|
if (friend_vo.srv_id && friend_vo.rid && friend_vo.is_online == 1) {
|
online_num = online_num + 1;
|
}
|
}
|
return { online_num: online_num, total_num: total_num }
|
},
|
|
//获取所有好友在线和总数量
|
getFriendOnlineAndTotal: function () {
|
var online_num = 0;
|
var total_num = 0;
|
if (this.list) {
|
for (var k in this.list) {
|
var friend_vo = this.list[k];
|
if (friend_vo && friend_vo.srv_id && friend_vo.rid && friend_vo.is_online == 1) {
|
online_num = online_num + 1;
|
}
|
if (friend_vo)
|
total_num = total_num + 1;
|
}
|
}
|
return { online_num: online_num, total_num: total_num }
|
},
|
|
//获取最近联系人在线数和总数
|
getHoneyListOnlineAndTotal: function (is_require) {
|
var total_num = 0;
|
var online_num = 0;
|
var honeyList = this.getHoneyList(is_require);
|
var len = honeyList.GetSize();
|
total_num = len;
|
for (var i = 1; i <= len; i++) {
|
var item = honeyList.Get(i - 1);
|
if (item.srv_id && item.rid && item.is_online == 1) {
|
online_num = online_num + 1;
|
}
|
}
|
return { online_num: online_num, total_num: total_num }
|
},
|
|
//获取黑名单在线数和总数
|
getBlackListOnlineAndTotal: function () {
|
var total_num = 0;
|
var online_num = 0;
|
for (var k in this.blacklist) {
|
var v = this.blacklist[k];
|
if (v != null && v.is_online != null && v.is_online == 1) {
|
online_num = online_num + 1;
|
}
|
total_num = total_num + 1;
|
}
|
return { online_num: online_num, total_num: total_num }
|
},
|
|
//获取索引
|
getIndex: function (srv_id, rid) {
|
var array = this.getArray();
|
for (var i = 0; i < array.length; i++) {
|
var vo = array[i];
|
if (vo.srv_id == srv_id && vo.rid == rid) {
|
return i
|
}
|
}
|
return null
|
},
|
|
isFriend: function (srv_id, rid) {
|
if (srv_id == null || rid == null) {
|
return false
|
}
|
var vo = this.list[srv_id + "_" + rid];
|
if (vo && vo.is_moshengren == 0)
|
return true
|
return false
|
},
|
|
isFriend2: function (key) {
|
var vo = this.list[key];
|
if (vo && vo.is_moshengren == 0)
|
return true
|
return false
|
},
|
|
//保存非好友联系人的在线数据
|
setOnlineData: function (key) {
|
this.onlinelist = [];
|
for (var i in list) {
|
var vo = list[i];
|
var key = vo.srv_id + "+" + vo.id;
|
this.onlinelist[key] = 1;
|
}
|
},
|
|
getOnlineData: function (key) {
|
if (this.onlinelist[key])
|
return 1
|
else
|
return 0
|
},
|
|
setOnlineKey: function (key) {
|
this.onlinelist[key] = 1;
|
},
|
|
setFriendPresentCount: function (count) {
|
this.present_count = count
|
},
|
|
getFriendPresentCount: function () {
|
return this.present_count
|
},
|
|
setFriendDrawCount: function (count) {
|
this.draw_count = count;
|
},
|
|
getFriendDrawCount: function () {
|
return this.draw_count
|
},
|
|
setFriendDrawTotalCount: function (total) {
|
this.draw_total_count = total;
|
},
|
|
getFriendDrawTotalCount: function () {
|
return this.draw_total_count;
|
},
|
|
//-------------------黑名单模块数据:
|
|
//初始化
|
initBlackList: function (list, is_add) {
|
for (var k in list) {
|
var vo = new FriendVo();
|
var v = list[k];
|
vo.setData(v);
|
this.blacklist[v.rid + "_" + v.srv_id] = vo;
|
}
|
},
|
|
//移除黑名单
|
removeBlack: function (rid, srv_id) {
|
if (rid && srv_id)
|
delete this.blacklist[rid + "_" + srv_id] ;
|
},
|
|
//黑名单数组
|
getBlackArray: function () {
|
var array = new Array();
|
for (var k in this.blacklist) {
|
array.push(this.blacklist[k]);
|
}
|
array.sort(Utils.tableUpperSorter(["is_online", "lev", "power"]));
|
return array
|
},
|
|
//是否在黑名单里面
|
isBlack: function (rid, srv_id) {
|
var isIn = false;
|
if (rid && srv_id && this.blacklist[rid + "_" + srv_id]) {
|
isIn = true;
|
}
|
return isIn;
|
},
|
|
setLastSelectGroup: function (value) {
|
this.last_select_group = value;
|
},
|
|
getLastSelectGroup: function () {
|
return this.last_select_group;
|
},
|
|
setLastSelectFriend: function (srv_id, rid) {
|
this.last_select_friend_srv_id = srv_id;
|
this.last_select_friend_rid = rid;
|
},
|
|
setLastSelectFriendIndex: function (index) {
|
this.last_select_index = index || 1;
|
},
|
|
getLastSelectFriendIndex: function () {
|
return this.last_select_index;
|
},
|
|
getLastSelectFriend: function () {
|
return this.last_select_friend_srv_id, this.last_select_friend_rid;
|
},
|
|
__delete: function () {
|
|
}
|
});
|
|
module.exports = FriendModel;
|