Skip to content

Commit

Permalink
Merge pull request #44 from UMC5th-bias/fix/#42
Browse files Browse the repository at this point in the history
[FIX #42] 일반 회원가입 - 사용자 프로필 이미지 + 새싹회원 칭호 저장
  • Loading branch information
JungYoonShin authored Jan 29, 2024
2 parents 8133137 + f8b87ee commit 41121d9
Show file tree
Hide file tree
Showing 7 changed files with 114 additions and 59 deletions.
96 changes: 48 additions & 48 deletions src/main/java/com/favoriteplace/InitDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -223,21 +223,21 @@ public Member createMember(String number){
Item item2 = createItem(image2, "title"+number, ItemType.TITLE, ItemCategory.NEW);

Member member = Member.builder()
.id(0L)
.profileIcon(item1)
.profileTitle(item2)
.email("[email protected]")
.password("1234")
.birthday(null)
.nickname("user"+number)
.description("hi")
.profileImageUrl("")
.status(MemberStatus.Y)
.alarmAllowance(false)
.point(0L)
.loginType(LoginType.SELF)
.refreshToken("")
.build();
.id(0L)
.profileIcon(item1)
.profileTitle(item2)
.email("[email protected]")
.password("1234")
.birthday(null)
.nickname("user"+number)
.description("hi")
.profileImageUrl("")
.status(MemberStatus.Y)
.alarmAllowance(false)
.point(0L)
.loginType(LoginType.SELF)
.refreshToken("")
.build();
em.merge(member);
return member;
}
Expand All @@ -247,13 +247,13 @@ public Rally createRally(String name, String description){
Image animeImg = createImage("animeImg");
Item item1 = createItem(image1, "rallyTitle", ItemType.TITLE, ItemCategory.NEW);
Rally rally = Rally.builder()
.item(item1)
.image(animeImg)
.name(name)
.description(description)
.achieveNumber(0L)
.pilgrimageNumber(0L)
.build();
.item(item1)
.image(animeImg)
.name(name)
.description(description)
.achieveNumber(0L)
.pilgrimageNumber(0L)
.build();
em.persist(rally);
return rally;
}
Expand All @@ -262,15 +262,15 @@ public Pilgrimage createPilgrimage(Address address, Rally rally, String detailAd
Image realImg = createImage(rally.getName()+"PilRealImg");
Image animeImg = createImage(rally.getName()+"PilAnimeImg");
Pilgrimage pilgrimage = Pilgrimage.builder()
.address(address)
.rally(rally)
.virtualImage(animeImg)
.realImage(realImg)
.rallyName(rally.getName())
.detailAddress(detailAddress)
.latitude(0.0)
.longitude(0.0)
.build();
.address(address)
.rally(rally)
.virtualImage(animeImg)
.realImage(realImg)
.rallyName(rally.getName())
.detailAddress(detailAddress)
.latitude(0.0)
.longitude(0.0)
.build();
rally.addPilgrimage();
em.merge(rally);
em.persist(pilgrimage);
Expand All @@ -279,35 +279,35 @@ public Pilgrimage createPilgrimage(Address address, Rally rally, String detailAd

public Address createAddress(String state, String district){
Address address = Address.builder()
.state(state)
.district(district)
.build();
.state(state)
.district(district)
.build();
em.persist(address);
return address;
}
private Item createItem(Image image1, String name, ItemType type, ItemCategory itemCategory) {
Item item = Item.builder()
.image(image1)
.name(name)
.status(SaleStatus.NOT_FOR_SALE)
.type(type)
.saleDeadline(null)
.point(0L)
.description("item 설명")
.category(itemCategory)
.build();
.image(image1)
.name(name)
.status(SaleStatus.NOT_FOR_SALE)
.type(type)
.saleDeadline(null)
.point(0L)
.description("item 설명")
.category(itemCategory)
.build();
em.persist(item);
return item;
}
private Image createImage(String url) {
Image image1 = Image.builder()
.post(null)
.guestBook(null)
.url(url)
.build();
.post(null)
.guestBook(null)
.url(url)
.build();
em.persist(image1);
return image1;
}

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.favoriteplace.app.dto.member.MemberDto.EmailCheckReqDto;
import com.favoriteplace.app.dto.member.MemberDto.EmailDuplicateResDto;
import com.favoriteplace.app.dto.member.MemberDto.EmailSendResDto;
import com.favoriteplace.app.dto.member.MemberDto.MemberDetailResDto;
import com.favoriteplace.app.dto.member.MemberDto.MemberSignUpReqDto;
import com.favoriteplace.app.dto.member.MemberDto.TokenInfo;
import com.favoriteplace.app.service.MailSendService;
Expand All @@ -12,6 +13,7 @@
import com.favoriteplace.global.util.SecurityUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import java.io.IOException;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
Expand All @@ -33,9 +35,9 @@ public class MemberController {
private final SecurityUtil securityUtil;

@PostMapping("/signup")
public ResponseEntity<TokenInfo> signup(@RequestPart(required = false) List<MultipartFile> images, @RequestPart
MemberSignUpReqDto data) {
return ResponseEntity.ok(memberService.signup(data));
public ResponseEntity<MemberDetailResDto> signup(@RequestPart(required = false) List<MultipartFile> images, @RequestPart
MemberSignUpReqDto data) throws IOException {
return ResponseEntity.ok(memberService.signup(data, images));
}

@PostMapping("/signup/email")
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/com/favoriteplace/app/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToOne;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand All @@ -33,11 +34,11 @@ public class Member extends BaseTimeEntity {
@Column(name = "member_id")
private Long id;

@OneToOne(fetch = LAZY)
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "profile_title_id")
private Item profileTitle;

@OneToOne(fetch = LAZY)
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "profile_icon_id")
private Item profileIcon;

Expand Down
26 changes: 24 additions & 2 deletions src/main/java/com/favoriteplace/app/dto/member/MemberDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.favoriteplace.app.domain.Member;
import com.favoriteplace.app.domain.enums.LoginType;
import com.favoriteplace.app.domain.enums.MemberStatus;
import com.favoriteplace.app.domain.item.Item;
import com.favoriteplace.global.gcpImage.ConvertUuidToUrl;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
Expand All @@ -24,21 +26,41 @@ public static class MemberSignUpReqDto {
public Boolean snsAllow;
public String introduction;

public Member toEntity(String encodedPassword, String profileImg) {
public Member toEntity(String encodedPassword, String profileImg, Item titleItem) {
return Member.builder()
.nickname(nickname)
.email(email)
.password(encodedPassword)
.alarmAllowance(snsAllow)
.description(introduction)
.profileImageUrl(profileImg)
.profileImageUrl(profileImg == null ? null : ConvertUuidToUrl.convertUuidToUrl(profileImg))
.point(0L)
.loginType(LoginType.SELF)
.profileTitle(titleItem)
.status(MemberStatus.Y)
.build();
}
}

@Builder
@Getter
@AllArgsConstructor
public static class MemberDetailResDto {
private String nickname;
private String introduction;
private String profileImage;
private String profileTitleItem;

public static MemberDetailResDto from(Member member) {
return MemberDetailResDto.builder()
.nickname(member.getNickname())
.introduction(member.getDescription())
.profileImage(member.getProfileImageUrl())
.profileTitleItem(member.getProfileTitle().getImage().getUrl())
.build();
}
}

@Getter
@NoArgsConstructor
public static class EmailSendReqDto {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@ public interface ItemRepository extends JpaRepository<Item, Long> {
@Query("SELECT it from Item it join fetch it.image im where it.id = :item_id")
Optional<Item> findAllByIdWithImage(@Param("item_id") Long itemID);

Optional<Item> findByName(String name);

}
35 changes: 31 additions & 4 deletions src/main/java/com/favoriteplace/app/service/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,32 @@
import com.favoriteplace.app.domain.Member;
import com.favoriteplace.app.domain.community.GuestBook;
import com.favoriteplace.app.domain.community.Post;
import com.favoriteplace.app.domain.item.Item;
import com.favoriteplace.app.dto.UserInfoResponseDto;
import com.favoriteplace.app.dto.member.MemberDto;
import com.favoriteplace.app.dto.member.MemberDto.EmailCheckReqDto;
import com.favoriteplace.app.dto.member.MemberDto.EmailDuplicateResDto;
import com.favoriteplace.app.dto.member.MemberDto.EmailSendReqDto;
import com.favoriteplace.app.dto.member.MemberDto.MemberDetailResDto;
import com.favoriteplace.app.dto.member.MemberDto.MemberSignUpReqDto;
import com.favoriteplace.app.repository.GuestBookRepository;
import com.favoriteplace.app.repository.ItemRepository;
import com.favoriteplace.app.repository.MemberRepository;
import com.favoriteplace.app.repository.PostRepository;
import com.favoriteplace.global.exception.ErrorCode;
import com.favoriteplace.global.exception.RestApiException;
import com.favoriteplace.global.gcpImage.UploadImage;
import com.favoriteplace.global.util.SecurityUtil;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;
import org.springframework.web.multipart.MultipartFile;

@Service
@Transactional(readOnly = true)
Expand All @@ -35,15 +42,35 @@ public class MemberService {
private final GuestBookRepository guestBookRepository;
private final PasswordEncoder passwordEncoder;
public final SecurityUtil securityUtil;
private final UploadImage uploadImage;
private final ItemRepository itemRepository;

@Transactional
public MemberDto.TokenInfo signup(MemberSignUpReqDto memberSignUpReqDto) {
public MemberDto.MemberDetailResDto signup(MemberSignUpReqDto memberSignUpReqDto, List<MultipartFile> images)
throws IOException {
memberRepository.findByEmail(memberSignUpReqDto.getEmail())
.ifPresentOrElse(
existingMember -> {
throw new RestApiException(USER_ALREADY_EXISTS);
},
() -> {
// 값이 없을 때 수행할 동작 (예외를 발생시키지 않는 경우)
}
);

String uuid = null;
String password = passwordEncoder.encode(memberSignUpReqDto.getPassword());
Member member = memberSignUpReqDto.toEntity(password, null);

//TODO 유저 프로필 이미지 + 새싹회원 칭호 저장
if(!(images == null)) {
uuid = uploadImage.uploadImageToCloud(images.get(0));
}

Item titleItem = itemRepository.findByName("새싹회원").get();

Member member = memberSignUpReqDto.toEntity(password, uuid, titleItem);
memberRepository.save(member);
return null;

return MemberDetailResDto.from(member);
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public RallyDto.RallyAddressListDto getRallyAddressList(Long rallyId, Member mem

// 주소, 성지순례 리스트 정보 담은 주소 리스트 생성
List<Address> addressList = addressRepository.findByPilgrimages_Rally(rally);
System.out.println(addressList.size());
if (addressList.isEmpty()) throw new RestApiException(ErrorCode.PILGRIMAGE_NOT_FOUND);

List<RallyDto.RallyAddressDto> addressDtoList = addressList.stream()
Expand Down

0 comments on commit 41121d9

Please sign in to comment.