jp.ms.common.modules 1.0.54 → 1.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exception/global-exception-filter.js +5 -7
- package/dist/exception/global-exception-filter.js.map +1 -1
- package/dist/modules/main/main-tables-list-screen.view.js +5 -2
- package/dist/modules/main/main-tables-list-screen.view.js.map +1 -1
- package/dist/modules/main/main.controller.d.ts +1 -1
- package/dist/modules/main/main.controller.js +1 -1
- package/dist/modules/main/main.controller.js.map +1 -1
- package/dist/modules/main/main.service.d.ts +1 -1
- package/dist/modules/main/main.service.js +10 -3
- package/dist/modules/main/main.service.js.map +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.d.ts +2 -2
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +2 -3
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.module.js +4 -0
- package/dist/modules/many-tables-tournament/many-tables-tournament.module.js.map +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.service.d.ts +5 -4
- package/dist/modules/many-tables-tournament/many-tables-tournament.service.js +30 -21
- package/dist/modules/many-tables-tournament/many-tables-tournament.service.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.d.ts +2 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js +3 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.d.ts +7 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js +48 -3
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/one-table-tournament/one-table-tournament.controller.d.ts +1 -1
- package/dist/modules/one-table-tournament/one-table-tournament.controller.js +1 -1
- package/dist/modules/one-table-tournament/one-table-tournament.module.js +6 -1
- package/dist/modules/one-table-tournament/one-table-tournament.module.js.map +1 -1
- package/dist/modules/one-table-tournament/one-table-tournament.service.d.ts +4 -2
- package/dist/modules/one-table-tournament/one-table-tournament.service.js +20 -8
- package/dist/modules/one-table-tournament/one-table-tournament.service.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.d.ts +2 -0
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.d.ts +3 -2
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js +15 -2
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.d.ts +10 -2
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js +53 -7
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/simple-rooms/simple-rooms.controller.d.ts +1 -1
- package/dist/modules/simple-rooms/simple-rooms.controller.js +2 -2
- package/dist/modules/simple-rooms/simple-rooms.controller.js.map +1 -1
- package/dist/modules/simple-rooms/simple-rooms.module.js +2 -1
- package/dist/modules/simple-rooms/simple-rooms.module.js.map +1 -1
- package/dist/modules/simple-rooms/simple-rooms.service.d.ts +4 -2
- package/dist/modules/simple-rooms/simple-rooms.service.js +20 -8
- package/dist/modules/simple-rooms/simple-rooms.service.js.map +1 -1
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js +2 -2
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/exception/global-exception-filter.ts +4 -10
- package/src/modules/main/main-tables-list-screen.view.ts +9 -2
- package/src/modules/main/main.controller.ts +1 -1
- package/src/modules/main/main.service.ts +20 -3
- package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +2 -2
- package/src/modules/many-tables-tournament/many-tables-tournament.module.ts +7 -0
- package/src/modules/many-tables-tournament/many-tables-tournament.service.ts +54 -38
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.ts +2 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.ts +3 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.ts +81 -3
- package/src/modules/one-table-tournament/one-table-tournament.controller.ts +1 -1
- package/src/modules/one-table-tournament/one-table-tournament.module.ts +9 -1
- package/src/modules/one-table-tournament/one-table-tournament.service.ts +30 -8
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.ts +2 -0
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts +24 -2
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts +69 -1
- package/src/modules/simple-rooms/simple-rooms.controller.ts +6 -2
- package/src/modules/simple-rooms/simple-rooms.module.ts +5 -1
- package/src/modules/simple-rooms/simple-rooms.service.ts +32 -6
- package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +2 -2
package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Inject,
|
|
3
|
+
Injectable,
|
|
4
|
+
InternalServerErrorException,
|
|
5
|
+
} from '@nestjs/common';
|
|
2
6
|
import {
|
|
3
7
|
BaseGameEvent,
|
|
4
8
|
GameMaster,
|
|
@@ -23,11 +27,13 @@ import {
|
|
|
23
27
|
GameResultRepository,
|
|
24
28
|
OneTableTournamentRoomDocument,
|
|
25
29
|
OneTableTournamentRoomsRepository,
|
|
30
|
+
PurchaseRepository,
|
|
26
31
|
RatingRepository,
|
|
27
32
|
UsersRepository,
|
|
28
33
|
} from 'jp.db.schemas';
|
|
29
34
|
import { InjectConnection } from '@nestjs/mongoose';
|
|
30
35
|
import { Connection } from 'mongoose';
|
|
36
|
+
import schedule, { Job } from 'node-schedule';
|
|
31
37
|
|
|
32
38
|
import { JpLoggerService } from '../logger/jp-logger.service';
|
|
33
39
|
import {
|
|
@@ -36,6 +42,7 @@ import {
|
|
|
36
42
|
EventsBusOneTableTournamentSubscribeService,
|
|
37
43
|
} from '../event-bus';
|
|
38
44
|
import { TournamentRoomsManagerService } from '../../common/tournament-rooms-manager.service';
|
|
45
|
+
import { PlayersManagerService } from '../players-manager';
|
|
39
46
|
|
|
40
47
|
import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tournament-rooms-manager.constants';
|
|
41
48
|
import { OneTableTournamentRoomsFactoryOptions } from './one-table-tournament-rooms-manager.interfaces';
|
|
@@ -43,6 +50,7 @@ import { OneTableTournamentRoomsFactoryOptions } from './one-table-tournament-ro
|
|
|
43
50
|
@Injectable()
|
|
44
51
|
export class OneTableTournamentRoomsManagerService extends TournamentRoomsManagerService {
|
|
45
52
|
private readonly rooms: Map<string, OneTableTournamentRoom>;
|
|
53
|
+
private purgeRoomsJob: Job;
|
|
46
54
|
|
|
47
55
|
constructor(
|
|
48
56
|
private readonly tournamentRepository: OneTableTournamentRoomsRepository,
|
|
@@ -50,6 +58,7 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
50
58
|
private readonly gameResultRepository: GameResultRepository,
|
|
51
59
|
private readonly ratingRepository: RatingRepository,
|
|
52
60
|
private readonly activityLogRepository: ActivityLogRepository,
|
|
61
|
+
private readonly purchaseRepository: PurchaseRepository,
|
|
53
62
|
private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
|
|
54
63
|
private readonly eventsBusOneTableTournamentSubscribeService: EventsBusOneTableTournamentSubscribeService,
|
|
55
64
|
private readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
|
|
@@ -57,6 +66,7 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
57
66
|
private readonly options: OneTableTournamentRoomsFactoryOptions,
|
|
58
67
|
@InjectConnection() private readonly connection: Connection,
|
|
59
68
|
@Inject() private readonly logger: JpLoggerService,
|
|
69
|
+
private readonly playersManager: PlayersManagerService,
|
|
60
70
|
) {
|
|
61
71
|
super();
|
|
62
72
|
this.rooms = new Map<string, OneTableTournamentRoom>();
|
|
@@ -90,6 +100,10 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
90
100
|
this.rooms.set(room.getId(), room);
|
|
91
101
|
}
|
|
92
102
|
|
|
103
|
+
removeRoom(roomId: string) {
|
|
104
|
+
this.rooms.delete(roomId);
|
|
105
|
+
}
|
|
106
|
+
|
|
93
107
|
async createMasterTournament() {
|
|
94
108
|
const waitingTournament =
|
|
95
109
|
await this.tournamentRepository.findWaitingTournament(this.gameType);
|
|
@@ -113,6 +127,31 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
113
127
|
});
|
|
114
128
|
}
|
|
115
129
|
|
|
130
|
+
runPurgeRoomsJob() {
|
|
131
|
+
const purgeRoomsTime = this.options.purgeRoomsTime;
|
|
132
|
+
|
|
133
|
+
if (purgeRoomsTime) {
|
|
134
|
+
this.logger.log(
|
|
135
|
+
`${OneTableTournamentRoomsManagerService.name}: runPurgeRoomsJob`,
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
this.purgeRoomsJob = schedule.scheduleJob(purgeRoomsTime, () =>
|
|
139
|
+
this.purgeRooms(),
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
purgeRooms() {
|
|
145
|
+
for (const room of this.getRooms()) {
|
|
146
|
+
if (!room.isActual()) {
|
|
147
|
+
this.removeRoom(room.getId());
|
|
148
|
+
this.logger.log(
|
|
149
|
+
`${OneTableTournamentRoomsManagerService.name}: removeRoom: ${room.getId()}`,
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
116
155
|
private oneTableTournamentDocumentToTournamentRoom(
|
|
117
156
|
tournamentDocument: OneTableTournamentRoomDocument,
|
|
118
157
|
): TournamentRoomConfig {
|
|
@@ -141,6 +180,7 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
141
180
|
tournamentWinners: tournamentDocument.winners,
|
|
142
181
|
maxParticipants: tournamentDocument.maxParticipants,
|
|
143
182
|
participants: tournamentDocument.participants,
|
|
183
|
+
finishDate: tournamentDocument.finishDate,
|
|
144
184
|
};
|
|
145
185
|
}
|
|
146
186
|
|
|
@@ -212,6 +252,10 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
212
252
|
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
213
253
|
|
|
214
254
|
try {
|
|
255
|
+
for (const participant of master.getRoom().getParticipants()) {
|
|
256
|
+
await this.buyTicket(master.getTournamentId(), participant.playerId);
|
|
257
|
+
}
|
|
258
|
+
|
|
215
259
|
await this.tournamentRepository.startTournament(
|
|
216
260
|
master.getTournamentId(),
|
|
217
261
|
master.getRoom().getParticipants(),
|
|
@@ -272,4 +316,28 @@ export class OneTableTournamentRoomsManagerService extends TournamentRoomsManage
|
|
|
272
316
|
updateEvent,
|
|
273
317
|
);
|
|
274
318
|
};
|
|
319
|
+
|
|
320
|
+
private async buyTicket(tournamentId: string, playerId: string) {
|
|
321
|
+
const tournament = this.getRoomById(tournamentId);
|
|
322
|
+
const user = await this.usersRepository.findById(playerId);
|
|
323
|
+
const player = this.playersManager.getPlayerById(playerId);
|
|
324
|
+
|
|
325
|
+
if (!tournament || !user || !player) {
|
|
326
|
+
throw new InternalServerErrorException();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
player.decreaseBalance(tournament.getTicketPrice());
|
|
330
|
+
|
|
331
|
+
void this.purchaseRepository.addOneTableTournamentTicketPurchase(
|
|
332
|
+
player.id,
|
|
333
|
+
player.fullName,
|
|
334
|
+
tournamentId,
|
|
335
|
+
tournament.getTicketPrice(),
|
|
336
|
+
tournament.getGameType(),
|
|
337
|
+
);
|
|
338
|
+
void this.usersRepository.subtractFromBalance(
|
|
339
|
+
player.id,
|
|
340
|
+
tournament.getTicketPrice(),
|
|
341
|
+
);
|
|
342
|
+
}
|
|
275
343
|
}
|
|
@@ -28,8 +28,12 @@ export class SimpleRoomsController {
|
|
|
28
28
|
enterTheTable(
|
|
29
29
|
@Param('tableId') tableId: string,
|
|
30
30
|
@Headers() headers: IAppHeaders,
|
|
31
|
-
): IAppTableState {
|
|
32
|
-
return this.roomsService.enterTheTable(
|
|
31
|
+
): Promise<IAppTableState> {
|
|
32
|
+
return this.roomsService.enterTheTable(
|
|
33
|
+
tableId,
|
|
34
|
+
headers.client_auth_token,
|
|
35
|
+
headers.client_language,
|
|
36
|
+
);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
@Post('table/exit/:tableId')
|
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
SimpleRoom,
|
|
5
5
|
SimpleRoomSchema,
|
|
6
6
|
SimpleRoomsRepository,
|
|
7
|
+
User,
|
|
8
|
+
UserSchema,
|
|
9
|
+
UsersRepository,
|
|
7
10
|
} from 'jp.db.schemas';
|
|
8
11
|
|
|
9
12
|
import { SimpleRoomsController } from './simple-rooms.controller';
|
|
@@ -16,9 +19,10 @@ import { SimpleRoomsModuleOptions } from './simple-rooms.interfaces';
|
|
|
16
19
|
MongooseModule.forFeature([
|
|
17
20
|
{ name: SimpleRoom.name, schema: SimpleRoomSchema },
|
|
18
21
|
]),
|
|
22
|
+
MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
|
|
19
23
|
],
|
|
20
24
|
controllers: [SimpleRoomsController],
|
|
21
|
-
providers: [SimpleRoomsService, SimpleRoomsRepository],
|
|
25
|
+
providers: [SimpleRoomsService, SimpleRoomsRepository, UsersRepository],
|
|
22
26
|
})
|
|
23
27
|
export class SimpleRoomsModule {
|
|
24
28
|
constructor() {}
|
|
@@ -3,10 +3,19 @@ import {
|
|
|
3
3
|
Injectable,
|
|
4
4
|
InternalServerErrorException,
|
|
5
5
|
} from '@nestjs/common';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
IBaseMoveData,
|
|
8
|
+
IAppTableState,
|
|
9
|
+
ErrorSnackbarComponent,
|
|
10
|
+
} from 'jp.common.models';
|
|
11
|
+
import { UsersRepository } from 'jp.db.schemas';
|
|
7
12
|
|
|
8
13
|
import { SimpleRoomsManagerService } from '../simple-rooms-manager';
|
|
9
14
|
import { PlayersManagerService } from '../players-manager';
|
|
15
|
+
import {
|
|
16
|
+
NotEnoughMoneyForPurchaseException,
|
|
17
|
+
ErrorCodeEnum,
|
|
18
|
+
} from '../../exception';
|
|
10
19
|
|
|
11
20
|
import { SIMPLE_ROOMS_OPTIONS } from './simple-rooms.constants';
|
|
12
21
|
import { SimpleRoomsFactoryOptions } from './simple-rooms.interfaces';
|
|
@@ -16,6 +25,7 @@ export class SimpleRoomsService {
|
|
|
16
25
|
constructor(
|
|
17
26
|
private readonly simpleRoomsManager: SimpleRoomsManagerService,
|
|
18
27
|
private readonly playersManager: PlayersManagerService,
|
|
28
|
+
private readonly usersRepository: UsersRepository,
|
|
19
29
|
@Inject(SIMPLE_ROOMS_OPTIONS)
|
|
20
30
|
private readonly options: SimpleRoomsFactoryOptions,
|
|
21
31
|
) {}
|
|
@@ -34,18 +44,34 @@ export class SimpleRoomsService {
|
|
|
34
44
|
throw new InternalServerErrorException();
|
|
35
45
|
}
|
|
36
46
|
|
|
37
|
-
enterTheTable(
|
|
47
|
+
async enterTheTable(
|
|
48
|
+
tableId: string,
|
|
49
|
+
clientAuthToken: string,
|
|
50
|
+
clientLanguage: string,
|
|
51
|
+
): Promise<IAppTableState> {
|
|
38
52
|
const player = this.playersManager.getPlayerById(clientAuthToken);
|
|
39
53
|
const room = this.simpleRoomsManager.getRoomByTableId(tableId);
|
|
40
54
|
const master = room?.getMasterById(tableId);
|
|
55
|
+
const user = await this.usersRepository.findById(player?.id ?? '');
|
|
41
56
|
|
|
42
|
-
if (player
|
|
43
|
-
|
|
57
|
+
if (!player || !room || !master || !user) {
|
|
58
|
+
throw new InternalServerErrorException();
|
|
59
|
+
}
|
|
44
60
|
|
|
45
|
-
|
|
61
|
+
if (user.balance < room.getTicketPrice()) {
|
|
62
|
+
throw new NotEnoughMoneyForPurchaseException(
|
|
63
|
+
new ErrorSnackbarComponent(
|
|
64
|
+
ErrorCodeEnum.NOT_ENOUGH_MONEY_FOR_PURCHASE,
|
|
65
|
+
this.options.i18n.t('common.server.message.code.4002', {
|
|
66
|
+
lang: clientLanguage,
|
|
67
|
+
}),
|
|
68
|
+
),
|
|
69
|
+
);
|
|
46
70
|
}
|
|
47
71
|
|
|
48
|
-
|
|
72
|
+
room.handleEnterTheTable(player, tableId);
|
|
73
|
+
|
|
74
|
+
return master.createGameStateDto(player);
|
|
49
75
|
}
|
|
50
76
|
|
|
51
77
|
exitTheTable(tableId: string, clientAuthToken: string): IAppTableState {
|
|
@@ -149,7 +149,7 @@ export class SimpleRoomsManagerService extends RoomsManagerService {
|
|
|
149
149
|
tableSize: room.tableSize,
|
|
150
150
|
tableType: room.tableType,
|
|
151
151
|
bet: room.bet,
|
|
152
|
-
ticketPrice: room.ticketPrice
|
|
152
|
+
ticketPrice: room.ticketPrice,
|
|
153
153
|
title: room.title,
|
|
154
154
|
subtitle: room.subtitle,
|
|
155
155
|
description: room.description,
|
|
@@ -216,7 +216,7 @@ export class SimpleRoomsManagerService extends RoomsManagerService {
|
|
|
216
216
|
await this.gameResultRepository.createGameResult(
|
|
217
217
|
this.getGameTableResults(master),
|
|
218
218
|
);
|
|
219
|
-
const userGameResults = this.getUserGameResults(master,
|
|
219
|
+
const userGameResults = this.getUserGameResults(master, true);
|
|
220
220
|
await this.usersRepository.saveGameResult(userGameResults);
|
|
221
221
|
await this.ratingRepository.addBulkPlayerRating(
|
|
222
222
|
this.getUserRatings(master),
|