Update files
This commit is contained in:
parent
d85ebdfe01
commit
741524e4af
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue