init studio launcher backend

This commit is contained in:
2026-07-01 18:01:05 +09:00
commit 702d093736
69 changed files with 14881 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
@Injectable()
export class NoticesService {
constructor(private readonly prisma: PrismaService) {}
async getLoginNotice() {
const now = new Date();
const notice = await this.prisma.launcherNotice.findFirst({
where: {
appKey: 'Launcher',
isActive: true,
OR: [
{ startsAt: null, endsAt: null },
{ startsAt: { lte: now }, endsAt: null },
{ startsAt: null, endsAt: { gte: now } },
{ startsAt: { lte: now }, endsAt: { gte: now } },
],
},
orderBy: [{ priority: 'desc' }, { createdAt: 'desc' }],
select: {
id: true,
title: true,
body: true,
linkUrl: true,
},
});
return { notice };
}
async getAppNotices(appKey: string) {
const now = new Date();
const notices = await this.prisma.launcherNotice.findMany({
where: {
appKey,
isActive: true,
OR: [
{ startsAt: null, endsAt: null },
{ startsAt: { lte: now }, endsAt: null },
{ startsAt: null, endsAt: { gte: now } },
{ startsAt: { lte: now }, endsAt: { gte: now } },
],
},
orderBy: [{ priority: 'desc' }, { createdAt: 'desc' }],
select: {
id: true,
title: true,
body: true,
linkUrl: true,
createdAt: true,
},
});
return {
notices: notices.map((notice) => ({
...notice,
date: formatNoticeDate(notice.createdAt),
})),
};
}
}
function formatNoticeDate(date: Date): string {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}.${month}.${day}`;
}