好友:参数表配置
This commit is contained in:
@@ -2,7 +2,7 @@ import { Application, BackendSession } from "pinus";
|
|||||||
import { resResult, getRandEelm, getResStr, shouldRefresh } from "../../../pubUtils/util";
|
import { resResult, getRandEelm, getResStr, shouldRefresh } from "../../../pubUtils/util";
|
||||||
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT } from "../../../consts";
|
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT } from "../../../consts";
|
||||||
import { RoleModel, RoleType } from "../../../db/Role";
|
import { RoleModel, RoleType } from "../../../db/Role";
|
||||||
import { getBeforeDaySeconds } from "../../../pubUtils/timeUtil";
|
import { getBeforeHourSeconds } from "../../../pubUtils/timeUtil";
|
||||||
import { FriendApplyModel } from "../../../db/FriendApply";
|
import { FriendApplyModel } from "../../../db/FriendApply";
|
||||||
import { FriendApplyParams, FriendListParam, FriendRecommendParams, BlackListParam, FriendValueListParam } from "../../../domain/roleField/friend";
|
import { FriendApplyParams, FriendListParam, FriendRecommendParams, BlackListParam, FriendValueListParam } from "../../../domain/roleField/friend";
|
||||||
import { FriendShipModel, FriendShipType } from "../../../db/FriendShip";
|
import { FriendShipModel, FriendShipType } from "../../../db/FriendShip";
|
||||||
@@ -18,6 +18,7 @@ import { FriendPresentLogModel } from '../../../db/FriendPresentLog';
|
|||||||
import { HeroModel } from "../../../db/Hero";
|
import { HeroModel } from "../../../db/Hero";
|
||||||
import { EquipModel } from "../../../db/Equip";
|
import { EquipModel } from "../../../db/Equip";
|
||||||
import { getPlayerMainAttribute } from "../../../services/pvpService";
|
import { getPlayerMainAttribute } from "../../../services/pvpService";
|
||||||
|
import { FRIEND } from "../../../pubUtils/dicParam";
|
||||||
|
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -33,14 +34,15 @@ export class FriendHandler {
|
|||||||
public async getRecommend(msg: { }, session: BackendSession) {
|
public async getRecommend(msg: { }, session: BackendSession) {
|
||||||
let roleId: string = session.get('roleId');
|
let roleId: string = session.get('roleId');
|
||||||
|
|
||||||
const day = getBeforeDaySeconds(1);
|
const day = getBeforeHourSeconds(FRIEND.FRIEND_RECONMMEND_ACTIVETIME);
|
||||||
|
|
||||||
const { lv } = await RoleModel.findByRoleId(roleId, ROLE_SELECT.GET_LV);
|
const { lv, serverId: myServerId, userInfo: { serverType: myServerType } } = await RoleModel.findByRoleId(roleId, ROLE_SELECT.GET_MY_SERVER);
|
||||||
let allList = await RoleModel.getRecommedList(lv - 5, lv + 5, day);
|
let allList = await RoleModel.getRecommedList(lv - FRIEND.FRIEND_RECONMMEND_LEVEL, lv + FRIEND.FRIEND_RECONMMEND_LEVEL, day);
|
||||||
|
|
||||||
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
|
let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT);
|
||||||
|
|
||||||
let paramAllList = new Array<FriendRecommendParams>();
|
let myServerList = new Array<FriendRecommendParams>();
|
||||||
|
let otherServerList = new Array<FriendRecommendParams>();
|
||||||
for(let role of allList) {
|
for(let role of allList) {
|
||||||
let type = getRecommendType(myFriendRelation, roleId, role.roleId);
|
let type = getRecommendType(myFriendRelation, roleId, role.roleId);
|
||||||
if(type == FRIEND_RELATION_TYPE.NORMAL) {
|
if(type == FRIEND_RELATION_TYPE.NORMAL) {
|
||||||
@@ -51,13 +53,28 @@ export class FriendHandler {
|
|||||||
let serverName = await getServerName(serverType, serverId);
|
let serverName = await getServerName(serverType, serverId);
|
||||||
param.setServerName(serverId, serverName);
|
param.setServerName(serverId, serverName);
|
||||||
|
|
||||||
paramAllList.push(param);
|
if(myServerId == serverId && myServerType == serverType ) {
|
||||||
|
myServerList.push(param);
|
||||||
|
} else {
|
||||||
|
otherServerList.push(param);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 修改,本服在前,其他服在后
|
// 前4个是本服的,后4个随意,优先本服,其他补上
|
||||||
let list = getRandEelm(paramAllList, 6);
|
let myServerLen = myServerList.length > FRIEND.FRIEND_RECONMMEND_SERVICE? FRIEND.FRIEND_RECONMMEND_SERVICE: myServerList.length;
|
||||||
if(!list.length) list = paramAllList;
|
let list1:FriendRecommendParams[] = getRandEelm(myServerList, myServerLen);
|
||||||
|
|
||||||
|
let otherServerLen = otherServerList.length > FRIEND.FRIEND_RECONMMEND_NUM - myServerLen? FRIEND.FRIEND_RECONMMEND_NUM - myServerLen: otherServerList.length;
|
||||||
|
let list2:FriendRecommendParams[] = getRandEelm(otherServerList, otherServerLen);
|
||||||
|
|
||||||
|
if(list2.length < FRIEND.FRIEND_RECONMMEND_NUM - myServerLen) {
|
||||||
|
list1 = getRandEelm(myServerList, FRIEND.FRIEND_RECONMMEND_NUM - list2.length);
|
||||||
|
}
|
||||||
|
console.log
|
||||||
|
|
||||||
|
let list = list1.concat(list2);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { list });
|
return resResult(STATUS.SUCCESS, { list });
|
||||||
}
|
}
|
||||||
@@ -302,7 +319,7 @@ export class FriendHandler {
|
|||||||
return resResult(STATUS.FRIEND_BLACK_HAS_ADD);
|
return resResult(STATUS.FRIEND_BLACK_HAS_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
role = await RoleModel.increaseBlockCnt(roleId, 1, curFriend? -1: 0, 100); // 增加黑名单人数
|
role = await RoleModel.increaseBlockCnt(roleId, 1, curFriend? -1: 0, FRIEND.FRIEND_BLACKLIST_MAX); // 增加黑名单人数
|
||||||
if(!role) {
|
if(!role) {
|
||||||
return resResult(STATUS.FRIEND_BLACK_MAX)
|
return resResult(STATUS.FRIEND_BLACK_MAX)
|
||||||
}
|
}
|
||||||
@@ -373,7 +390,7 @@ export class FriendHandler {
|
|||||||
|
|
||||||
if(type == BLOCK_OPEATE.REMOVE_AND_APPLY) {
|
if(type == BLOCK_OPEATE.REMOVE_AND_APPLY) {
|
||||||
// 申请好友
|
// 申请好友
|
||||||
let applyResult = await RoleModel.increaseFriendApplyCnt(hisRoleId, 1, 50);
|
let applyResult = await RoleModel.increaseFriendApplyCnt(hisRoleId, 1, FRIEND.FRIEND_MANAGE_APPLICATION);
|
||||||
if(!applyResult) {
|
if(!applyResult) {
|
||||||
str = getResStr(STATUS.FRIEND_HIS_APPLY_MAX);
|
str = getResStr(STATUS.FRIEND_HIS_APPLY_MAX);
|
||||||
} else {
|
} else {
|
||||||
@@ -430,17 +447,17 @@ export class FriendHandler {
|
|||||||
let list = new Array<FriendValueListParam>();
|
let list = new Array<FriendValueListParam>();
|
||||||
for(let relation of canSendList) {
|
for(let relation of canSendList) {
|
||||||
|
|
||||||
if(todaySendCnt + 1 > max) break;
|
if(todaySendCnt + FRIEND.FRIEND_FRIENDPOINT_ADD > max) break;
|
||||||
let fs = <FriendShipType>relation.friendShip;
|
let fs = <FriendShipType>relation.friendShip;
|
||||||
let ref = shouldRefresh(fs.refTime, new Date(), 0);
|
let ref = shouldRefresh(fs.refTime, new Date(), 0);
|
||||||
let sendHeartRec = await FriendShipModel.sendHeart(roleId, relation.roleId, 1, 1, ref);
|
let sendHeartRec = await FriendShipModel.sendHeart(roleId, relation.roleId, 1, FRIEND.FRIEND_RECEIVE_SINGLE, ref);
|
||||||
if(!sendHeartRec) continue;
|
if(!sendHeartRec) continue;
|
||||||
|
|
||||||
let param = new FriendValueListParam(relation.roleId, roleId, sendHeartRec);
|
let param = new FriendValueListParam(relation.roleId, roleId, sendHeartRec);
|
||||||
list.push(param);
|
list.push(param);
|
||||||
|
|
||||||
todaySendCnt += 1;
|
todaySendCnt += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
todaySendInc += 1;
|
todaySendInc += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
}
|
}
|
||||||
if(todaySendInc <= 0) return resResult(STATUS.FRIEND_HAS_SENT);
|
if(todaySendInc <= 0) return resResult(STATUS.FRIEND_HAS_SENT);
|
||||||
|
|
||||||
@@ -487,7 +504,7 @@ export class FriendHandler {
|
|||||||
let list = new Array<FriendValueListParam>();
|
let list = new Array<FriendValueListParam>();
|
||||||
for(let relation of canReceiveList) {
|
for(let relation of canReceiveList) {
|
||||||
if(relation.beSentHeart > 0) {
|
if(relation.beSentHeart > 0) {
|
||||||
if(todayReceiveCnt + 1 > max) break;
|
if(todayReceiveCnt + FRIEND.FRIEND_FRIENDPOINT_ADD > max) break;
|
||||||
|
|
||||||
// 收取爱心
|
// 收取爱心
|
||||||
let fs = <FriendShipType>relation.friendShip;
|
let fs = <FriendShipType>relation.friendShip;
|
||||||
@@ -498,8 +515,8 @@ export class FriendHandler {
|
|||||||
let param = new FriendValueListParam(relation.roleId, roleId, receiveHeartRec);
|
let param = new FriendValueListParam(relation.roleId, roleId, receiveHeartRec);
|
||||||
list.push(param);
|
list.push(param);
|
||||||
|
|
||||||
todayReceiveCnt += 1;
|
todayReceiveCnt += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
todayReceiveInc += 1;
|
todayReceiveInc += FRIEND.FRIEND_FRIENDPOINT_ADD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(todayReceiveInc <= 0) return resResult(STATUS.FRIEND_HAS_RECEIVE);
|
if(todayReceiveInc <= 0) return resResult(STATUS.FRIEND_HAS_RECEIVE);
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ export enum ROLE_SELECT {
|
|||||||
HANDLE_APPLY = 'roleId friendCnt lv',
|
HANDLE_APPLY = 'roleId friendCnt lv',
|
||||||
ATTR = 'globalCeAttr',
|
ATTR = 'globalCeAttr',
|
||||||
GET_LV = 'lv',
|
GET_LV = 'lv',
|
||||||
GET_ROLE_ID = 'roleId'
|
GET_ROLE_ID = 'roleId',
|
||||||
|
GET_MY_SERVER = 'lv serverId userInfo.serverType',
|
||||||
};
|
};
|
||||||
|
|
||||||
export enum HERO_SELECT {
|
export enum HERO_SELECT {
|
||||||
@@ -20,7 +21,7 @@ export enum EQUIP_SELECT {
|
|||||||
HERO_DETAIL = 'id name ePlaceId quality'
|
HERO_DETAIL = 'id name ePlaceId quality'
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum FRIEND {
|
export enum FRIEND_SELECT {
|
||||||
SEND_PRESENT = 'friendValue friendLv'
|
SEND_PRESENT = 'friendValue friendLv'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos
|
|||||||
import { getFriendLvByExp } from '../pubUtils/data';
|
import { getFriendLvByExp } from '../pubUtils/data';
|
||||||
import * as util from '../pubUtils/friendUtil';
|
import * as util from '../pubUtils/friendUtil';
|
||||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||||
import { FRIEND } from '../consts';
|
import { FRIEND } from '../pubUtils/dicParam';
|
||||||
|
import { FRIEND_SELECT } from '../consts';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 好友直接的亲密值
|
* 好友直接的亲密值
|
||||||
@@ -107,12 +108,12 @@ export default class FriendShip extends BaseModel {
|
|||||||
if(shouldRefresh) {
|
if(shouldRefresh) {
|
||||||
let obj = this.getRefData();
|
let obj = this.getRefData();
|
||||||
result = await FriendShipModel.findOneAndUpdate({ roleIds }, {
|
result = await FriendShipModel.findOneAndUpdate({ roleIds }, {
|
||||||
$inc: { friendValue: 5},
|
$inc: { friendValue: FRIEND.FRIEND_CLOSEPOINT_ADD},
|
||||||
$set: { ...obj, ...params.inc, ...params.set }
|
$set: { ...obj, ...params.inc, ...params.set }
|
||||||
}, { new: true }).lean({ virtuals: true });
|
}, { new: true }).lean({ virtuals: true });
|
||||||
} else {
|
} else {
|
||||||
result = await FriendShipModel.findOneAndUpdate({ roleIds, ...params.lt }, {
|
result = await FriendShipModel.findOneAndUpdate({ roleIds, ...params.lt }, {
|
||||||
$inc: { ...params.inc, friendValue: 5},
|
$inc: { ...params.inc, friendValue: FRIEND.FRIEND_CLOSEPOINT_ADD},
|
||||||
$set: params.set
|
$set: params.set
|
||||||
}, { new: true }).lean({ virtuals: true });
|
}, { new: true }).lean({ virtuals: true });
|
||||||
}
|
}
|
||||||
@@ -150,7 +151,7 @@ export default class FriendShip extends BaseModel {
|
|||||||
public static async addFriendValue(roleId: string, hisRoleId: string, inc: number) {
|
public static async addFriendValue(roleId: string, hisRoleId: string, inc: number) {
|
||||||
let { roleIds } = util.getRoleIds([roleId, hisRoleId]);
|
let { roleIds } = util.getRoleIds([roleId, hisRoleId]);
|
||||||
let result: FriendShipType = await FriendShipModel.findOneAndUpdate({ roleIds }, { $inc: { friendValue: inc } }, { new: true })
|
let result: FriendShipType = await FriendShipModel.findOneAndUpdate({ roleIds }, { $inc: { friendValue: inc } }, { new: true })
|
||||||
.select(FRIEND.SEND_PRESENT)
|
.select(FRIEND_SELECT.SEND_PRESENT)
|
||||||
.lean({ virtuals: true });
|
.lean({ virtuals: true });
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,13 +45,25 @@ export const ARMY = {
|
|||||||
ARMY_DEVELOPMENT_SPEEDTMES: 10, // 单个碎片可助力加速的最大次数
|
ARMY_DEVELOPMENT_SPEEDTMES: 10, // 单个碎片可助力加速的最大次数
|
||||||
ARMY_TRAIN_FREETIMES: 2, // 练兵场每日挑战次数
|
ARMY_TRAIN_FREETIMES: 2, // 练兵场每日挑战次数
|
||||||
ARMY_TRAIN_BUYTIMES: 2, // 练兵场每日可购买次数
|
ARMY_TRAIN_BUYTIMES: 2, // 练兵场每日可购买次数
|
||||||
ARMY_TRAIN_TIMESCOST: 20, // 练兵场购买次数每日
|
ARMY_TRAIN_TIMESCOST: 20, // 练兵场购买次数消耗
|
||||||
ARMY_WEEKHONOUR_LIMIT: 1000, // 军团成员参与职位排名周功勋下限(包含)
|
ARMY_WEEKHONOUR_LIMIT: 1000, // 军团成员参与职位排名周功勋下限(包含)
|
||||||
ARMY_WISH_TIMES: 1, // 单个许愿池每日可许愿次数
|
ARMY_WISH_TIMES: 1, // 单个许愿池每日可许愿次数
|
||||||
ARMY_WISH_HELP: 3, // 每日可满足他人心愿的次数
|
ARMY_WISH_HELP: 3, // 每日可满足他人心愿的次数
|
||||||
ARMY_DONATE_TIMES: 10, // 捐献池每日可捐献的次数
|
ARMY_DONATE_TIMES: 10, // 捐献池每日可捐献的次数
|
||||||
|
ARMY_MANAGE_APPLICATION: 50, // 军团管理显示收到的申请条数上限
|
||||||
};
|
};
|
||||||
export const TREASURE = {
|
export const TREASURE = {
|
||||||
CAPTAIN_DROP: 5, // 普通套装图纸队长必掉落次数
|
CAPTAIN_DROP: 5, // 普通套装图纸队长必掉落次数
|
||||||
TEAMMATE_DROP: 10, // 普通套装图纸队员必掉落次数
|
TEAMMATE_DROP: 10, // 普通套装图纸队员必掉落次数
|
||||||
};
|
};
|
||||||
|
export const FRIEND = {
|
||||||
|
FRIEND_CLOSEPOINT_ADD: 5, // 每赠送/领取一次增加的亲密度
|
||||||
|
FRIEND_FRIENDPOINT_ADD: 1, // 每领取一次爱心会增加的情谊值
|
||||||
|
FRIEND_RECONMMEND_LEVEL: 5, // 系统推荐玩家等级要求浮动
|
||||||
|
FRIEND_RECONMMEND_ACTIVETIME: 24, // 系统推荐玩家活跃时间要求(小时)
|
||||||
|
FRIEND_BLACKLIST_MAX: 100, // 黑名单人数上限
|
||||||
|
FRIEND_MANAGE_APPLICATION: 50, // 好友显示收到的申请条数上限
|
||||||
|
FRIEND_RECEIVE_SINGLE: 1, // 向单个好友每日最多赠送多少爱心
|
||||||
|
FRIEND_RECONMMEND_NUM: 8, // 同一批推荐好友数量
|
||||||
|
FRIEND_RECONMMEND_SERVICE: 4, // 同一批推荐本服的好友数量
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
const PER_SECOND = 1 * 1000;
|
const PER_SECOND = 1 * 1000;
|
||||||
const PER_DAY = 24 * 60 * 60;
|
const PER_DAY = 24 * 60 * 60;
|
||||||
|
const PER_HOUR = 60 * 60;
|
||||||
|
|
||||||
export function getSeconds(time: Date) {
|
export function getSeconds(time: Date) {
|
||||||
return Math.floor(time.getTime() / PER_SECOND);
|
return Math.floor(time.getTime() / PER_SECOND);
|
||||||
@@ -38,10 +39,14 @@ export function getBeforeDayDate(day: number) {
|
|||||||
export function getBeforeDaySeconds(day: number) {
|
export function getBeforeDaySeconds(day: number) {
|
||||||
let time = nowSeconds() - day * PER_DAY;
|
let time = nowSeconds() - day * PER_DAY;
|
||||||
return time;
|
return time;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getBeforeHourSeconds(hour: number) {
|
||||||
|
let time = nowSeconds() - hour * PER_HOUR;
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export function getCurWeekDate(day: number, hour: number) {
|
export function getCurWeekDate(day: number, hour: number) {
|
||||||
return getWeekDate(new Date(), day, hour);
|
return getWeekDate(new Date(), day, hour);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user