"use strict";
|
cc._RF.push(module, '46debPOR8hE1ZazERYrrLAe', 'friend_model');
|
// Scripts/mod/friend/friend_model.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @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 ctor() {
|
this.ctrl = FriendController.getInstance();
|
this.initConfig();
|
},
|
properties: {},
|
initConfig: function initConfig() {
|
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 add(val) {
|
if (this.list[val.srv_id + "_" + val.rid] == null) this.list[val.srv_id + "_" + val.rid] = val;
|
},
|
addPchat: function addPchat(val) {
|
if (this.plist[val.srv_id + "_" + val.rid] == null) this.plist[val.srv_id + "_" + val.rid] = val;
|
},
|
getOnlineFriendList: function getOnlineFriendList() {
|
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 getFriendInfo(srv_id, rid) {
|
var friend_i = srv_id + "_" + rid;
|
return this.list[friend_i];
|
},
|
//申请列表
|
setApplyList: function setApplyList(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 getApplyList() {
|
return this.apply || [];
|
},
|
getApplyNum: function getApplyNum() {
|
return this.apply.length;
|
},
|
//删除数据
|
del: function del(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 updateVo(srv_id, rid, key, value) {
|
var vo = this.list[srv_id + "_" + rid];
|
|
if (vo != null) {
|
vo.update(key, value);
|
}
|
|
return vo;
|
},
|
//红点判断,要显示出可领取的数量,跟申请列表的数量
|
getAwardNum: function getAwardNum() {
|
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 updateSingleFriendData(srv_id, rid, data) {
|
var key = srv_id + "_" + rid;
|
if (this.list[key]) this.list[key].setData(data);
|
},
|
//获取单个数据
|
getVo: function getVo(srv_id, rid) {
|
return this.list[srv_id + "_" + rid];
|
},
|
//转化为数组
|
getArray: function getArray() {
|
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 getGroupList(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 getGroupOnlineAndTotal(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 getFriendOnlineAndTotal() {
|
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 getHoneyListOnlineAndTotal(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 getBlackListOnlineAndTotal() {
|
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 getIndex(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 isFriend(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 isFriend2(key) {
|
var vo = this.list[key];
|
if (vo && vo.is_moshengren == 0) return true;
|
return false;
|
},
|
//保存非好友联系人的在线数据
|
setOnlineData: function setOnlineData(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 getOnlineData(key) {
|
if (this.onlinelist[key]) return 1;else return 0;
|
},
|
setOnlineKey: function setOnlineKey(key) {
|
this.onlinelist[key] = 1;
|
},
|
setFriendPresentCount: function setFriendPresentCount(count) {
|
this.present_count = count;
|
},
|
getFriendPresentCount: function getFriendPresentCount() {
|
return this.present_count;
|
},
|
setFriendDrawCount: function setFriendDrawCount(count) {
|
this.draw_count = count;
|
},
|
getFriendDrawCount: function getFriendDrawCount() {
|
return this.draw_count;
|
},
|
setFriendDrawTotalCount: function setFriendDrawTotalCount(total) {
|
this.draw_total_count = total;
|
},
|
getFriendDrawTotalCount: function getFriendDrawTotalCount() {
|
return this.draw_total_count;
|
},
|
//-------------------黑名单模块数据:
|
//初始化
|
initBlackList: function initBlackList(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 removeBlack(rid, srv_id) {
|
if (rid && srv_id) delete this.blacklist[rid + "_" + srv_id];
|
},
|
//黑名单数组
|
getBlackArray: function getBlackArray() {
|
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 isBlack(rid, srv_id) {
|
var isIn = false;
|
|
if (rid && srv_id && this.blacklist[rid + "_" + srv_id]) {
|
isIn = true;
|
}
|
|
return isIn;
|
},
|
setLastSelectGroup: function setLastSelectGroup(value) {
|
this.last_select_group = value;
|
},
|
getLastSelectGroup: function getLastSelectGroup() {
|
return this.last_select_group;
|
},
|
setLastSelectFriend: function setLastSelectFriend(srv_id, rid) {
|
this.last_select_friend_srv_id = srv_id;
|
this.last_select_friend_rid = rid;
|
},
|
setLastSelectFriendIndex: function setLastSelectFriendIndex(index) {
|
this.last_select_index = index || 1;
|
},
|
getLastSelectFriendIndex: function getLastSelectFriendIndex() {
|
return this.last_select_index;
|
},
|
getLastSelectFriend: function getLastSelectFriend() {
|
return this.last_select_friend_srv_id, this.last_select_friend_rid;
|
},
|
__delete: function __delete() {}
|
});
|
module.exports = FriendModel;
|
|
cc._RF.pop();
|