Istotna edycja zatwierdzonego ogloszenia wraca do moderacji
Deploy Polska Lokalnie / deploy (push) Successful in 12s
Deploy Polska Lokalnie / deploy (push) Successful in 12s
- Zmiana tytulu, opisu, zdjec, danych kontaktowych lub linku spaceru w ogloszeniu opublikowanym albo wstrzymanym ustawia status PENDING; cena i parametry zmieniaja sie od razu. - Frontend nie koduje ponownie zapisanych zdjec JPEG przy edycji (bez utraty jakosci i bez falszywej zmiany zdjec); informacja o weryfikacji w formularzu. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -216,8 +216,8 @@ public class ListingService {
|
||||
return detailOf(saved);
|
||||
}
|
||||
|
||||
// Edycja wlasnego ogloszenia. Waliduje tresc filtrem, ale NIE zmienia statusu -
|
||||
// zatwierdzone ogloszenie pozostaje widoczne od razu po zapisie zmian.
|
||||
// Edycja wlasnego ogloszenia. Waliduje tresc filtrem; istotna zmiana tresci odsyla ogloszenie
|
||||
// do ponownej weryfikacji, a drobne zmiany (cena, metraz, parametry) sa widoczne od razu.
|
||||
@Transactional
|
||||
public ListingDetailResponse updateOwn(Long id, String ownerEmail, ListingCreateRequest request) {
|
||||
PropertyListing listing = listingRepository.findById(id)
|
||||
@@ -228,13 +228,27 @@ public class ListingService {
|
||||
request.title(), request.description(), request.city(), request.address(),
|
||||
request.district(), request.street(), request.contactName());
|
||||
|
||||
List<Object> before = moderatedContent(listing);
|
||||
applyRequest(listing, request);
|
||||
// ownerEmail i status pozostaja bez zmian.
|
||||
// Zmiana tresci widocznej dla kupujacych (tytul, opis, zdjecia, kontakt, link spaceru) wraca do
|
||||
// weryfikacji - inaczej zatwierdzone ogloszenie mozna bylo podmienic na dowolne, np. oszustwo.
|
||||
// Dotyczy tez wstrzymanego, bo wlasciciel sam je wznawia. Cena, metraz itp. zmieniaja sie od razu.
|
||||
boolean visible = listing.getStatus() == ListingStatus.APPROVED || listing.getStatus() == ListingStatus.PAUSED;
|
||||
if (visible && !before.equals(moderatedContent(listing))) {
|
||||
listing.setStatus(ListingStatus.PENDING);
|
||||
}
|
||||
|
||||
PropertyListing saved = listingRepository.save(listing);
|
||||
return detailOf(saved);
|
||||
}
|
||||
|
||||
// Pola, ktorych zmiana wymaga ponownej akceptacji administracji.
|
||||
static List<Object> moderatedContent(PropertyListing listing) {
|
||||
return java.util.Arrays.asList(listing.getTitle(), listing.getDescription(), List.copyOf(listing.getPhotos()),
|
||||
listing.getContactName(), listing.getContactPhone(), listing.getContactEmail(),
|
||||
listing.getVirtualTourUrl());
|
||||
}
|
||||
|
||||
// Wspolne mapowanie pol requestu na encje (uzywane przez create i updateOwn).
|
||||
private void applyRequest(PropertyListing listing, ListingCreateRequest request) {
|
||||
listing.setTitle(request.title().trim());
|
||||
|
||||
Reference in New Issue
Block a user