Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MyPage 기능 관련 api 구현 #165

Merged
merged 9 commits into from
Mar 21, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public enum ErrorStatus implements BaseErrorCode {
MEMBER_ACCOUNT_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4008", "계좌가 존재하지 않습니다"),
MEMBER_ADDRESS_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4009", "주소가 존재하지 않습니다"),
MEMBER_INACTIVATE(HttpStatus.NOT_ACCEPTABLE, "MEMBER40010", "탈퇴한 회원입니다."),
MEMBER_NOT_OWNER(HttpStatus.NOT_ACCEPTABLE, "MEMBER40010", "해당 회원이 아닙니다."),

//JWT

Expand All @@ -72,6 +73,9 @@ public enum ErrorStatus implements BaseErrorCode {
//Term
TERM_NOT_FOUND(HttpStatus.NOT_FOUND, "TERM4001", "해당 약관이 존재하지 않습니다."),

//Declaration
DECLARE_NOT_FOUND(HttpStatus.NOT_FOUND, "DECLARE4001", "해당 신고 내역이 존재하지 않습니다."),

//ProfileImg
PROFILEIMG_NOT_FOUND(HttpStatus.NOT_FOUND, "PROFILEIMG4001", "해당 프로필 이미지가 존재하지 않습니다."),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@ public enum SuccessStatus implements BaseCode {
_OK(HttpStatus.OK, "COMMON200", "성공입니다."),

//Member
MEMBER_DELETE_SUCCESS(HttpStatus.OK, "MEMBER2001", "회원 탈퇴 성공입니다.")
MEMBER_DELETE_SUCCESS(HttpStatus.OK, "MEMBER2001", "회원 탈퇴 성공입니다."),
MEMBER_NOTIFICATION_UPDATE(HttpStatus.OK, "MEMBER2002", "회원 알림 변경 성공입니다."),
MEMBER_ACCOUNT_UPDATE(HttpStatus.OK,"MEMBER2003", "회원 계좌 변경 성공입니다."),
MEMBER_ACCOUNT_DELETE(HttpStatus.OK, "MEMBER2004", "회원 계좌 삭제 성공입니다."),
MEMBER_ADDRESS_DELETE(HttpStatus.OK, "MEMBER2005", "회원 배송지 삭제 성공입니다."),
MEMBER_CUSTOM_INFO_UPDATE(HttpStatus.OK, "MEMBER2006", "회원 맞춤 정보 변경 성공입니다."),
MEMBER_DECLARE_SUCCESS(HttpStatus.OK, "MEMBER2007", "신고 등록 성공했습니다."),
MEMBER_DECLARE_DELETE(HttpStatus.OK, "MEMBER2008", "신고 삭제 성공했습니다."),
MEMBER_CONTACT_SUCCESS(HttpStatus.OK, "MEMBER2009", "연락가능 시간 변경 성공입니다.")
;

private final HttpStatus httpStatus;
Expand Down
143 changes: 137 additions & 6 deletions src/main/java/com/umc/TheGoods/converter/member/MemberConverter.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,29 @@
package com.umc.TheGoods.converter.member;

import com.umc.TheGoods.converter.item.ItemConverter;
import com.umc.TheGoods.domain.enums.MemberRole;
import com.umc.TheGoods.domain.images.ProfileImg;
import com.umc.TheGoods.domain.item.Category;
import com.umc.TheGoods.domain.item.Item;
import com.umc.TheGoods.domain.item.ItemOption;
import com.umc.TheGoods.domain.item.Tag;
import com.umc.TheGoods.domain.mapping.Tag.CategoryTag;
import com.umc.TheGoods.domain.mapping.member.MemberCategory;
import com.umc.TheGoods.domain.mapping.member.MemberTag;
import com.umc.TheGoods.domain.mapping.member.MemberTerm;
import com.umc.TheGoods.domain.member.Auth;
import com.umc.TheGoods.domain.member.Member;
import com.umc.TheGoods.domain.member.Term;
import com.umc.TheGoods.domain.mypage.Account;
import com.umc.TheGoods.domain.mypage.Address;
import com.umc.TheGoods.domain.mypage.ContactTime;
import com.umc.TheGoods.domain.mypage.Declaration;
import com.umc.TheGoods.domain.order.OrderItem;
import com.umc.TheGoods.service.ItemService.ItemQueryService;
import com.umc.TheGoods.web.dto.item.ItemResponseDTO;
import com.umc.TheGoods.web.dto.member.MemberRequestDTO;
import com.umc.TheGoods.web.dto.member.MemberResponseDTO;
import org.springframework.data.domain.Page;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.time.LocalDateTime;
Expand Down Expand Up @@ -107,6 +118,16 @@ public static List<MemberCategory> toMemberCategoryList(List<Category> categoryL

}

public static List<MemberTag> toMemberTagList(List<Tag> tagList){

return tagList.stream().map(tag ->
MemberTag.builder()
.tag(tag)
.build()
).collect(Collectors.toList());

}

public static List<MemberTerm> toMemberTermList(HashMap<Term, Boolean> termList) {

return termList.entrySet().stream()
Expand Down Expand Up @@ -223,6 +244,7 @@ public static MemberResponseDTO.ProfileResultDTO toProfile(Member member, String
.defaultCheck(a.getDefaultCheck())
.build()).collect(Collectors.toList());
List<MemberResponseDTO.AddressDTO> addressList = address.stream().map(a -> MemberResponseDTO.AddressDTO.builder()
.id(a.getId())
.addressName(a.getAddressName())
.addressSpec(a.getAddressSpec())
.deliveryMemo(a.getDeliveryMemo())
Expand Down Expand Up @@ -363,20 +385,129 @@ public static MemberResponseDTO.AccountResultDTO toPostAccountDTO(String account

}

public static MemberResponseDTO.AddressResultDTO toUpdateAddressDTO(String address){

return MemberResponseDTO.AddressResultDTO.builder()
.name(address)
public static MemberResponseDTO.MyPageOrderItemDTO toMyPageOrderItemDTO(OrderItem orderItem, Item item){

List<ItemResponseDTO.ItemImgResponseDTO> itemImgResponseDTOList = item.getItemImgList().stream()
.map(ItemConverter::getItemImgDTO)
.filter(ItemResponseDTO.ItemImgResponseDTO::getIsThumbNail).collect(Collectors.toList());

List<String> itemOptionList = item.getItemOptionList().stream()
.map(ItemOption::getName).collect(Collectors.toList());

return MemberResponseDTO.MyPageOrderItemDTO.builder()
.id(orderItem.getId())
.imageUrl(itemImgResponseDTOList.get(0).getItemImgUrl())
.option(itemOptionList)
.name(item.getName())
.orderStatus(orderItem.getStatus())
.price(item.getPrice())
.time(orderItem.getCreatedAt())
.build();
}

public static List<MemberResponseDTO.AccountDTO> toGetAccountDTO(List<Account> account){

List<MemberResponseDTO.AccountDTO> accountList = account.stream().map(a -> MemberResponseDTO.AccountDTO.builder()
.id(a.getId())
.accountNum(a.getAccountNum())
.bankName(a.getBankName())
.owner(a.getOwner())
.defaultCheck(a.getDefaultCheck())
.build()).collect(Collectors.toList());

return accountList;
}

public static List<MemberResponseDTO.AddressDTO> toGetAddressDTO(List<Address> address){
List<MemberResponseDTO.AddressDTO> addressList = address.stream().map(a -> MemberResponseDTO.AddressDTO.builder()
.id(a.getId())
.addressName(a.getAddressName())
.addressSpec(a.getAddressSpec())
.deliveryMemo(a.getDeliveryMemo())
.defaultCheck(a.getDefaultCheck())
.recipientName(a.getRecipientName())
.recipientPhone(a.getRecipientPhone())
.id(a.getId())
.zipcode(a.getZipcode()).build()).collect(Collectors.toList());
return addressList;
}

public static MemberResponseDTO.CustomInfoDTO toCustomInfoDTO(List<Category> categoryList, List<Tag> tagList){
List<MemberResponseDTO.CategoryDTO> category = categoryList.stream().map(
c ->{
return MemberResponseDTO.CategoryDTO
.builder()
.id(c.getId())
.name(c.getName())
.build();}
).collect(Collectors.toList());

List<MemberResponseDTO.TagDTO> tag = tagList.stream().map(
t ->{
return MemberResponseDTO.TagDTO.builder()
.id(t.getId())
.name(t.getName())
.build();
}
).collect(Collectors.toList());

return MemberResponseDTO.CustomInfoDTO.builder()
.categoryList(category)
.tagList(tag)
.build();
}

public static Declaration toDeclaration(Member member, MemberRequestDTO.DeclareDTO request){

String type= new String();
switch (request.getReceipt()){
case 1:
type = "판매글 이름";
break;
case 2:
type = "판매글 링크";
break;
case 3:
type = "판매자 이름";
break;
case 4:
type = "판매자 링크";
break;
}
return Declaration.builder()
.type(type)
.reason(request.getReason())
.salesPost(request.getSalePost())
.member(member)
.build();
}

public static MemberResponseDTO.AccountResultDTO toUpdateAccountDTO(String account){
public static MemberResponseDTO.DeclareResponseDTO toDeclarationDTO(List<Declaration> declarationList){

return MemberResponseDTO.AccountResultDTO.builder()
.name(account)
List<MemberResponseDTO.DeclarationDTO> declarationDTOList = declarationList.stream().map(declaration ->
{
return MemberResponseDTO.DeclarationDTO.builder()
.declarationId(declaration.getId())
.receipt(declaration.getType())
.salePost(declaration.getSalesPost())
.reason(declaration.getReason())
.build();
}).collect(Collectors.toList());

return MemberResponseDTO.DeclareResponseDTO.builder()
.declareDTOList(declarationDTOList)
.build();
}

public static ContactTime toContactTime(Member member, MemberRequestDTO.ContactDTO request){

return ContactTime.builder()
.member(member)
.allTime(request.isAll())
.endTime(request.getEnd())
.startTime(request.getStart())
.build();
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.umc.TheGoods.domain.enums;

public enum ItemStatus {
ONSALE, STOPSALE
ONSALE, STOPSALE,INACTIVE
}
4 changes: 3 additions & 1 deletion src/main/java/com/umc/TheGoods/domain/item/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,9 @@ public List<ItemImg> getItemImgList() {
}
return this.itemImgList;
}

public void updateStatus(ItemStatus itemStatus){
this.status = itemStatus;
}
public void updateItem(ItemRequestDTO.UpdateItemDTO updateItemDTO) {

DeliveryType deliveryType = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.umc.TheGoods.domain.common.BaseDateTimeEntity;
import com.umc.TheGoods.domain.item.Category;
import com.umc.TheGoods.domain.member.Member;
import com.umc.TheGoods.web.dto.member.MemberResponseDTO;
import lombok.*;

import javax.persistence.*;
Expand All @@ -28,9 +29,9 @@ public class MemberCategory extends BaseDateTimeEntity {
private Category category;

public void setMember(Member member) {
if (this.member != null)
member.getMemberCategoryList().remove(this);
this.member = member;
member.getMemberCategoryList().add(this);
member.getMemberCategoryList().add(this); // Add the current MemberCategory to the new Member

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.umc.TheGoods.domain.mapping.member;

import com.umc.TheGoods.domain.item.Category;
import com.umc.TheGoods.domain.item.Tag;
import com.umc.TheGoods.domain.member.Member;
import lombok.*;

import javax.persistence.*;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class MemberTag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "member_tag_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private Tag tag;

public void setMember(Member member) {
this.member = member;
member.getMemberTagList().add(this);

}
}
13 changes: 13 additions & 0 deletions src/main/java/com/umc/TheGoods/domain/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.umc.TheGoods.domain.mapping.comment.CommentLike;
import com.umc.TheGoods.domain.mapping.comment.CommentMention;
import com.umc.TheGoods.domain.mapping.member.MemberCategory;
import com.umc.TheGoods.domain.mapping.member.MemberTag;
import com.umc.TheGoods.domain.mapping.member.MemberTerm;
import com.umc.TheGoods.domain.mapping.post.PostLike;
import com.umc.TheGoods.domain.mypage.*;
Expand All @@ -26,6 +27,7 @@
import com.umc.TheGoods.domain.types.SocialType;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.DynamicInsert;

import javax.persistence.*;
import java.util.ArrayList;
Expand All @@ -35,6 +37,7 @@
@Entity
@Getter
@Builder
@DynamicInsert
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Member extends BaseDateTimeEntity {
Expand Down Expand Up @@ -103,9 +106,19 @@ public class Member extends BaseDateTimeEntity {
@ColumnDefault("false")
private Boolean marketingNotice;

@Column(columnDefinition = "BOOLEAN")
@ColumnDefault("false")
private Boolean postNotice;

@Column(columnDefinition = "BOOLEAN")
@ColumnDefault("false")
private Boolean infoTerm;

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<MemberCategory> memberCategoryList = new ArrayList<>();

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<MemberTag> memberTagList = new ArrayList<>();

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
private List<MemberTerm> memberTermList = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import com.umc.TheGoods.domain.mapping.Tag.CategoryTag;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;

public interface CategoryTagRepository extends JpaRepository<CategoryTag, Long> {

Optional<CategoryTag> findByCategoryAndTag(Category category, Tag tag);

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.umc.TheGoods.domain.item.Item;
import com.umc.TheGoods.domain.item.Tag;
import com.umc.TheGoods.domain.member.Member;
import com.umc.TheGoods.domain.order.OrderItem;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down Expand Up @@ -53,4 +54,9 @@ public interface ItemRepository extends JpaRepository<Item, Long> {
Page<Item> findAllByIdIn(List<Long> itemId, PageRequest pageRequest);

Page<Item> findAllByCategory(Category category, PageRequest pageRequest);

@Query("SELECT oi.item FROM OrderItem oi WHERE oi.id = :orderItemId")
Item findItemByOrderItem(Long orderItemId);

List<Item> findAllByMember(Member member);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public interface AccountRepository extends JpaRepository<Account, Long> {

List<Account> findAllByMember_Id(Long id);

Optional<Account> findByMember_Id(Long id);

@Transactional
@Modifying(clearAutomatically = true)
@Query("UPDATE Account a SET a.accountNum = :accountNum, a.bankName = :bankName, a.owner = :owner, a.defaultCheck = :defaultCheck WHERE a.id = :accountId")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@
import com.umc.TheGoods.domain.item.Category;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;

public interface CategoryRepository extends JpaRepository<Category, Long> {

Optional<Category> findByName(String name);

Optional<Category> findById(Long id);


}
Loading
Loading