Membri și membri ai echipei care creează vrac, o tranzacție per înregistrare

FeatureSecurityService
Expediere
29 august 2026 la 20:16 UTC
Autor
Kamo
Comite
0e87cad

Cele două ecrane în vrac trebuie să creeze o foaie de calcul a persoanelor într-o singură depunere și să raporteze pe fiecare dintre ele în mod individual. Care nu ar putea fi construit pe existente Obiectivele finale, astfel încât conducta de creare se mută din controler. MemberCreationService deține acum, marcat REQUIRES NEW. Fiecare înregistrare, prin urmare se angajează sau se rostogolește pe cont propriu, care este întreaga premisă a ecranului: a eșec la înregistrare 7 frunze 1-6 create, și numai rândurile care nu a reușit stați pe pagina de corectat. Dacă bucla a rămas în controler, proxy Spring ar nu au văzut chemarea (auto-invocare), fiecare înregistrare ar fi împărtășit unul tranzacţie, şi primul eşec prins l-ar fi marcat doar rollback şi să renunţe la membrii care au reuşit deja la timp. MemberBulkCreator ruleaza lotul si nu este in mod deliberat tranzactional pentru Din acelaşi motiv -- o tranzacţie externă ar fi otrăvită cu exact excepţiile există pentru a absorbi. De asemenea, refuză un e-mail sau un nume de utilizator repetat în cadrul unuia depunere, care altfel ar apărea ca "deja un membru" și trimite admin în căutarea unui membru această cerere a creat o secundă mai devreme, și Eliberează aceste cereri din nou atunci când un rând nu reușește pentru un alt motiv. Ambele criterii de evaluare uni-record acum delega la același serviciu, astfel calea în vrac ruleaza o secventa identica: refolosirea Utilizatorului care se potriveste emailului personal (case-insensibile, victorii mai vechi), refuza un membru duplicat cu 409, crea prin intermediul Serviciului Membru, oglindește în orgul de securitateProvider, rematerializează drepturile; apoi trimite verificarea și BINE AI VENIT e-mailuri. Alte două schimbări ies din asta: MemberUsernameGenerator completează un nume de utilizator alb, în ordinea în care produsul a fost întrebat pentru -- primul, ultimul, ultimul, primul, primul, ultimul, apoi aceiaşi patru număraţi. Acesta se pliază accentele, respectă coloana de 20 de caractere, nu se termină niciodată pe un separator și Niciodată nu menţionează un mâner rezervat. Disponibilitatea este cercetată la nivel global, deoarece login rezolvă LOWER (numele utilizatorului) pe întreaga masă înainte de a se uita la orice org. UtilizatorAvailabilityRepository is SecurityService-locale so this ships without a cucui versiune comun-library; găsitorul partajat este exact caz și aruncă pur și simplu Odată ce două rânduri se ciocnesc. Un nume de utilizator tip mână care se ciocnește doar de la caz la caz este acum refuzat mai degrabă decât crearea unui al doilea utilizator. Această pereche este nerecuperabilă: ambele conturi devin ambiguu la forma de sign-in și de a găsiByUsername aruncă pentru fiecare dintre ele după aceea. Formularul de înregistrare unică trimite întotdeauna un nume de utilizator pe care l-a primit deja validat, deci nimic nu regresează acolo. Nu-ţi face griji. învață extractOrgId, care este extractUserId fratele și a fost lipsă doar pentru că cei doi controlori folosind-o înainte de model. Patru intrări de bază merg cu ea.

Toate modificările

Ca ceea ce vezi de transport maritim?

Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.

Pornește gratuit pentru totdeaunaVezi prețurile