jp.ms.common.modules 1.0.22 → 1.0.24
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/modules/base-achievements/base-achievements.module.d.ts +5 -3
- package/dist/modules/base-achievements/base-achievements.module.js +32 -23
- package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/modules/base-achievements/base-achievements.module.ts +44 -24
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jp.ms.common.modules",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.24",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"author": "",
|
|
8
8
|
"license": "ISC",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@nestjs/common": "11.1.
|
|
11
|
-
"@nestjs/config": "4.0.
|
|
10
|
+
"@nestjs/common": "^11.1.19",
|
|
11
|
+
"@nestjs/config": "^4.0.4",
|
|
12
12
|
"@nestjs/core": "11.1.0",
|
|
13
13
|
"@nestjs/mongoose": "11.0.4",
|
|
14
14
|
"@nestjs/websockets": "11.1.9",
|
|
15
15
|
"dayjs": "1.11.18",
|
|
16
|
-
"jp.common.models": "1.1.
|
|
17
|
-
"jp.common.utils": "1.0.
|
|
18
|
-
"jp.db.schemas": "2.
|
|
16
|
+
"jp.common.models": "1.1.6",
|
|
17
|
+
"jp.common.utils": "1.0.4",
|
|
18
|
+
"jp.db.schemas": "2.2.2",
|
|
19
19
|
"jp.ms.common.engine": "3.0.8",
|
|
20
20
|
"mongoose": "9.1.5",
|
|
21
21
|
"nestjs-i18n": "10.5.1",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"socket.io": "4.8.1"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@nestjs/swagger": "11.
|
|
29
|
+
"@nestjs/swagger": "^11.4.1",
|
|
30
30
|
"@types/express": "^5.0.6",
|
|
31
31
|
"@types/node": "22.15.3",
|
|
32
32
|
"@types/node-schedule": "2.1.8",
|
|
@@ -43,4 +43,4 @@
|
|
|
43
43
|
"src",
|
|
44
44
|
"dist"
|
|
45
45
|
]
|
|
46
|
-
}
|
|
46
|
+
}
|
|
@@ -9,7 +9,10 @@ import {
|
|
|
9
9
|
UsersRepository,
|
|
10
10
|
AchievementRepository,
|
|
11
11
|
Achievement,
|
|
12
|
-
AchievementSchema
|
|
12
|
+
AchievementSchema,
|
|
13
|
+
UsersAchievement,
|
|
14
|
+
UsersAchievementSchema,
|
|
15
|
+
UsersAchievementsRepository,
|
|
13
16
|
} from 'jp.db.schemas';
|
|
14
17
|
import {
|
|
15
18
|
BaseAppEvent,
|
|
@@ -41,11 +44,13 @@ import { PlayersManagerService } from '../players-manager';
|
|
|
41
44
|
MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
|
|
42
45
|
MongooseModule.forFeature([{ name: ActivityLog.name, schema: ActivityLogSchema }]),
|
|
43
46
|
MongooseModule.forFeature([{ name: Achievement.name, schema: AchievementSchema }]),
|
|
47
|
+
MongooseModule.forFeature([{ name: UsersAchievement.name, schema: UsersAchievementSchema }]),
|
|
44
48
|
],
|
|
45
49
|
providers: [
|
|
46
50
|
UsersRepository,
|
|
47
51
|
ActivityLogRepository,
|
|
48
52
|
AchievementRepository,
|
|
53
|
+
UsersAchievementsRepository,
|
|
49
54
|
EventsBusAppSubscribeService,
|
|
50
55
|
],
|
|
51
56
|
})
|
|
@@ -56,19 +61,21 @@ export abstract class BaseAchievementsModule {
|
|
|
56
61
|
protected readonly usersRepository: UsersRepository,
|
|
57
62
|
protected readonly activityLogRepository: ActivityLogRepository,
|
|
58
63
|
protected readonly achievementRepository: AchievementRepository,
|
|
64
|
+
protected readonly usersAchievementRepository: UsersAchievementsRepository,
|
|
59
65
|
) {
|
|
60
66
|
}
|
|
61
67
|
|
|
62
|
-
async onModuleInit() {
|
|
68
|
+
async onModuleInit () {
|
|
63
69
|
this.eventsBusAppSubscribeService.subscribe(this.onHandleAppEvent);
|
|
64
70
|
}
|
|
65
71
|
|
|
66
|
-
protected async onHandleAppEvent(event: BaseAppEvent) {
|
|
72
|
+
protected async onHandleAppEvent (event: BaseAppEvent) {
|
|
67
73
|
if (event instanceof BaseUserAppEvent) {
|
|
68
74
|
const userId = event.userId;
|
|
69
75
|
const player = this.playersManager.getPlayerById(userId);
|
|
70
76
|
const foundUser = await this.usersRepository.findById(userId);
|
|
71
77
|
const allAchievements: Array<Achievement> = await this.achievementRepository.findAchievements();
|
|
78
|
+
const usersAchievements: Array<UsersAchievement> = await this.usersAchievementRepository.findAchivementsByUserId(userId);
|
|
72
79
|
|
|
73
80
|
if (!player || !foundUser) {
|
|
74
81
|
throw new InternalServerErrorException();
|
|
@@ -82,76 +89,89 @@ export abstract class BaseAchievementsModule {
|
|
|
82
89
|
'buttonText'
|
|
83
90
|
));
|
|
84
91
|
|
|
85
|
-
if (
|
|
92
|
+
if (this.userHasNoAchievement(usersAchievements, GotLevel3Achievement.code)) {
|
|
86
93
|
if (new GotLevel3Achievement(event.newLevel).userGotAchievement()) {
|
|
87
|
-
this.giveAchievement(allAchievements, GotLevel3Achievement.code,
|
|
94
|
+
this.giveAchievement(allAchievements, GotLevel3Achievement.code, foundUser);
|
|
88
95
|
}
|
|
89
96
|
}
|
|
90
97
|
|
|
91
|
-
if (
|
|
98
|
+
if (this.userHasNoAchievement(usersAchievements, GotLevel10Achievement.code)) {
|
|
92
99
|
if (new GotLevel10Achievement(event.newLevel).userGotAchievement()) {
|
|
93
|
-
this.giveAchievement(allAchievements, GotLevel10Achievement.code,
|
|
100
|
+
this.giveAchievement(allAchievements, GotLevel10Achievement.code, foundUser);
|
|
94
101
|
}
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
} else if (event instanceof UserPlayedTheGameAppEvent) {
|
|
98
|
-
|
|
105
|
+
|
|
106
|
+
if (this.userHasNoAchievement(usersAchievements, Playd10GamesAchievement.code)) {
|
|
99
107
|
const playdGamesCount = await this.activityLogRepository.getUserPlayedGamesCount(userId);
|
|
100
108
|
|
|
101
109
|
if (new Playd10GamesAchievement(playdGamesCount).userGotAchievement()) {
|
|
102
|
-
this.giveAchievement(allAchievements, Playd10GamesAchievement.code,
|
|
110
|
+
this.giveAchievement(allAchievements, Playd10GamesAchievement.code, foundUser);
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
113
|
} else if (event instanceof UserWonTheGameAppEvent) {
|
|
106
|
-
if (
|
|
114
|
+
if (this.userHasNoAchievement(usersAchievements, Won3GamesAchievement.code)) {
|
|
107
115
|
const wonGamesCount = await this.activityLogRepository.getUserWonGamesCount(userId);
|
|
108
116
|
|
|
109
117
|
if (new Won3GamesAchievement(wonGamesCount).userGotAchievement()) {
|
|
110
|
-
this.giveAchievement(allAchievements, Won3GamesAchievement.code,
|
|
118
|
+
this.giveAchievement(allAchievements, Won3GamesAchievement.code, foundUser);
|
|
111
119
|
}
|
|
112
120
|
}
|
|
113
121
|
|
|
114
|
-
if (
|
|
122
|
+
if (this.userHasNoAchievement(usersAchievements, Won3ProfiAchievement.code)) {
|
|
115
123
|
const wonProfiCount = await this.activityLogRepository.getUserWonProfiCount(userId);
|
|
116
124
|
if (new Won3ProfiAchievement(wonProfiCount).userGotAchievement()) {
|
|
117
|
-
this.giveAchievement(allAchievements, Won3ProfiAchievement.code,
|
|
125
|
+
this.giveAchievement(allAchievements, Won3ProfiAchievement.code, foundUser);
|
|
118
126
|
}
|
|
119
127
|
}
|
|
120
128
|
|
|
121
|
-
if (
|
|
129
|
+
if (this.userHasNoAchievement(usersAchievements, EarnOneMillionAchievement.code)) {
|
|
122
130
|
if (new EarnOneMillionAchievement(foundUser.balance).userGotAchievement()) {
|
|
123
|
-
this.giveAchievement(allAchievements, EarnOneMillionAchievement.code,
|
|
131
|
+
this.giveAchievement(allAchievements, EarnOneMillionAchievement.code, foundUser);
|
|
124
132
|
}
|
|
125
133
|
}
|
|
126
134
|
} else if (event instanceof UserWonOneTableTournamentAppEvent) {
|
|
127
|
-
if (
|
|
135
|
+
if (this.userHasNoAchievement(usersAchievements, WonOneTableTournament3TimesAchievement.code)) {
|
|
128
136
|
const wonFastTournamentCount = await this.activityLogRepository.getUserWonOneTableTournamentCount(userId);
|
|
129
137
|
if (new WonOneTableTournament3TimesAchievement(wonFastTournamentCount).userGotAchievement()) {
|
|
130
|
-
this.giveAchievement(allAchievements, WonOneTableTournament3TimesAchievement.code,
|
|
138
|
+
this.giveAchievement(allAchievements, WonOneTableTournament3TimesAchievement.code, foundUser);
|
|
131
139
|
}
|
|
132
140
|
}
|
|
133
141
|
} else if (event instanceof UserWonManyTablesTournamentAppEvent) {
|
|
134
|
-
if (
|
|
142
|
+
if (this.userHasNoAchievement(usersAchievements, Take1PlaceOnManyTablesTournamentAchievement.code)) {
|
|
135
143
|
if (new Take1PlaceOnManyTablesTournamentAchievement(event.rank)) {
|
|
136
|
-
this.giveAchievement(allAchievements, Take1PlaceOnManyTablesTournamentAchievement.code,
|
|
144
|
+
this.giveAchievement(allAchievements, Take1PlaceOnManyTablesTournamentAchievement.code, foundUser);
|
|
137
145
|
}
|
|
138
146
|
}
|
|
139
147
|
|
|
140
|
-
if (
|
|
148
|
+
if (this.userHasNoAchievement(usersAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code)) {
|
|
141
149
|
if (new Take2Or3PlaceOnManyTablesTournamentAchievement(event.rank)) {
|
|
142
|
-
this.giveAchievement(allAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code,
|
|
150
|
+
this.giveAchievement(allAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code, foundUser);
|
|
143
151
|
}
|
|
144
152
|
}
|
|
145
153
|
}
|
|
146
154
|
}
|
|
147
155
|
}
|
|
148
156
|
|
|
149
|
-
protected
|
|
157
|
+
protected userHasNoAchievement (usersAchievements: Array<UsersAchievement>, achievementCode: string) {
|
|
158
|
+
return !usersAchievements.find((item) => item.achievementCode === achievementCode);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
protected async giveAchievement (allAchievements: Array<Achievement>, achievementCode: string, user: User) {
|
|
150
162
|
const foundAchievement = allAchievements.find((item) => item.code === achievementCode);
|
|
151
|
-
const player = this.playersManager.getPlayerById(userId);
|
|
163
|
+
const player = this.playersManager.getPlayerById(user.userId);
|
|
152
164
|
|
|
153
165
|
if (foundAchievement && player) {
|
|
154
|
-
await this.
|
|
166
|
+
await this.usersAchievementRepository.addUsersAchievement(
|
|
167
|
+
user.userId,
|
|
168
|
+
user.fullName,
|
|
169
|
+
foundAchievement.achievementId,
|
|
170
|
+
foundAchievement.title,
|
|
171
|
+
foundAchievement.code,
|
|
172
|
+
foundAchievement.prize,
|
|
173
|
+
'',
|
|
174
|
+
);
|
|
155
175
|
|
|
156
176
|
player.sendMessage(new SnackbarSendToPlayerWsEvent(
|
|
157
177
|
AppScreenIconEnum.EMOJI_EVENTS,
|