if(fromInstaMember.getFromLikeablePeople().size() >= AppConfig.getLikeablePersonFromMax()){
return RsData.of("F-1","%d명 이상에게 호감을 표시할 수 없습니다.".formatted(AppConfig.getLikeablePersonFromMax()));
}
private boolean canLike(InstaMember fromInstaMember, InstaMember toInstaMember) {
List<LikeablePerson> fromLikeablePeople = fromInstaMember.getFromLikeablePeople();
LikeablePerson likeablePerson = fromLikeablePeople.stream()
.filter(e -> e.getToInstaMember().getUsername().equals(toInstaMember.getUsername()))
.findFirst()
.orElse(null);
if (likeablePerson != null) {
return false;
}
return true;
}
중복 호감을 보내는데 만약 typeCode가 다른 경우
if (searchLikeablePerson != null) {
if (searchLikeablePerson.getAttractiveTypeCode() == attractiveTypeCode) {
log.info("중복 호감 표시");
return RsData.of("F-1", "이미 호감을 표시한 상대입니다.");
}
searchLikeablePerson.modifyAttractiveTypCode(attractiveTypeCode);
return RsData.of("S-2", "호감 수정 완료");
10명 이상 호감표시 금지
if(fromInstaMember.getFromLikeablePeople().size() >= AppConfig.getLikeablePersonFromMax()){
return RsData.of("F-1","%d명 이상에게 호감을 표시할 수 없습니다.".formatted(AppConfig.getLikeablePersonFromMax()));
}
추가로 할 부분
현재 호감 표시를 할때 중복으로 들어온 회원에 대해서 처리를 했었는데 호감 목록에서 호감을표시한 대상의 호감 이유를 바꿀 수 있어야 하기 때문에.
@PreAuthorize("isAuthenticated()")
@GetMapping("/modify/{id}")
public String modify(@PathVariable("id") Long id, Model model) {
LikeablePerson likeablePerson = likeablePersonService.findById(id).orElseThrow();
RsData modifyLikeData = likeablePersonService.canModifyLike(rq.getMember(), likeablePerson);
if (modifyLikeData.isFail()) {
rq.historyBack(modifyLikeData.getMsg());
}
model.addAttribute("likeablePerson", likeablePerson);
return "/likeablePerson/modify";
}
@PreAuthorize("isAuthenticated()")
@GetMapping("modify/{id}")
public String modifyLike(@PathVariable("id") Long id, @Valid ModifyForm modifyForm) {
RsData likeData = likeablePersonService.modifyLike(rq.getMember(), id, modifyForm.getAttractiveTypeCode());
if (likeData.isFail()) {
return rq.historyBack(likeData.getMsg());
}
return rq.redirectWithMsg("/likeablePerson/list", likeData.getMsg());
}
호감 수정 서비스단
@Transactional
public RsData modifyLike(Member member, Long id, int attractiveTypeCode) {
LikeablePerson likeablePerson = likeablePersonRepository.findById(id).orElseThrow();
RsData rsData = canModifyLike(member, likeablePerson);
if (rsData.isFail()) {
return rsData;
}
likeablePerson.modifyAttractiveTypCode(attractiveTypeCode);
return RsData.of("S-2", "호감 사유 수정이 완료되었습니다.");
}
public RsData canModifyLike(Member member, LikeablePerson likeablePerson) {
if (!member.hasConnectedInstaMember()) {
return RsData.of("F-1", "먼저 본인의 인스타그램 아이디를 입력해주세요.");
}
InstaMember fromInstaMember = member.getInstaMember();
if (!Objects.equals(fromInstaMember.getId(), likeablePerson.getFromInstaMember().getId())) {
log.info("권한이 없습니다.");
return RsData.of("F-1", "권한이 없습니다.");
}
return RsData.of("S-1", "수정 가능");
}