Record user visits on posts listing

This commit is contained in:
Tim
2025-07-14 12:42:34 +08:00
parent 0a36ad0f59
commit 2c3c74d584
12 changed files with 214 additions and 7 deletions

View File

@@ -0,0 +1,35 @@
package com.openisle.service;
import com.openisle.model.User;
import com.openisle.model.UserVisit;
import com.openisle.repository.UserRepository;
import com.openisle.repository.UserVisitRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
@Service
@RequiredArgsConstructor
public class UserVisitService {
private final UserVisitRepository userVisitRepository;
private final UserRepository userRepository;
public void recordVisit(String username) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new IllegalArgumentException("User not found"));
LocalDate today = LocalDate.now();
userVisitRepository.findByUserAndVisitDate(user, today).orElseGet(() -> {
UserVisit visit = new UserVisit();
visit.setUser(user);
visit.setVisitDate(today);
return userVisitRepository.save(visit);
});
}
public long countVisits(String username) {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new IllegalArgumentException("User not found"));
return userVisitRepository.countByUser(user);
}
}