So bin ich stecken. Ich arbeite an einem Kreditsystem mit Ablaufzeiten. Ähnlich wie Kreditkartenmeilen, aber nicht genau. Übrigens tut mir das Buch im Voraus leid, aber ich musste genug Details hinzufügen, um das Gesamtbild zu erhalten.Brauchen Sie Hilfe mit Kredit Ablaufalgorithmus
Was ich brauche, ist ein System, in dem ein Benutzer Kredite für Aktivitäten akkumuliert. Aber sie können diese Kredite auch für Aktivitäten ausgeben. Die Gutschriften sollten nach 30 Tagen ablaufen, wenn sie nicht genutzt werden. Ich scheine, wie ich genau das in einer Charge berechnen kann, die jede Nacht läuft. Irgendwelche Ideen in irgendeiner Sprache würden sehr geschätzt werden, da ich auf einem kleinen Detail festsitze, das ich nicht herumkommen kann. Hier ist ein Beispiel für die Daten:
7/1: 5 - Nutzer sich
7/2: 5 - Benutzer interagiert mit dem System
7/2: -3 - Nutzer kauft Aktivität
7/3: +5 - Benutzer interagiert mit System
Also an diesem Punkt hat der Benutzer 15 Credits erhalten und hat 3 ausgegeben. Lassen Sie ihn mit insgesamt 12 Credits. (Zumindest habe ich grundlegende Mathematik nach unten: P)
Ich sollte hinzufügen, dass wir derzeit mit der Idee spielen, zwei Felder zu haben: zuletzt verarbeitet, als nächstes verarbeitet. So werden diese Werte in dieser Zeit unter der Annahme, es ein neues Anmelde war, sind:
zuletzt verarbeitete Datum: 7/1
Nächster Termin Prozess: 8/1
So, jetzt 8/1 herum kommt. Die Charge startet und prüft alle Credits, die älter als 30 Tage sind. Was an dieser Stelle ist 5.
Hier wird es unscharf.
Dann sollte das System alle Kredite betrachten, die in den letzten 30 Tagen ausgegeben wurden, um zu sehen, ob sie irgendwelche Kredite verwenden. Weil sie nur ablaufen sollten, wenn sie nicht benutzt wurden. Es sind also 3. Also ziehe ich den Benutzer 2 Credits ab, denn das ist die Differenz von Credits, die älter als 30 Tage sind und was ausgegeben wurde. Also beende ich die Charge und stelle die Daten für den nächsten Tag ein. Nimmt man nun an sich nicht mehr ausgegeben haben beginne ich die Berechnung über Kredite verdienten älter als 30, die 5 und Kredite ausgegeben wird, was wiederum 3. Aber ich will natürlich nicht die 3 Credits berücksichtigen, die ich gestern in Betracht gezogen. Was ist ein guter Ansatz, um diese 3 Credits nicht erneut zu berücksichtigen?
Das ist, wo ich feststecke.
Wir denken über das Schreiben eines Lastschrift-Datensatzes für die abgelaufenen Kredite nach, damit wir sie verfolgen können, aber es schwer haben zu sehen, wie ich es in dieser Berechnung verwenden kann.
Wenn Sie so weit lesen, danke. Wenn du dich in der Antwort sogar etwas anstrengst, werde ich dich zumindest für die Mühe stimmen.
EDIT:
Ok @Greg erwähnte etwas, das ich vergessen habe zu adressieren. Die Idee, die berücksichtigten Kredite mit einer Flagge zu versehen. Ein gültiger Punkt, aber nicht einer, der wegen des folgenden Szenarios funktionieren kann:
Angenommen an einem bestimmten Tag gibt ein Benutzer 10 Kredite aus. Aber die abgelaufenen Credits, die die Charge in Betracht zieht, haben sich nur auf 5 angesammelt. Nun, er sollte noch 5 Credits übrig haben, um nicht abgelaufen zu sein, weil er mehr als eine einzige Verfallszeit ausgab. Die Flagge würde also nicht funktionieren, weil wir diese 5 zusätzlichen Credits übersprungen hätten. Hoffnung, die Sinn macht?
Ich denke, das ist der Ansatz, mit dem ich versucht habe zu arbeiten und es scheint einfach nicht zu funktionieren. Können Sie ein Beispiel erarbeiten, um dies zu demonstrieren? – spinon