feat: added TerminalService and TerminalServiceImpl

This commit is contained in:
Petr Rudichev 2025-02-19 15:29:50 +03:00
parent a4b7c9ed61
commit f0b45b78e2
2 changed files with 85 additions and 1 deletions

View File

@ -1,5 +1,16 @@
package com.example.nto.service;
public interface TerminalService {
import com.example.nto.dto.entity.TerminalDTO;
import java.util.List;
public interface TerminalService {
List<TerminalDTO> getAllTerminal();
TerminalDTO getById(long terminalId);
TerminalDTO create(TerminalDTO terminalDTO);
TerminalDTO update(long terminalId, TerminalDTO terminalDTO);
void delete(long terminalId);
TerminalDTO checkCode(String code);
}

View File

@ -1,6 +1,79 @@
package com.example.nto.service.impl;
import com.example.nto.aspect.annotation.LogExample;
import com.example.nto.domain.entity.Office;
import com.example.nto.domain.entity.Terminal;
import com.example.nto.domain.exception.ResourceNotFoundException;
import com.example.nto.dto.entity.TerminalDTO;
import com.example.nto.dto.mappers.TerminalMapper;
import com.example.nto.repository.OfficeRepository;
import com.example.nto.repository.TerminalRepository;
import com.example.nto.service.TerminalService;
import com.example.nto.utils.Utils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class TerminalServiceImpl implements TerminalService {
private final TerminalRepository terminalRepository;
private final OfficeRepository officeRepository;
@Override
@LogExample
public List<TerminalDTO> getAllTerminal() {
return terminalRepository.findAll().stream().map(TerminalMapper::convertToDTO).collect(Collectors.toList());
}
@Override
@LogExample
public TerminalDTO getById(long terminalId) {
return terminalRepository.findById(terminalId).map(TerminalMapper::convertToDTO)
.orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!"));
}
@Override
@LogExample
public TerminalDTO create(TerminalDTO terminalDTO) {
Office office = officeRepository.findByName(terminalDTO.getOfficeName())
.orElseThrow(() -> new ResourceNotFoundException("Офис с названием (" + terminalDTO.getOfficeName() + ") не найден!"));
Terminal terminal = new Terminal();
terminal.setName(terminalDTO.getName());
terminal.setOffice(office);
return TerminalMapper.convertToDTO(terminalRepository.save(terminal));
}
@Override
@LogExample
public TerminalDTO update(long terminalId, TerminalDTO terminalDTO) {
Terminal terminal = terminalRepository.findById(terminalId)
.orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!"));
Office office = officeRepository.findByName(terminalDTO.getOfficeName())
.orElseThrow(() -> new ResourceNotFoundException("Офис с названием (" + terminalDTO.getOfficeName() + ") не найден!"));
terminal.setName(terminalDTO.getName());
terminal.setCode(Utils.generateUniqueName());
terminal.setOffice(office);
return TerminalMapper.convertToDTO(terminalRepository.save(terminal));
}
@Override
@LogExample
public void delete(long terminalId) {
terminalRepository.findById(terminalId).orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!"));
terminalRepository.deleteById(terminalId);
}
@Override
@LogExample
public TerminalDTO checkCode(String code) {
return terminalRepository.findByCode(code).map(TerminalMapper::convertToDTO)
.orElseThrow(() -> new ResourceNotFoundException("Терминал с кодом (" + code + ") не найден!"));
}
}