개발일지
member-service
준서이
2024. 4. 11. 16:49
package com.example.totalproject.Service;
import com.example.totalproject.DTO.MemberDTO;
import com.example.totalproject.Entity.MemberEntity;
import com.example.totalproject.Repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
private final ModelMapper modelMapper = new ModelMapper();
private final PasswordEncoder passwordEncoder;
//삽입
public void memberSave(MemberDTO memberDTO) {
//기존 사용하는 아이디를 조회
Optional<MemberEntity> read = memberRepository
.findByUserid(memberDTO.getUserid());
if(read.isEmpty()) { //읽어온 값이 없으면(기존 사용하는 아이디가 존재하지 않으면)
MemberEntity memberEntity = modelMapper.map(memberDTO,
MemberEntity.class);
memberRepository.save(memberEntity);
}
}
//수정
public void memberModify(MemberDTO memberDTO) {
//비밀번호 처리 및 암호화를 작업 추가
Optional<MemberEntity> read = memberRepository.findById(memberDTO.getId());
//비밀번호가 없거나, 길이가 0이면
if(memberDTO.getPassword() != null || memberDTO.getPassword().length() == 0) {
memberDTO.setPassword(read.get().getPassword());
} else {
memberDTO.setPassword(passwordEncoder.encode(memberDTO.getPassword()));
}
MemberEntity memberEntity = modelMapper.map(memberDTO,
MemberEntity.class);
memberRepository.save(memberEntity);
}
//삭제
public void memberRemove(int id) {
memberRepository.deleteById(id);
}
//조회
public Page<MemberDTO> memberList(Pageable page) {
int cutPage = page.getPageNumber()-1;
int pageCnt = 10;
Pageable pageable = PageRequest.of(cutPage, pageCnt,
Sort.by(Sort.Direction.DESC, "id"));
Page<MemberEntity> memberEntities = memberRepository.findAll(pageable);
Page<MemberDTO> memberDTOS = memberEntities.map(data->
modelMapper.map(data, MemberDTO.class));
return memberDTOS;
}
//개별조회
public MemberDTO memberRead(int id) {
Optional<MemberEntity> memberEntity = memberRepository.findById(id);
MemberDTO memberDTO = modelMapper.map(memberEntity, MemberDTO.class);
return memberDTO;
}
}