Update files

This commit is contained in:
glpshchn 2025-12-07 06:18:19 +03:00
parent d85ebdfe01
commit 741524e4af
1 changed files with 50 additions and 0 deletions

View File

@ -254,6 +254,51 @@ async function awardArtModeration(userId) {
return { success: true, points: 40 };
}
/**
* Списывает билеты за модерацию арта при удалении поста
*/
async function deductArtModeration(userId, postCreatedAt) {
try {
const { getMoscowStartOfDay } = require('./moscowTime');
// Проверяем, что пост был создан сегодня
const postDate = getMoscowStartOfDay(postCreatedAt);
const today = getMoscowStartOfDay();
// Если пост создан не сегодня, не списываем билеты
if (postDate.getTime() !== today.getTime()) {
return { success: false, reason: 'post_not_today' };
}
// Получить активность за сегодня
const activity = await TicketActivity.getOrCreateToday(userId);
// Уменьшить счетчик артов (но не меньше 0)
if (activity.artsModerated > 0) {
activity.artsModerated -= 1;
await activity.save();
}
// Списать билеты (но не меньше 0)
const user = await User.findById(userId);
if (user) {
const ticketsToDeduct = Math.min(40, user.tickets || 0);
if (ticketsToDeduct > 0) {
await User.findByIdAndUpdate(userId, {
$inc: { tickets: -ticketsToDeduct }
});
console.log(`[Tickets ${formatMoscowTime()}] Списано ${ticketsToDeduct} билетов пользователю ${userId} за удаление арта`);
return { success: true, points: -ticketsToDeduct };
}
}
return { success: true, points: 0 };
} catch (error) {
console.error(`[Tickets] Ошибка списания билетов за арт:`, error);
return { success: false, reason: 'error', error: error.message };
}
}
/**
* Списывает билеты за действие (лайк/комментарий) с удаленным постом
*/
@ -348,6 +393,11 @@ async function deductPostDeletion(post) {
// 1. Списываем билеты за создание поста у автора
await deductAction(authorId, 15, 'post_created', postCreatedAt);
// 1.5. Если пост был помечен как арт, списываем билеты за модерацию арта
if (post.isArt) {
await deductArtModeration(authorId, postCreatedAt);
}
// 2. Списываем билеты за полученные лайки у автора
if (post.likes && post.likes.length > 0) {
for (const likerId of post.likes) {