Files
fc/dev/project/library/imports/46/46deb3ce-47c8-44d5-96b3-11162bacb01e.js
T

323 lines
9.6 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"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 BridgeClass = require("bridge.class");
var FriendController = require("friend_controller");
var FriendVo = require("friend_vo");
var FriendEvent = require("friend_event");
var FriendModel = cc.Class({
"extends": BridgeClass,
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();