diff --git a/src/main/java/org/rf/rfserver/domain/User.java b/src/main/java/org/rf/rfserver/domain/User.java index 0bfe81ea..c525655a 100644 --- a/src/main/java/org/rf/rfserver/domain/User.java +++ b/src/main/java/org/rf/rfserver/domain/User.java @@ -36,6 +36,8 @@ public class User extends BaseEntity implements UserDetails { private int entrance; private int love; private int hate; + private int report; + private int score; private String email; private String imageUrl; private Boolean isEmailVerified; @@ -71,12 +73,15 @@ public User(String loginId, String password, int entrance, University university this.mbti = mbti; this.love = 0; this.hate = 0; + this.report = 0; + this.score = 30; this.email = email; this.imageFilePath = "default"; this.interestCountries = interestCountries; this.userInterests = userInterests; this.lifeStyle = lifeStyle; this.userParties = new ArrayList<>(); + } public User updateUser(String nickName, String password, String imageFilePath, List interestingLanguages, String introduce, Mbti mbti, LifeStyle lifeStyle) { @@ -160,9 +165,7 @@ public void increaseLike() { } public void decreaseLike() { - if(this.love > 0) { - this.love--; - } + this.love--; } public void increaseHate() { @@ -170,9 +173,13 @@ public void increaseHate() { } public void decreaseHate() { - if(this.hate > 0) { - this.hate--; - } + this.hate--; } + + // 신고 + public void increaseReport() { + this.report++; + } + } diff --git a/src/main/java/org/rf/rfserver/report/service/ReportService.java b/src/main/java/org/rf/rfserver/report/service/ReportService.java index 8385ce44..eb1884ad 100644 --- a/src/main/java/org/rf/rfserver/report/service/ReportService.java +++ b/src/main/java/org/rf/rfserver/report/service/ReportService.java @@ -31,6 +31,7 @@ public PostReportRes createUserReport(PostReportReq postReportReq) throws BaseEx User reportedUser = userRepository.findById(postReportReq.getReportedUserId()) .orElseThrow(() -> new BaseException(NO_SUCH_USER)); Report report = reportRepository.save(new Report(reporter, reportedUser, postReportReq.getContent(), postReportReq.getReportType())); + reportedUser.increaseReport(); return new PostReportRes(report); } diff --git a/src/main/java/org/rf/rfserver/user/controller/UserController.java b/src/main/java/org/rf/rfserver/user/controller/UserController.java index a8cfffc1..069a6940 100644 --- a/src/main/java/org/rf/rfserver/user/controller/UserController.java +++ b/src/main/java/org/rf/rfserver/user/controller/UserController.java @@ -155,4 +155,14 @@ public BaseResponse cancelHate(@PathVariable("giveUserId") Long giveUserId return new BaseResponse(e.getStatus()); } } + + // 알프 점수 계산 + @GetMapping("/getRFScore/{userId}") + public BaseResponse getRFScore(@PathVariable("userId") Long userId) { + try { + return new BaseResponse<>(userService.getRFScore(userId)); + } catch (BaseException e) { + return new BaseResponse<>(e.getStatus()); + } + } } diff --git a/src/main/java/org/rf/rfserver/user/dto/GetRFScoreRes.java b/src/main/java/org/rf/rfserver/user/dto/GetRFScoreRes.java new file mode 100644 index 00000000..59903224 --- /dev/null +++ b/src/main/java/org/rf/rfserver/user/dto/GetRFScoreRes.java @@ -0,0 +1,10 @@ +package org.rf.rfserver.user.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class GetRFScoreRes { + private int score; +} \ No newline at end of file diff --git a/src/main/java/org/rf/rfserver/user/service/UserService.java b/src/main/java/org/rf/rfserver/user/service/UserService.java index da1c5fb1..9195dbb6 100644 --- a/src/main/java/org/rf/rfserver/user/service/UserService.java +++ b/src/main/java/org/rf/rfserver/user/service/UserService.java @@ -1,5 +1,6 @@ package org.rf.rfserver.user.service; +import com.fasterxml.jackson.databind.ser.Serializers; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.rf.rfserver.config.BaseException; @@ -278,5 +279,31 @@ public void cancelHate(Long giveUserId, Long receiveUserId) throws BaseException receiveUser.decreaseHate(); userRepository.save(receiveUser); } + + // 알프 점수 계산 + public GetRFScoreRes getRFScore(Long userId) throws BaseException { + User user = userRepository.findById(userId) + .orElseThrow(() -> new BaseException(USER_NOT_FOUND)); + + int love = user.getLove(); + int hate = user.getHate(); + int report = user.getReport(); + int score = user.getScore(); + + int change = love - hate - 5 * report; + score += change; + + // score가 최대 점수 100보다 높은 경우 + if(score > 100) { + return new GetRFScoreRes(100); + } + // score가 최저 점수 0보다 낮은 경우 + else if(score < 0) { + return new GetRFScoreRes(0); + } + else { + return new GetRFScoreRes(score); + } + } }