From c4793c7e8ab4126064d3723e4ba8bd8bcc1a288c Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 5 May 2022 19:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=8D=E5=8D=96=E8=A1=8C=EF=BC=9A=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/auctionService.ts | 16 +- game-server/app/services/connectorService.ts | 2 +- game-server/app/services/expeditionService.ts | 5 +- game-server/app/services/redLockService.ts | 5 + shared/consts/dataName.ts | 1 + .../jsons/dic_expedition_subattr.json | 162 +++++++++--------- 6 files changed, 106 insertions(+), 85 deletions(-) diff --git a/game-server/app/services/auctionService.ts b/game-server/app/services/auctionService.ts index 13ddd900c..eab7d47b8 100644 --- a/game-server/app/services/auctionService.ts +++ b/game-server/app/services/auctionService.ts @@ -15,6 +15,8 @@ import { RewardInter } from '../pubUtils/interface'; import { reportTAEvent } from './sdkService'; import { getAllServers } from './redisService'; import { sendMessageToGuildWithSuc, sendMessageToServer, sendMessageToServerWithSuc } from './pushService'; +import { lockDataWithNoParam } from './redLockService'; +import { DATA_NAME } from '../consts'; // ! 获取底价,假数据 export function getBasePrice(gid: number, count: number) { @@ -290,6 +292,9 @@ export async function calculateDividend(dividend: DividendType) { } export async function startGuildAuction() { + let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁 + if (!!res.err) return false; + try { console.log('schedule startGuildAuction called:', new Date()); const begin = await todayGuildBegin(); @@ -304,10 +309,11 @@ export async function startGuildAuction() { } await pushAuctionUpdate(lots, dividends); - + res.releaseCallback(); return true; } catch (e) { console.error('startGuildAuction err: ', e); + res.releaseCallback(); return false; } } @@ -330,6 +336,8 @@ export async function sendLotsRewardToMlail(lots: LotType[]) { } export async function startWorldAuction() { + let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁 + if (!!res.err) return false; try { console.log('schedule startWorldAuction called:', new Date()); const begin = await todayGuildBegin(); @@ -345,14 +353,18 @@ export async function startWorldAuction() { await pushCurrentTime(time); } await pushAuctionUpdate(lots, dividends); + res.releaseCallback(); return true; } catch (e) { console.error('startWorldAuction err: ', e); + res.releaseCallback(); return false; } } export async function stopAuction() { + let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁 + if (!!res.err) return false; try { console.log('schedule stopAuction called:', new Date()); const begin = await todayGuildBegin(); @@ -367,9 +379,11 @@ export async function stopAuction() { await pushCurrentTime(time); } await pushAuctionUpdate(lots, []); + res.releaseCallback(); return true; } catch (e) { console.error('stopAuction err: ', e); + res.releaseCallback(); return false; } } diff --git a/game-server/app/services/connectorService.ts b/game-server/app/services/connectorService.ts index 3910120e5..d8947079e 100644 --- a/game-server/app/services/connectorService.ts +++ b/game-server/app/services/connectorService.ts @@ -141,7 +141,7 @@ export async function getModuleData(type: string, data: { role: RoleType, sessio case 'daily': // 每日 return await getDailyBattleList(role); case 'expedition': // 远征 - return await getExpeditionStatus(roleId, roleName); + return await getExpeditionStatus(roleId, roleName, true); case 'tower': // 镇念塔 return await getTowerEntryData(role); case 'comBattle': // 寻宝 diff --git a/game-server/app/services/expeditionService.ts b/game-server/app/services/expeditionService.ts index 7998f6e88..2a363cbcf 100644 --- a/game-server/app/services/expeditionService.ts +++ b/game-server/app/services/expeditionService.ts @@ -18,10 +18,11 @@ import { checkSystemIsOpen } from './roleService'; * @param roleId * @param roleName */ -export async function getExpeditionStatus(roleId: string, roleName: string) { +export async function getExpeditionStatus(roleId: string, roleName: string, isEntry = false) { // 重置次数 let role = await RoleModel.findByRoleId(roleId); - if(!checkSystemIsOpen(role, SYSTEM_OPEN_ID.EXPEDITION)) return false + if(!role.hasInit) return false; + if(isEntry && !checkSystemIsOpen(role, SYSTEM_OPEN_ID.EXPEDITION)) return false // 获取远征关卡状态 let expeditionRecord = await ExpeditionRecordModel.getCurRecord(roleId); if (!expeditionRecord) { // 首次新建一条记录 diff --git a/game-server/app/services/redLockService.ts b/game-server/app/services/redLockService.ts index 47d758003..9e39aa440 100644 --- a/game-server/app/services/redLockService.ts +++ b/game-server/app/services/redLockService.ts @@ -68,6 +68,11 @@ export async function lockData(serverId: number, dataName: string, id: string ) return await lock(lockKey); } +export async function lockDataWithNoParam(dataName: string) { + let key = `${dataName}`; + return await lock(key); +} + function lock(lockKey: string) { return _redlockCache.redlock.lock(lockKey, _redlockCache.ttl).then(function(lock) { setLock(lockKey, lock); diff --git a/shared/consts/dataName.ts b/shared/consts/dataName.ts index c8ace4cd7..67486fce2 100644 --- a/shared/consts/dataName.ts +++ b/shared/consts/dataName.ts @@ -12,4 +12,5 @@ export enum DATA_NAME { AUCTION_LOT = 'LotCode', DONATE = 'Donate', FUND = 'fund', + SEND_AUCTION = 'sendAuction', } diff --git a/shared/resource/jsons/dic_expedition_subattr.json b/shared/resource/jsons/dic_expedition_subattr.json index 1b3f9b848..83c3482a8 100644 --- a/shared/resource/jsons/dic_expedition_subattr.json +++ b/shared/resource/jsons/dic_expedition_subattr.json @@ -2,141 +2,141 @@ { "id": 1, "level": 10, - "hit": 5000, - "flee": 5000, + "hit": 100000, + "flee": 10000, "cri": 5000, "antCri": 0, - "physicaldamageInc": 5000, + "physicaldamageInc": 0, "physicaldamageDec": 0, "magicdamageInc": 0, "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 10000 + "damageCri": 50000, + "strikeBack": 50000 }, { "id": 2, "level": 20, - "hit": 10000, + "hit": 100000, "flee": 10000, - "cri": 10000, + "cri": 5000, "antCri": 0, - "physicaldamageInc": 10000, + "physicaldamageInc": 0, "physicaldamageDec": 0, "magicdamageInc": 0, "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 10000 + "damageCri": 50000, + "strikeBack": 50000 }, { "id": 3, "level": 30, - "hit": 15000, + "hit": 105000, "flee": 15000, - "cri": 15000, - "antCri": 0, - "physicaldamageInc": 15000, + "cri": 10000, + "antCri": 5000, + "physicaldamageInc": 0, "physicaldamageDec": 0, "magicdamageInc": 0, "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 15000 + "damageCri": 50000, + "strikeBack": 50000 }, { "id": 4, "level": 40, - "hit": 20000, + "hit": 110000, "flee": 20000, "cri": 20000, - "antCri": 0, - "physicaldamageInc": 20000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 20000 + "antCri": 15000, + "physicaldamageInc": 10000, + "physicaldamageDec": 10000, + "magicdamageInc": 10000, + "magicdamageDec": 10000, + "damageCri": 50000, + "strikeBack": 50000 }, { "id": 5, "level": 50, - "hit": 25000, + "hit": 115000, "flee": 25000, - "cri": 25000, - "antCri": 0, - "physicaldamageInc": 25000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 25000 + "cri": 30000, + "antCri": 25000, + "physicaldamageInc": 20000, + "physicaldamageDec": 20000, + "magicdamageInc": 20000, + "magicdamageDec": 20000, + "damageCri": 50000, + "strikeBack": 50000 }, { "id": 6, "level": 60, - "hit": 30000, + "hit": 120000, "flee": 30000, - "cri": 30000, - "antCri": 0, + "cri": 40000, + "antCri": 35000, "physicaldamageInc": 30000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 30000 + "physicaldamageDec": 30000, + "magicdamageInc": 30000, + "magicdamageDec": 30000, + "damageCri": 55000, + "strikeBack": 55000 }, { "id": 7, "level": 70, - "hit": 35000, - "flee": 35000, - "cri": 35000, - "antCri": 0, - "physicaldamageInc": 35000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 35000 + "hit": 130000, + "flee": 40000, + "cri": 50000, + "antCri": 45000, + "physicaldamageInc": 40000, + "physicaldamageDec": 40000, + "magicdamageInc": 40000, + "magicdamageDec": 40000, + "damageCri": 55000, + "strikeBack": 55000 }, { "id": 8, "level": 80, - "hit": 40000, - "flee": 40000, - "cri": 40000, - "antCri": 0, - "physicaldamageInc": 40000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 40000 + "hit": 140000, + "flee": 50000, + "cri": 60000, + "antCri": 55000, + "physicaldamageInc": 50000, + "physicaldamageDec": 50000, + "magicdamageInc": 50000, + "magicdamageDec": 50000, + "damageCri": 55000, + "strikeBack": 60000 }, { "id": 9, "level": 90, - "hit": 45000, - "flee": 45000, - "cri": 45000, - "antCri": 0, - "physicaldamageInc": 45000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 45000 + "hit": 150000, + "flee": 60000, + "cri": 70000, + "antCri": 65000, + "physicaldamageInc": 60000, + "physicaldamageDec": 60000, + "magicdamageInc": 60000, + "magicdamageDec": 60000, + "damageCri": 60000, + "strikeBack": 65000 }, { "id": 10, "level": 100, - "hit": 50000, - "flee": 50000, - "cri": 50000, - "antCri": 0, - "physicaldamageInc": 50000, - "physicaldamageDec": 0, - "magicdamageInc": 0, - "magicdamageDec": 0, - "damageCri": 0, - "strikeBack": 50000 + "hit": 160000, + "flee": 70000, + "cri": 80000, + "antCri": 75000, + "physicaldamageInc": 70000, + "physicaldamageDec": 70000, + "magicdamageInc": 70000, + "magicdamageDec": 70000, + "damageCri": 60000, + "strikeBack": 70000 } ] \ No newline at end of file