Potrzebuję porady odnośnie stworzenia systemu transakcyjnego. Jestem na etapie obliczania ile zostało na koncie środków do wykorzystania. Oto co do tej pory udało mi się stworzyć:
- tabela z transakcjami w której jest id_usera , kwota jaka jest transakcja i status transakcji. (1 oczekuje,2 kompletna, 3 odrzucona)
- w drugiej tabelce balans jest id_usera i obliczony balans
- do bazy wskakuje transakcja w kwocie 3 gdy system ja obliczy zakutalizuje balans w drugiej tabelce
- do bazy wskakuje transakcja w kwocie 6 system aktualizuje balans i mamy juz kwote 9
- do bazy wskakuje transakcja wyplaty w kwocie 2 system oznacza to jako status 1 (oczekuje)
- Gdy uzytkownik widzi aktualne saldo konta system pobiera:
poebierz saldo z tabeli saldo i odejmij sume wszystkich transakcji ze statusem 1 dla danego usera - teraz wpada do transakcji kwota 6 system aktualizuję saldo jako 15
- przy wysweitalniu salda usera mamy 15 - 2 zablokowane = 13 dostępne
- i teraz system zaktualizował zablokowana transakcje w kwocie 2 i ustawił status na 2 kompletna
Tabela zdarzeń
ID | ID USERS | AMOUNT | SALDO | WPLATA/WYPLATA | STATUS |
---|---|---|---|---|---|
1 | 2 | 3 | ?? | 1 -wplata | 2 |
2 | 2 | 6 | ?? | 1 -wplata | 2 |
3 | 2 | 2 | ?? | 2 -wplata | 2 |
4 | 2 | 6 | ?? | 1 -wplata | 2 |
Główne pytania są dwa
-
Czy system z oddzielną tabelą do salda jest dobrym pomysłem ? bo inaczej musialbym przy pobeiraniu salda zliczać sume zatwierdzonych transakcji odjąć sumę transakcji oczekujących
-
Jak obliczać i wyświetlać saldo na bieżąco dla historii transakcji żeby było tak:
ID | ID USERS | AMOUNT | SALDO | WPLATA/WYPLATA | STATUS
---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ----------------
1 | 2 | 3 | 3 | 1 -wplata | 2
2 | 2 | 6 | 9 | 1 -wplata | 2
3 | 2 | 2 | ?? | 2 -wplata | 2
4 | 2 | 6 | ?? | 1 -wplata | 2
I nie wiem właśnie jak obliczyć te salda dla zablokowanych transakcji jeżeli transakcja id = 3 oczekiwała a transakcja nr 4 wpadla przed numerem 3. Czyli transakcja nr 4 powinna wtedy mieć w polu balans 3+6+6 = 15 ale przy wyświetlaniu user i tak miałby pomniejszone o kwotę 2. A po rozliczeniu tej transakcji o id = 3 w balans powinno być 7 a nie 13 jakby wynikało z kolejności transakcji. Czy ma ktoś jakiś pomysł?