где
id = trasactionID
type = тип транзакции (EARN = пользователь получает баллы из магазина, REDEEM = пользователь использует баллы)
expiredAt = балл срок действия (до истечения срока действия балла EARN остался 1 год)
Моя проблема в том, что мне нужно рассчитать
оставшееся количество баллов для Пользователь. например. Если я запрошу в этот день (19 февраля 2024 г.), сколько осталось баллов. (точка истечения срока не должна рассчитываться)
У меня есть данные в базе данных, например [img]https://i.stack.imgur.com/xw7MK.png[/img]
где id = trasactionID type = тип транзакции (EARN = пользователь получает баллы из магазина, REDEEM = пользователь использует баллы) expiredAt = балл срок действия (до истечения срока действия балла EARN остался 1 год) Моя проблема в том, что мне нужно рассчитать [list] [*]оставшееся количество баллов для Пользователь. например. Если я запрошу в этот день (19 февраля 2024 г.), сколько осталось баллов. (точка истечения срока не должна рассчитываться) [*]Точка истечения (в этом месяце) [/list] это моя функция php< /p>
[code]public function calculateRemainingPoints($memberId) { // Fetch all transactions for the memberId $transactions = Transaction::where('memberId', $memberId)->orderBy('created_at')->get();
// Initialize total points $totalPoints = 0;
// Process each transaction foreach ($transactions as $transaction) { if ($transaction->type == 'EARN') { // Check if the EARN points are not expired $expiredAt = Carbon::parse($transaction->expiredAt); $currentDate = Carbon::now(); if ($expiredAt->gt($currentDate)) { // Accumulate EARN points $totalPoints += $transaction->points; } } elseif ($transaction->type == 'REDEEM') { // Deduct REDEEM points $totalPoints -= $transaction->points; } }
Это может быть похоже на просьбу о луне на палке; но существует ли «Потокобезопасный LRU-кэш производственного качества C# с истекающим сроком действия? Или у кого-нибудь есть идеи передового опыта для достижения того же самого?»
Я ожидаю, что это не должно спасти ни одного из них, если кто -то не удастся сохранить.
Я работаю над существующей схемой, которая построена на MySQL 5, поэтому я продолжил с MySQL 5, но другие другие технологии являются последними. 1;...
Я ожидаю, что это не должно спасти ни одного из них, если кто -то не удастся сохранить.
Я работаю над существующей схемой, которая построена на MySQL 5, поэтому я продолжил с MySQL 5, но другие другие технологии являются последними. 1;...
Я ожидаю, что это не должно спасти ни одного из них, если кто -то не удастся сохранить.
Я работаю над существующей схемой, которая построена на MySQL 5, поэтому я продолжил с MySQL 5, но другие другие технологии являются последними. 1;...
Я использую эту библиотеку для сброса пароля пользователя. Это блок кода, который генерирует код:
async def create_code(db: AsyncSession, user):
secret_key = pyotp.random_base32()