军团fix:领取活跃宝箱记录

This commit is contained in:
luying
2021-01-25 16:37:33 +08:00
parent 90e78bd967
commit d4d4ba825b
6 changed files with 34 additions and 20 deletions

View File

@@ -46,7 +46,7 @@ export async function joinGuild(code: string, lv: number, roleId: string, server
return { status: 0, resResult: resResult(STATUS.DIC_DATA_NOT_FOUND) };
}
const maxMemberCnt = dicCenterBase.peopleNum;
const guild = await GuildModel.addGuild(code, roleId, maxMemberCnt, serverId);
const guild = await GuildModel.addGuild(code, roleId, maxMemberCnt, serverId, result.ce);
if(!guild) {
return { status: 0, resResult: resResult(STATUS.GUILD_MEMBER_MAX) };
}
@@ -123,13 +123,14 @@ export async function addActive(roleId: string, serverId: number, id: number, ac
*/
export async function getUserGuildWithRefActive(roleId: string, select: string) {
let userGuild = await UserGuildModel.getMyGuild(roleId, select? select + ' +refTimeDaily': '+refTimeDaily');
console.log(JSON.stringify(userGuild))
if(!userGuild) return false;
let { receivedActive, refTimeDaily, activeDaily, activeRecord } = userGuild;
const now = new Date();
let isRefDaily = shouldRefresh(refTimeDaily, now, 0);
if(isRefDaily) {
receivedActive = 0; refTimeDaily = now; activeDaily = 0; activeRecord = [];
receivedActive = []; refTimeDaily = now; activeDaily = 0; activeRecord = [];
userGuild = await UserGuildModel.updateInfo(roleId, { receivedActive, refTimeDaily, activeDaily, activeRecord }, {}, select);
if(!userGuild) return false;
@@ -149,9 +150,9 @@ export async function settleGuildWeekly() {
for(let { code, activeWeekly, memberCnt } of guildList) {
const userGuildList = await UserGuildModel.getListByGuild(code, 'roleId auth activeWeekly', { activeWeekly: -1, activeUpdateTime: 1 });
let activeMemberCnt = 0; // 活跃度高于100的成员人数
let otherMemberNum = 0; // 除了大将军以外从活跃高到底成员人数,用户计算活跃排名百分比
let jobCnt = new Map<number, number>();
let activeMemberCnt = 0; // 活跃度高于1000的成员人数
let otherMemberCnt = 0; // 除了大将军以外从活跃高到底成员人数,用户计算活跃排名百分比
let jobNum = 0; // 职位分配权重加成
let members = new Map<string, {job: number, active: boolean}>();
for(let {roleId, auth, activeWeekly} of userGuildList) {
@@ -168,17 +169,15 @@ export async function settleGuildWeekly() {
} else if (activeWeekly <= ARMY.ARMY_WEEKHONOUR_LIMIT) {
job = GUILD_JOB.SHIBING;
} else {
otherMemberNum++;
otherMemberCnt++;
for(let [id, {rankProportion}] of gameData.guildPosition) {
let rankCnt = Math.ceil(memberCnt * rankProportion / 100);
console.log('*', id, memberCnt, rankProportion, otherMemberNum, rankCnt)
job = id;
if(otherMemberNum < rankCnt) break;
if(otherMemberCnt < rankCnt) break;
}
}
await UserGuildModel.updateInfo(roleId, { job, activeWeekly: 0 });
if(!jobCnt.has(job)) jobCnt.set(job, 0);
jobCnt.set(job, jobCnt.get(job) + 1);
jobNum += gameData.guildPosition.get(job).activeRatio;
members.set(roleId, {job, active});
}
@@ -190,8 +189,8 @@ export async function settleGuildWeekly() {
let positionBase = ratio * ARMY.ARMY_POSITION_WEEKREWARD / 100; // 30% 职位均分
for(let [roleId, {job, active}] of members) {
let myAverageRatio = active? (averageBase / activeMemberCnt): 0;
let jobActiveRatio = gameData.guildPosition.get(job).activeRatio / 100;
let myJobRewardRatio = positionBase * jobActiveRatio / jobCnt.get(job);
let jobActiveRatio = gameData.guildPosition.get(job).activeRatio / jobNum;
let myJobRewardRatio = positionBase * jobActiveRatio;
let reward = allWeeklyReward.map(cur => {
return {
id: cur.id,