Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/main/java/org/rf/rfserver/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<Language> interestingLanguages, String introduce, Mbti mbti, LifeStyle lifeStyle) {
Expand Down Expand Up @@ -160,19 +165,21 @@ public void increaseLike() {
}

public void decreaseLike() {
if(this.love > 0) {
this.love--;
}
this.love--;
}

public void increaseHate() {
this.hate++;
}

public void decreaseHate() {
if(this.hate > 0) {
this.hate--;
}
this.hate--;
}

// 신고
public void increaseReport() {
this.report++;
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down
10 changes: 10 additions & 0 deletions src/main/java/org/rf/rfserver/user/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,14 @@ public BaseResponse<Void> cancelHate(@PathVariable("giveUserId") Long giveUserId
return new BaseResponse<Void>(e.getStatus());
}
}

// 알프 점수 계산
@GetMapping("/getRFScore/{userId}")
public BaseResponse<GetRFScoreRes> getRFScore(@PathVariable("userId") Long userId) {
try {
return new BaseResponse<>(userService.getRFScore(userId));
} catch (BaseException e) {
return new BaseResponse<>(e.getStatus());
}
}
}
10 changes: 10 additions & 0 deletions src/main/java/org/rf/rfserver/user/dto/GetRFScoreRes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.rf.rfserver.user.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public class GetRFScoreRes {
private int score;
}
27 changes: 27 additions & 0 deletions src/main/java/org/rf/rfserver/user/service/UserService.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
}
}
}