拍卖行:定时任务加锁

This commit is contained in:
luying
2022-05-05 19:26:11 +08:00
parent 4f42a8d3b5
commit c4793c7e8a
6 changed files with 106 additions and 85 deletions
+15 -1
View File
@@ -15,6 +15,8 @@ import { RewardInter } from '../pubUtils/interface';
import { reportTAEvent } from './sdkService'; import { reportTAEvent } from './sdkService';
import { getAllServers } from './redisService'; import { getAllServers } from './redisService';
import { sendMessageToGuildWithSuc, sendMessageToServer, sendMessageToServerWithSuc } from './pushService'; import { sendMessageToGuildWithSuc, sendMessageToServer, sendMessageToServerWithSuc } from './pushService';
import { lockDataWithNoParam } from './redLockService';
import { DATA_NAME } from '../consts';
// ! 获取底价,假数据 // ! 获取底价,假数据
export function getBasePrice(gid: number, count: number) { export function getBasePrice(gid: number, count: number) {
@@ -290,6 +292,9 @@ export async function calculateDividend(dividend: DividendType) {
} }
export async function startGuildAuction() { export async function startGuildAuction() {
let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁
if (!!res.err) return false;
try { try {
console.log('schedule startGuildAuction called:', new Date()); console.log('schedule startGuildAuction called:', new Date());
const begin = await todayGuildBegin(); const begin = await todayGuildBegin();
@@ -304,10 +309,11 @@ export async function startGuildAuction() {
} }
await pushAuctionUpdate(lots, dividends); await pushAuctionUpdate(lots, dividends);
res.releaseCallback();
return true; return true;
} catch (e) { } catch (e) {
console.error('startGuildAuction err: ', e); console.error('startGuildAuction err: ', e);
res.releaseCallback();
return false; return false;
} }
} }
@@ -330,6 +336,8 @@ export async function sendLotsRewardToMlail(lots: LotType[]) {
} }
export async function startWorldAuction() { export async function startWorldAuction() {
let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁
if (!!res.err) return false;
try { try {
console.log('schedule startWorldAuction called:', new Date()); console.log('schedule startWorldAuction called:', new Date());
const begin = await todayGuildBegin(); const begin = await todayGuildBegin();
@@ -345,14 +353,18 @@ export async function startWorldAuction() {
await pushCurrentTime(time); await pushCurrentTime(time);
} }
await pushAuctionUpdate(lots, dividends); await pushAuctionUpdate(lots, dividends);
res.releaseCallback();
return true; return true;
} catch (e) { } catch (e) {
console.error('startWorldAuction err: ', e); console.error('startWorldAuction err: ', e);
res.releaseCallback();
return false; return false;
} }
} }
export async function stopAuction() { export async function stopAuction() {
let res: any = await lockDataWithNoParam(DATA_NAME.SEND_AUCTION);//加锁
if (!!res.err) return false;
try { try {
console.log('schedule stopAuction called:', new Date()); console.log('schedule stopAuction called:', new Date());
const begin = await todayGuildBegin(); const begin = await todayGuildBegin();
@@ -367,9 +379,11 @@ export async function stopAuction() {
await pushCurrentTime(time); await pushCurrentTime(time);
} }
await pushAuctionUpdate(lots, []); await pushAuctionUpdate(lots, []);
res.releaseCallback();
return true; return true;
} catch (e) { } catch (e) {
console.error('stopAuction err: ', e); console.error('stopAuction err: ', e);
res.releaseCallback();
return false; return false;
} }
} }
+1 -1
View File
@@ -141,7 +141,7 @@ export async function getModuleData(type: string, data: { role: RoleType, sessio
case 'daily': // 每日 case 'daily': // 每日
return await getDailyBattleList(role); return await getDailyBattleList(role);
case 'expedition': // 远征 case 'expedition': // 远征
return await getExpeditionStatus(roleId, roleName); return await getExpeditionStatus(roleId, roleName, true);
case 'tower': // 镇念塔 case 'tower': // 镇念塔
return await getTowerEntryData(role); return await getTowerEntryData(role);
case 'comBattle': // 寻宝 case 'comBattle': // 寻宝
@@ -18,10 +18,11 @@ import { checkSystemIsOpen } from './roleService';
* @param roleId * @param roleId
* @param roleName * @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); 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); let expeditionRecord = await ExpeditionRecordModel.getCurRecord(roleId);
if (!expeditionRecord) { // 首次新建一条记录 if (!expeditionRecord) { // 首次新建一条记录
@@ -68,6 +68,11 @@ export async function lockData(serverId: number, dataName: string, id: string )
return await lock(lockKey); return await lock(lockKey);
} }
export async function lockDataWithNoParam(dataName: string) {
let key = `${dataName}`;
return await lock(key);
}
function lock(lockKey: string) { function lock(lockKey: string) {
return _redlockCache.redlock.lock(lockKey, _redlockCache.ttl).then(function(lock) { return _redlockCache.redlock.lock(lockKey, _redlockCache.ttl).then(function(lock) {
setLock(lockKey, lock); setLock(lockKey, lock);
+1
View File
@@ -12,4 +12,5 @@ export enum DATA_NAME {
AUCTION_LOT = 'LotCode', AUCTION_LOT = 'LotCode',
DONATE = 'Donate', DONATE = 'Donate',
FUND = 'fund', FUND = 'fund',
SEND_AUCTION = 'sendAuction',
} }
@@ -2,141 +2,141 @@
{ {
"id": 1, "id": 1,
"level": 10, "level": 10,
"hit": 5000, "hit": 100000,
"flee": 5000, "flee": 10000,
"cri": 5000, "cri": 5000,
"antCri": 0, "antCri": 0,
"physicaldamageInc": 5000, "physicaldamageInc": 0,
"physicaldamageDec": 0, "physicaldamageDec": 0,
"magicdamageInc": 0, "magicdamageInc": 0,
"magicdamageDec": 0, "magicdamageDec": 0,
"damageCri": 0, "damageCri": 50000,
"strikeBack": 10000 "strikeBack": 50000
}, },
{ {
"id": 2, "id": 2,
"level": 20, "level": 20,
"hit": 10000, "hit": 100000,
"flee": 10000, "flee": 10000,
"cri": 10000, "cri": 5000,
"antCri": 0, "antCri": 0,
"physicaldamageInc": 10000, "physicaldamageInc": 0,
"physicaldamageDec": 0, "physicaldamageDec": 0,
"magicdamageInc": 0, "magicdamageInc": 0,
"magicdamageDec": 0, "magicdamageDec": 0,
"damageCri": 0, "damageCri": 50000,
"strikeBack": 10000 "strikeBack": 50000
}, },
{ {
"id": 3, "id": 3,
"level": 30, "level": 30,
"hit": 15000, "hit": 105000,
"flee": 15000, "flee": 15000,
"cri": 15000, "cri": 10000,
"antCri": 0, "antCri": 5000,
"physicaldamageInc": 15000, "physicaldamageInc": 0,
"physicaldamageDec": 0, "physicaldamageDec": 0,
"magicdamageInc": 0, "magicdamageInc": 0,
"magicdamageDec": 0, "magicdamageDec": 0,
"damageCri": 0, "damageCri": 50000,
"strikeBack": 15000 "strikeBack": 50000
}, },
{ {
"id": 4, "id": 4,
"level": 40, "level": 40,
"hit": 20000, "hit": 110000,
"flee": 20000, "flee": 20000,
"cri": 20000, "cri": 20000,
"antCri": 0, "antCri": 15000,
"physicaldamageInc": 20000, "physicaldamageInc": 10000,
"physicaldamageDec": 0, "physicaldamageDec": 10000,
"magicdamageInc": 0, "magicdamageInc": 10000,
"magicdamageDec": 0, "magicdamageDec": 10000,
"damageCri": 0, "damageCri": 50000,
"strikeBack": 20000 "strikeBack": 50000
}, },
{ {
"id": 5, "id": 5,
"level": 50, "level": 50,
"hit": 25000, "hit": 115000,
"flee": 25000, "flee": 25000,
"cri": 25000, "cri": 30000,
"antCri": 0, "antCri": 25000,
"physicaldamageInc": 25000, "physicaldamageInc": 20000,
"physicaldamageDec": 0, "physicaldamageDec": 20000,
"magicdamageInc": 0, "magicdamageInc": 20000,
"magicdamageDec": 0, "magicdamageDec": 20000,
"damageCri": 0, "damageCri": 50000,
"strikeBack": 25000 "strikeBack": 50000
}, },
{ {
"id": 6, "id": 6,
"level": 60, "level": 60,
"hit": 30000, "hit": 120000,
"flee": 30000, "flee": 30000,
"cri": 30000, "cri": 40000,
"antCri": 0, "antCri": 35000,
"physicaldamageInc": 30000, "physicaldamageInc": 30000,
"physicaldamageDec": 0, "physicaldamageDec": 30000,
"magicdamageInc": 0, "magicdamageInc": 30000,
"magicdamageDec": 0, "magicdamageDec": 30000,
"damageCri": 0, "damageCri": 55000,
"strikeBack": 30000 "strikeBack": 55000
}, },
{ {
"id": 7, "id": 7,
"level": 70, "level": 70,
"hit": 35000, "hit": 130000,
"flee": 35000, "flee": 40000,
"cri": 35000, "cri": 50000,
"antCri": 0, "antCri": 45000,
"physicaldamageInc": 35000, "physicaldamageInc": 40000,
"physicaldamageDec": 0, "physicaldamageDec": 40000,
"magicdamageInc": 0, "magicdamageInc": 40000,
"magicdamageDec": 0, "magicdamageDec": 40000,
"damageCri": 0, "damageCri": 55000,
"strikeBack": 35000 "strikeBack": 55000
}, },
{ {
"id": 8, "id": 8,
"level": 80, "level": 80,
"hit": 40000, "hit": 140000,
"flee": 40000, "flee": 50000,
"cri": 40000, "cri": 60000,
"antCri": 0, "antCri": 55000,
"physicaldamageInc": 40000, "physicaldamageInc": 50000,
"physicaldamageDec": 0, "physicaldamageDec": 50000,
"magicdamageInc": 0, "magicdamageInc": 50000,
"magicdamageDec": 0, "magicdamageDec": 50000,
"damageCri": 0, "damageCri": 55000,
"strikeBack": 40000 "strikeBack": 60000
}, },
{ {
"id": 9, "id": 9,
"level": 90, "level": 90,
"hit": 45000, "hit": 150000,
"flee": 45000, "flee": 60000,
"cri": 45000, "cri": 70000,
"antCri": 0, "antCri": 65000,
"physicaldamageInc": 45000, "physicaldamageInc": 60000,
"physicaldamageDec": 0, "physicaldamageDec": 60000,
"magicdamageInc": 0, "magicdamageInc": 60000,
"magicdamageDec": 0, "magicdamageDec": 60000,
"damageCri": 0, "damageCri": 60000,
"strikeBack": 45000 "strikeBack": 65000
}, },
{ {
"id": 10, "id": 10,
"level": 100, "level": 100,
"hit": 50000, "hit": 160000,
"flee": 50000, "flee": 70000,
"cri": 50000, "cri": 80000,
"antCri": 0, "antCri": 75000,
"physicaldamageInc": 50000, "physicaldamageInc": 70000,
"physicaldamageDec": 0, "physicaldamageDec": 70000,
"magicdamageInc": 0, "magicdamageInc": 70000,
"magicdamageDec": 0, "magicdamageDec": 70000,
"damageCri": 0, "damageCri": 60000,
"strikeBack": 50000 "strikeBack": 70000
} }
] ]