File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package kr.itn.itnhub.re;
import kr.itn.itnhub.org.OrgNotFoundException;
import kr.itn.itnhub.org.OrganizationMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 기관관리 상세의 RE 탭이 쓰는 서비스.
*
* <p>요구사항 [4]: 별도 양식 없이 메모장처럼 등록한다. 메모 1개가 RE 1개다.</p>
*/
@Service
public class ReMemoService {
private final ReMemoMapper mapper;
private final OrganizationMapper orgMapper;
public ReMemoService(ReMemoMapper mapper, OrganizationMapper orgMapper) {
this.mapper = mapper;
this.orgMapper = orgMapper;
}
public List<ReMemo> list(Long orgId) {
requireOrg(orgId);
return mapper.findByOrg(orgId);
}
@Transactional
public List<ReMemo> add(Long orgId, ReMemoRequest request) {
requireOrg(orgId);
mapper.insert(orgId, request.content().trim(), request.author().trim(),
blankToNull(request.memoDate()), request.resolved());
return mapper.findByOrg(orgId);
}
@Transactional
public List<ReMemo> update(Long orgId, Long memoId, ReMemoRequest request) {
requireOrg(orgId);
int updated = mapper.update(orgId, memoId, request.content().trim(),
request.author().trim(), blankToNull(request.memoDate()), request.resolved());
if (updated == 0) {
throw new ReMemoNotFoundException("RE 메모를 찾을 수 없습니다: " + memoId);
}
return mapper.findByOrg(orgId);
}
@Transactional
public void delete(Long orgId, Long memoId) {
requireOrg(orgId);
if (mapper.delete(orgId, memoId) == 0) {
throw new ReMemoNotFoundException("RE 메모를 찾을 수 없습니다: " + memoId);
}
}
private String blankToNull(String value) {
return (value == null || value.isBlank()) ? null : value.trim();
}
private void requireOrg(Long orgId) {
if (orgMapper.findById(orgId) == null) {
throw new OrgNotFoundException("기관을 찾을 수 없습니다: " + orgId);
}
}
}