@@ -58,6 +58,252 @@ export const BadgeRepository = {
5858 }
5959 } ) ;
6060 }
61+ ,
62+ // 팔로워 뱃지 부여하기
63+ async GiveFollowerBadges ( artistId , accountId ) {
64+ const followerCount = await prisma . follow . count ( {
65+ where :{ artistId}
66+ } )
67+
68+ if ( followerCount >= 5 ) {
69+ const existingBadge = await prisma . userBadge . findFirst ( {
70+ where :{
71+ accountId,
72+ badgeId :1
73+ }
74+ } ) ;
75+
76+ if ( ! existingBadge ) {
77+ await prisma . userBadge . create ( {
78+ data :{
79+ accountId,
80+ badgeId :1 ,
81+ earnedAt :new Date ( ) ,
82+ }
83+ } )
84+ }
85+ }
86+
87+ if ( followerCount >= 10 ) {
88+ const existingBadge = await prisma . userBadge . findFirst ( {
89+ where :{
90+ accountId,
91+ badgeId :2
92+ }
93+ } ) ;
94+
95+ if ( ! existingBadge ) {
96+ await prisma . userBadge . create ( {
97+ data :{
98+ accountId,
99+ badgeId :2 ,
100+ earnedAt :new Date ( ) ,
101+ }
102+ } )
103+ }
104+ }
105+ if ( followerCount >= 20 ) {
106+ const existingBadge = await prisma . userBadge . findFirst ( {
107+ where :{
108+ accountId,
109+ badgeId :3
110+ }
111+ } ) ;
112+
113+ if ( ! existingBadge ) {
114+ await prisma . userBadge . create ( {
115+ data :{
116+ accountId,
117+ badgeId :3 ,
118+ earnedAt :new Date ( ) ,
119+ }
120+ } )
121+ }
122+ }
123+ if ( followerCount >= 100 ) {
124+ const existingBadge = await prisma . userBadge . findFirst ( {
125+ where :{
126+ accountId,
127+ badgeId :4
128+ }
129+ } ) ;
130+
131+ if ( ! existingBadge ) {
132+ await prisma . userBadge . create ( {
133+ data :{
134+ accountId,
135+ badgeId :4 ,
136+ earnedAt :new Date ( ) ,
137+ }
138+ } )
139+ }
140+ }
141+ } ,
142+ // 커미션 신청 뱃지 부여
143+ async GiveCommissionApplyBadges ( userId , accountId ) {
144+ const ApplyCommissionCount = await prisma . request . count ( {
145+ where :{
146+ userId
147+ }
148+ } )
149+
150+ if ( ApplyCommissionCount >= 1 ) {
151+ const existingBadge = await prisma . userBadge . findFirst ( {
152+ where :{
153+ accountId,
154+ badgeId :5
155+ }
156+ } ) ;
157+
158+ if ( ! existingBadge ) {
159+ await prisma . userBadge . create ( {
160+ data :{
161+ accountId,
162+ badgeId :5 ,
163+ earnedAt :new Date ( ) ,
164+ }
165+ } )
166+ }
167+ }
168+
169+ if ( ApplyCommissionCount >= 5 ) {
170+ const existingBadge = await prisma . userBadge . findFirst ( {
171+ where :{
172+ accountId,
173+ badgeId :6
174+ }
175+ } ) ;
176+
177+ if ( ! existingBadge ) {
178+ await prisma . userBadge . create ( {
179+ data :{
180+ accountId,
181+ badgeId :6 ,
182+ earnedAt :new Date ( ) ,
183+ }
184+ } )
185+ }
186+ }
187+ if ( ApplyCommissionCount >= 15 ) {
188+ const existingBadge = await prisma . userBadge . findFirst ( {
189+ where :{
190+ accountId,
191+ badgeId :7
192+ }
193+ } ) ;
194+
195+ if ( ! existingBadge ) {
196+ await prisma . userBadge . create ( {
197+ data :{
198+ accountId,
199+ badgeId :7 ,
200+ earnedAt :new Date ( ) ,
201+ }
202+ } )
203+ }
204+ }
205+ if ( ApplyCommissionCount >= 50 ) {
206+ const existingBadge = await prisma . userBadge . findFirst ( {
207+ where :{
208+ accountId,
209+ badgeId :8
210+ }
211+ } ) ;
212+
213+ if ( ! existingBadge ) {
214+ await prisma . userBadge . create ( {
215+ data :{
216+ accountId,
217+ badgeId :8 ,
218+ earnedAt :new Date ( ) ,
219+ }
220+ } )
221+ }
222+ }
223+ } ,
224+ // 후기 작성 뱃지 부여
225+ async GiveReviewBadges ( userId , accountId ) {
226+ const ReviewCount = await prisma . review . count ( {
227+ where :{
228+ userId
229+ }
230+ } )
231+
232+ if ( ReviewCount >= 1 ) {
233+ const existingBadge = await prisma . userBadge . findFirst ( {
234+ where :{
235+ accountId,
236+ badgeId :9
237+ }
238+ } ) ;
239+
240+ if ( ! existingBadge ) {
241+ await prisma . userBadge . create ( {
242+ data :{
243+ accountId,
244+ badgeId :9 ,
245+ earnedAt :new Date ( ) ,
246+ }
247+ } )
248+ }
249+ }
250+
251+ if ( ReviewCount >= 5 ) {
252+ const existingBadge = await prisma . userBadge . findFirst ( {
253+ where :{
254+ accountId,
255+ badgeId :10
256+ }
257+ } ) ;
258+
259+ if ( ! existingBadge ) {
260+ await prisma . userBadge . create ( {
261+ data :{
262+ accountId,
263+ badgeId :10 ,
264+ earnedAt :new Date ( ) ,
265+ }
266+ } )
267+ }
268+ }
269+ if ( ReviewCount >= 15 ) {
270+ const existingBadge = await prisma . userBadge . findFirst ( {
271+ where :{
272+ accountId,
273+ badgeId :11
274+ }
275+ } ) ;
276+
277+ if ( ! existingBadge ) {
278+ await prisma . userBadge . create ( {
279+ data :{
280+ accountId,
281+ badgeId :11 ,
282+ earnedAt :new Date ( ) ,
283+ }
284+ } )
285+ }
286+ }
287+ if ( ReviewCount >= 50 ) {
288+ const existingBadge = await prisma . userBadge . findFirst ( {
289+ where :{
290+ accountId,
291+ badgeId :12
292+ }
293+ } ) ;
294+
295+ if ( ! existingBadge ) {
296+ await prisma . userBadge . create ( {
297+ data :{
298+ accountId,
299+ badgeId :12 ,
300+ earnedAt :new Date ( ) ,
301+ }
302+ } )
303+ }
304+ }
305+ }
306+
61307
62308} ;
63309
0 commit comments