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

Feature/member mypage #72 #79

Merged
merged 10 commits into from
Jan 15, 2025
10 changes: 4 additions & 6 deletions Admin/src/main/java/com/seveneleven/dto/MemberDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,17 @@ public static Response fromEntity(Member member) {
@Getter
@Setter
public static class Response{
private Long companyId;
private String company;
private Long id;
private String loginId;
private String name;
private String email;
private Role role;
private MemberStatus status;
private String phoneNumber;
private LocalDate birthDate;
private Long departmentId;
private String department;
private Long positionId;
private String position;

}

@Getter
Expand All @@ -55,8 +53,8 @@ public static class Request{
private Role role;
private String phoneNumber;
private LocalDate birthDate;
private Long departmentId;
private Long positionId;
private String department;
private String position;
}


Expand Down
4 changes: 2 additions & 2 deletions Admin/src/main/java/com/seveneleven/dto/MemberUpdate.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ public static class PatchRequest{
private Long companyId;
private Role role;
private String phoneNumber;
private Long departmentId;
private Long positionId;
private String department;
private String position;
}

@Getter
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import java.util.List;

public interface MeberMgmtService {
public interface MemberMgmtService {

Page<MemberDto.Response> getFilteredMembers(String name, MemberStatus status, Role role, String loginId, Pageable pageable);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
import com.seveneleven.MemberValidator;
import com.seveneleven.repository.AdminMemberRepository;
import com.seveneleven.repository.CompanyRepository;
import com.seveneleven.repository.DepartmentRepository;
import com.seveneleven.repository.PositionRepository;
import com.seveneleven.response.ErrorCode;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.RandomStringUtils;
Expand All @@ -33,12 +31,10 @@
*/
@Service
@AllArgsConstructor
public class MemberMgmtServiceImpl implements MeberMgmtService{
public class MemberMgmtServiceImpl implements MemberMgmtService {

private final AdminMemberRepository memberRepository;
private final CompanyRepository companyRepository;
private final DepartmentRepository departmentRepository;
private final PositionRepository positionRepository;
private final PasswordEncoder passwordEncoder;

/**
Expand All @@ -52,11 +48,10 @@ public class MemberMgmtServiceImpl implements MeberMgmtService{
* @param pageable 페이징 정보.
* @return 필터 조건에 맞는 회원 목록.
*/
@Transactional
@Transactional(readOnly = true)
public Page<MemberDto.Response> getFilteredMembers(
String name, MemberStatus status, Role role, String loginId, Pageable pageable) {


Specification<Member> spec = Specification
.where(MemberSpecification.hasName(name))
.and(MemberSpecification.hasStatus(status))
Expand All @@ -66,8 +61,7 @@ public Page<MemberDto.Response> getFilteredMembers(
Page<Member> members = memberRepository.findAll(spec, pageable);

// 엔티티 -> DTO 변환
return memberRepository.findAll(spec, pageable).map(this::toResponseDto);

return members.map(MemberDto::fromEntity);
}

/**
Expand All @@ -79,11 +73,9 @@ public Page<MemberDto.Response> getFilteredMembers(
*/
@Transactional(readOnly = true)
public MemberDto.Response getMemberDetail(String loginId) {

Member member = memberRepository.findByLoginId(loginId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));

return toResponseDto(member);
return MemberDto.fromEntity(member);
}

/**
Expand Down Expand Up @@ -112,12 +104,15 @@ public MemberDto.Response createMember(MemberDto.Request memberDto) {
memberDto.getEmail(),
memberDto.getBirthDate(),
memberDto.getPhoneNumber(),
memberDto.getDepartmentId(),
memberDto.getPositionId()
memberDto.getDepartment(),
memberDto.getPosition()
);

// 4. 저장 후 DTO로 변환
return toResponseDto(memberRepository.save(member));
// 4. 저장
Member savedMember = memberRepository.save(member);

// 5. DTO로 변환 후 반환
return MemberDto.fromEntity(savedMember);
}

/**
Expand Down Expand Up @@ -148,15 +143,18 @@ public List<MemberDto.Response> createMembers(List<MemberDto.Request> memberDtos
memberDto.getEmail(),
memberDto.getBirthDate(),
memberDto.getPhoneNumber(),
memberDto.getDepartmentId(),
memberDto.getPositionId()
memberDto.getDepartment(),
memberDto.getPosition()
);
}).toList();

return memberRepository.saveAll(members).stream()
.map(this::toResponseDto)
.toList();
// 2. 일괄 저장
List<Member> savedMembers = memberRepository.saveAll(members);

// 3. 저장된 엔티티를 DTO로 변환 후 반환
return savedMembers.stream()
.map(MemberDto::fromEntity)
.toList();
}

/**
Expand All @@ -168,7 +166,7 @@ public List<MemberDto.Response> createMembers(List<MemberDto.Request> memberDtos
* @return 수정된 회원의 응답 DTO.
*/
@Transactional
public MemberDto.Response updateMember(String loginId, MemberUpdate.PatchRequest memberDto) {
public MemberDto.Response updateMember(String loginId, MemberUpdate.PatchRequest memberDto){

Member member = memberRepository.findByLoginId(loginId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
Expand All @@ -177,10 +175,9 @@ public MemberDto.Response updateMember(String loginId, MemberUpdate.PatchRequest
.orElseThrow(() -> new BusinessException(ErrorCode.COMPANY_IS_NOT_FOUND));

member.updateMember(memberDto.getName(), member.getEmail(), memberDto.getPhoneNumber(), memberDto.getRole(), company,
memberDto.getDepartmentId(), memberDto.getPositionId());

memberDto.getDepartment(), memberDto.getPosition());

return toResponseDto(memberRepository.save(member));
return MemberDto.fromEntity(member);
}

/**
Expand Down Expand Up @@ -234,23 +231,6 @@ public MemberUpdate.PatchResponse resetPassword(String loginId) {
}


/*
* 함수명 : toResponseDto
* Member -> Response DTO 변환
*
* */
private MemberDto.Response toResponseDto(Member member) {

MemberDto.Response response = MemberDto.fromEntity(member);
response.setDepartmentId(member.getDepartmentId());
response.setDepartment(getDepartmentNameById(member.getDepartmentId()));
response.setPositionId(member.getPositionId());
response.setPosition(getPositionNameById(member.getPositionId()));

return response;
}


/**
* 함수명 : generateTemporaryPassword
* 대문자, 소문자, 숫자, 특수문자를 포함한 12자리 임시 비밀번호를 생성합니다.
Expand All @@ -261,27 +241,4 @@ private String generateTemporaryPassword() {
return RandomStringUtils.randomAlphanumeric(12);
}

/**
* 함수명 : getDepartmentNameById
* 부서 ID null 체크 후 부서 이름 반환
*
*/
private String getDepartmentNameById(Long departmentId) {
if (departmentId == null) {
return null;
}
return departmentRepository.findNameById(departmentId).orElse(null);
}

/**
* 함수명 : getPositionNameById
* 직책 ID null 체크 후 직책 이름 반환
*
*/
private String getPositionNameById(Long positionId) {
if (positionId == null) {
return null;
}
return positionRepository.findNameById(positionId).orElse(null);
}
}
14 changes: 0 additions & 14 deletions Common/src/main/java/com/seveneleven/entity/member/Company.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ public class Company extends BaseEntity {
@Column(name = "company_name", nullable = false, length = 255)
private String companyName; // 회사명

@OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Department> departments = new ArrayList<>(); // 부서 리스트

@Column(name = "representative_name", nullable = false, length = 100)
private String representativeName; // 대표자명

Expand Down Expand Up @@ -101,15 +98,4 @@ public void deleteCompany() {
this.isActive = YN.N;
}

// 부서 추가 메서드
public void addDepartment(Department department) {
this.departments.add(department);
department.setCompany(this);
}

// 부서 삭제 메서드
public void removeDepartment(Department department) {
this.departments.remove(department);
department.setCompany(null);
}
}

This file was deleted.

Loading
Loading