Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Walkers15 committed Aug 25, 2023
2 parents 7ed74cf + 3893cca commit 0949fad
Show file tree
Hide file tree
Showing 37 changed files with 239 additions and 254 deletions.
10 changes: 5 additions & 5 deletions src/main/java/com/dnd/bbok/common/BaseTimeEntity.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.dnd.bbok.common;

import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
Expand All @@ -15,14 +15,14 @@
public abstract class BaseTimeEntity {

@CreatedDate
@Column(name = "CREATED_AT")
private LocalDate createdAt;
@Column(name = "CREATED_AT", updatable = false)
private LocalDateTime createdAt;

@LastModifiedDate
@Column(name = "MODIFIED_AT")
private LocalDate modifiedAt;
private LocalDateTime modifiedAt;

protected void setCreatedAt(LocalDate date) {
protected void setCreatedAt(LocalDateTime date) {
this.createdAt = date;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@
import com.dnd.bbok.diary.domain.Tag;
import com.dnd.bbok.friend.application.port.out.LoadFriendPort;
import com.dnd.bbok.friend.application.port.out.LoadFriendTagPort;
import com.dnd.bbok.friend.application.port.out.UpdateFriendPort;
import com.dnd.bbok.friend.application.port.out.SaveFriendPort;
import com.dnd.bbok.friend.domain.Friend;
import com.dnd.bbok.friend.domain.FriendTag;
import com.dnd.bbok.global.exception.BusinessException;
import com.dnd.bbok.member.application.port.out.LoadMemberPort;
import com.dnd.bbok.member.domain.Member;
import com.dnd.bbok.saying.application.port.out.LoadBookmarkPort;
import com.dnd.bbok.saying.application.port.out.LoadSayingPort;
import com.dnd.bbok.saying.domain.Saying;
Expand All @@ -41,13 +43,16 @@ public class WriteDiaryService implements CreateDiaryUseCase, UpdateDiaryUseCase
private final LoadSayingPort loadSayingPort;
private final LoadBookmarkPort loadBookmarkPort;
private final LoadFriendPort loadFriendPort;

private final LoadMemberPort loadMemberPort;
private final SaveDiaryPort saveDiaryPort;
private final UpdateFriendPort updateFriendPort;
private final SaveFriendPort saveFriendPort;



@Override
public CreateDiaryResponse createDiary(UUID memberId, Long friendId, CreateDiaryRequest createDiaryRequest) {
Member member = loadMemberPort.loadById(memberId);

// 1. 일곱 개 이상의 태그를 사용하려 했다면 에러
List<Tag> tags = null;
if (createDiaryRequest.getTags() != null) {
Expand All @@ -63,12 +68,13 @@ public CreateDiaryResponse createDiary(UUID memberId, Long friendId, CreateDiary
ele -> new DiaryChecklist(null, ele.getIsGood(), ele.getIsChecked(), ele.getId())).collect(Collectors.toList());

Friend friend = loadFriendPort.loadByFriendId(friendId);
//TODO: diaryScore 반영이 안되서 친구도 점수가 누적되지 않고 있음
diaryScore = calculateDiaryScore(checklist);
friendScore = calculateFriendScore(friend.getFriendScore(), diaryScore);
updateFriendPort.updateFriendScore(friend, friendScore);
friend.setFriendScore(friendScore);
saveFriendPort.saveFriend(member, friend);
}


// 3. 다이어리 도메인 생성 및 저장
Diary diary = new Diary(null,
friendId,
Expand All @@ -82,8 +88,6 @@ public CreateDiaryResponse createDiary(UUID memberId, Long friendId, CreateDiary
checklist);
saveDiaryPort.createDiary(friendId, diary);



// 4. 랜덤 명언 조회
DiarySaying diarySaying = getRandomSaying(memberId);

Expand All @@ -92,6 +96,7 @@ public CreateDiaryResponse createDiary(UUID memberId, Long friendId, CreateDiary

@Override
public void updateDiary(UUID memberId, Long diaryId, UpdateDiaryRequest updateDiaryRequest) {
Member member = loadMemberPort.loadById(memberId);
Diary diary = loadDiaryPort.loadDiary(diaryId);
Friend friend = loadFriendPort.loadByFriendId(diary.getFriendId());

Expand Down Expand Up @@ -125,7 +130,8 @@ public void updateDiary(UUID memberId, Long diaryId, UpdateDiaryRequest updateDi
for (Diary current : diaries) {
friendScore = (long) (friendScore * 0.9) + current.getDiaryScore();
}
updateFriendPort.updateFriendScore(friend, friendScore);
friend.setFriendScore(friendScore);
saveFriendPort.saveFriend(member, friend);
}

private List<Tag> checkFriendTagCount(Long friendId, List<String> usedTags) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ public List<BbokCharacter> getAllCharacter() {
}

@Override
public BbokCharacter getCharacter() {
return null;
public BbokCharacter getCharacter(String bbok) {
if(bbok.equals("CACTUS")) {
return BbokCharacter.SIDE_CACTUS;
}
return BbokCharacter.SIDE_HEDGEHOG;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,18 @@
import static com.dnd.bbok.global.exception.ErrorCode.FRIEND_IS_NOT_ACTIVE;
import static com.dnd.bbok.global.exception.ErrorCode.FRIEND_NOT_FOUND;
import static com.dnd.bbok.global.exception.ErrorCode.INVALID_FRIEND_NAME;
import static com.dnd.bbok.global.exception.ErrorCode.MEMBER_NOT_FOUND;
import static com.dnd.bbok.global.exception.ErrorCode.OTHER_FRIEND_ALREADY_ACTIVE;

import com.dnd.bbok.friend.adapter.out.persistence.entity.FriendEntity;
import com.dnd.bbok.friend.adapter.out.persistence.mapper.FriendMapper;
import com.dnd.bbok.friend.adapter.out.persistence.repository.FriendRepository;
import com.dnd.bbok.friend.application.port.in.request.CreateFriendRequest;
import com.dnd.bbok.friend.application.port.in.request.UpdateFriendRequest;
import com.dnd.bbok.friend.application.port.out.FriendValidatorPort;
import com.dnd.bbok.friend.application.port.out.LoadFriendPort;
import com.dnd.bbok.friend.application.port.out.SaveFriendPort;
import com.dnd.bbok.friend.application.port.out.UpdateFriendPort;
import com.dnd.bbok.friend.domain.Friend;
import com.dnd.bbok.global.exception.BusinessException;
import com.dnd.bbok.member.adapter.out.persistence.entity.MemberEntity;
import com.dnd.bbok.member.adapter.out.persistence.mapper.MemberMapper;
import com.dnd.bbok.member.adapter.out.persistence.repository.MemberRepository;
import com.dnd.bbok.member.domain.Member;
import java.util.List;
import java.util.UUID;
Expand All @@ -32,10 +27,9 @@
@RequiredArgsConstructor
@Slf4j
public class FriendPersistenceAdapter
implements LoadFriendPort, FriendValidatorPort, SaveFriendPort, UpdateFriendPort {
implements LoadFriendPort, FriendValidatorPort, SaveFriendPort {

private final FriendRepository friendRepository;
private final MemberRepository memberRepository;
private final FriendMapper friendMapper;
private final MemberMapper memberMapper;

Expand All @@ -55,24 +49,8 @@ public Friend loadByFriendId(Long friendId) {
}

@Override
public void checkOtherActiveFriend(Member member) {
List<FriendEntity> otherFriends = friendRepository.findAllFriends(member.getId());
if(otherFriends.stream().anyMatch(FriendEntity::isActive)) {
throw new BusinessException(OTHER_FRIEND_ALREADY_ACTIVE);
}
}

@Override
public void validateNaming(String friendName) {
final String namingCond = "^[a-zA-Z0-9가-힣]{1,12}$";
if(!friendName.matches(namingCond)) {
throw new BusinessException(INVALID_FRIEND_NAME);
}
}

@Override
public Friend isActiveFriend(UUID memberId, Long friendId) {
FriendEntity friend = friendRepository.findFriendById(friendId)
public Friend loadByMemberAndFriendId(UUID memberId, Long friendId) {
FriendEntity friend = friendRepository.findById(friendId)
.orElseThrow(() -> new BusinessException(FRIEND_NOT_FOUND));
if(!friend.isActive()) {
throw new BusinessException(FRIEND_IS_NOT_ACTIVE);
Expand All @@ -82,41 +60,27 @@ public Friend isActiveFriend(UUID memberId, Long friendId) {
return friendMapper.toDomain(memberDomain, friend);
}

@Transactional
@Override
public void saveFriend(UUID memberId, CreateFriendRequest friendRequest) {
MemberEntity member = memberRepository.findById(memberId)
.orElseThrow(() -> new BusinessException(MEMBER_NOT_FOUND));
FriendEntity friendEntity = friendMapper.convertDtoToEntity(member, friendRequest);
friendRepository.save(friendEntity);
}

@Transactional
@Override
public void updateFriend(Friend friend, UpdateFriendRequest friendRequest) {
MemberEntity member = memberRepository.findById(friend.getMember().getId())
.orElseThrow(() -> new BusinessException(MEMBER_NOT_FOUND));
FriendEntity friendEntity = friendMapper.toEntity(member, friend);
friendEntity.changeFriendName(friendRequest.getName());
friendRepository.save(friendEntity);
public void checkOtherActiveFriend(Member member) {
List<FriendEntity> otherFriends = friendRepository.findAllFriends(member.getId());
if(otherFriends.stream().anyMatch(FriendEntity::isActive)) {
throw new BusinessException(OTHER_FRIEND_ALREADY_ACTIVE);
}
}

@Transactional
@Override
public void updateStatus(UUID memberId, Friend friend) {
MemberEntity member = memberRepository.findById(memberId)
.orElseThrow(() -> new BusinessException(MEMBER_NOT_FOUND));
FriendEntity friendEntity = friendMapper.toEntity(member, friend);
friendEntity.deactivateFriend();
friendRepository.save(friendEntity);
public void validateNaming(String friendName) {
final String namingCond = "^[a-zA-Z0-9가-힣]{1,12}$";
if(!friendName.matches(namingCond)) {
throw new BusinessException(INVALID_FRIEND_NAME);
}
}

@Transactional
@Override
public void updateFriendScore(Friend friend, Long score) {
MemberEntity memberEntity = memberMapper.toEntityWithId(friend.getMember());
public void saveFriend(Member member, Friend friend) {
MemberEntity memberEntity = memberMapper.toEntity(member);
FriendEntity friendEntity = friendMapper.toEntity(memberEntity, friend);
friendEntity.changeFriendScore(score);
friendRepository.save(friendEntity);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.dnd.bbok.friend.domain.BbokCharacter;
import com.dnd.bbok.member.adapter.out.persistence.entity.MemberEntity;
import com.sun.istack.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
Expand Down Expand Up @@ -47,21 +47,9 @@ public class FriendEntity extends BaseTimeEntity {
@JoinColumn(name = "member_id")
private MemberEntity member;

public void changeFriendScore(Long friendScore) {
this.friendScore = friendScore;
}

public void changeFriendName(String friendName) {
this.name = friendName;
}

public void deactivateFriend() {
this.active = false;
}

@Builder
public FriendEntity(Long id, BbokCharacter bbok, String name, boolean active,
Long friendScore, MemberEntity member, LocalDate createdAt) {
Long friendScore, MemberEntity member, LocalDateTime createdAt) {
this.id = id;
this.bbok = bbok;
this.name = name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package com.dnd.bbok.friend.adapter.out.persistence.mapper;

import static com.dnd.bbok.friend.domain.BbokCharacter.*;

import com.dnd.bbok.friend.adapter.out.persistence.entity.FriendEntity;
import com.dnd.bbok.friend.application.port.in.request.CreateFriendRequest;
import com.dnd.bbok.friend.domain.BbokCharacter;
import com.dnd.bbok.friend.domain.Friend;
import com.dnd.bbok.member.adapter.out.persistence.entity.MemberEntity;
import com.dnd.bbok.member.domain.Member;
Expand All @@ -28,19 +24,6 @@ public List<Friend> convertEntitiesToDomain(List<FriendEntity> friends) {
.collect(Collectors.toList());
}

public FriendEntity convertDtoToEntity(MemberEntity member, CreateFriendRequest friendRequest) {
BbokCharacter friendCharacter =
(friendRequest.getCharacter().equals("CACTUS")) ? SIDE_CACTUS : SIDE_HEDGEHOG;

return FriendEntity.builder()
.active(true)
.name(friendRequest.getName())
.bbok(friendCharacter)
.friendScore(0L)
.member(member)
.build();
}

public Friend toDomain(Member member, FriendEntity friend) {
return Friend.builder()
.id(friend.getId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ public interface FriendRepository extends JpaRepository<FriendEntity, Long> {
@Query("select f from FriendEntity f where f.member.id = :memberId")
List<FriendEntity> findAllFriends(@Param("memberId") UUID memberId);

@Query("select f from FriendEntity f where f.member.id = :memberId and f.name = :friendName")
FriendEntity findFriendWithNameCond(@Param("memberId") UUID memberId,@Param("friendName") String friendName);

@Query("select f from FriendEntity f join fetch f.member where f.id = :friendId")
Optional<FriendEntity> findFriendById(@Param("friendId") Long friendId);

@Query("select f from FriendEntity f where f.id = :friendId")
Optional<FriendEntity> findById(@Param("friendId") Long friendId);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.dnd.bbok.friend.application.port.in.response;

import com.dnd.bbok.friend.domain.Friend;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Getter;

/**
Expand All @@ -15,7 +16,8 @@ public class GetFriendResponse {
private final Long id;

@ApiModelProperty(value = "친구 생성 날짜")
private final LocalDate startedAt;
@JsonFormat(pattern = "yyyy-MM-dd")
private final LocalDateTime startedAt;

@ApiModelProperty(value = "친구 캐릭터 아이콘 url")
private final String characterUrl;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package com.dnd.bbok.friend.application.port.out;


import com.dnd.bbok.friend.domain.Friend;
import com.dnd.bbok.member.domain.Member;
import java.util.UUID;

public interface FriendValidatorPort {

void checkOtherActiveFriend(Member member);

void validateNaming(String friendName);

Friend isActiveFriend(UUID memberId, Long friendId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ public interface LoadFriendPort {
List<Friend> getByMemberId(UUID memberId);

Friend loadByFriendId(Long friendId);

Friend loadByMemberAndFriendId(UUID memberId, Long friendId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ public interface LoadIconPort {

List<BbokCharacter> getAllCharacter();

BbokCharacter getCharacter();
BbokCharacter getCharacter(String bbok);

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.dnd.bbok.friend.application.port.out;

import com.dnd.bbok.friend.application.port.in.request.CreateFriendRequest;
import java.util.UUID;
import com.dnd.bbok.friend.domain.Friend;
import com.dnd.bbok.member.domain.Member;

public interface SaveFriendPort {

void saveFriend(UUID memberId, CreateFriendRequest friendRequest);
void saveFriend(Member member, Friend friend);

}

This file was deleted.

Loading

0 comments on commit 0949fad

Please sign in to comment.