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.memo;
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;
/**
* 기관관리 상세의 업무메모 탭이 쓰는 서비스. 전화 통화 등 담당자와의 연락 내용을
* 기관별로 남겨두는 단순 CRUD이며, Mattermost와는 무관한 순수 DB 기능이다.
*/
@Service
public class WorkMemoService {
private final WorkMemoMapper memoMapper;
private final OrganizationMapper orgMapper;
public WorkMemoService(WorkMemoMapper memoMapper, OrganizationMapper orgMapper) {
this.memoMapper = memoMapper;
this.orgMapper = orgMapper;
}
public List<WorkMemo> list(Long orgId) {
requireOrg(orgId);
return memoMapper.findByOrg(orgId);
}
@Transactional
public WorkMemo create(Long orgId, MemoRequest request) {
requireOrg(orgId);
WorkMemo memo = new WorkMemo();
memo.setOrgId(orgId);
memo.setContactName(request.contactName());
memo.setBody(request.body());
memoMapper.insert(memo);
// 방금 넣은 행이 created_at 기준 가장 최신이므로 목록의 첫 행이 곧 이 메모다.
return memoMapper.findByOrg(orgId).get(0);
}
@Transactional
public void delete(Long orgId, Long memoId) {
requireOrg(orgId);
int deleted = memoMapper.delete(orgId, memoId);
if (deleted == 0) {
throw new OrgNotFoundException("메모를 찾을 수 없습니다: " + memoId);
}
}
private void requireOrg(Long orgId) {
if (orgMapper.findById(orgId) == null) {
throw new OrgNotFoundException("기관을 찾을 수 없습니다: " + orgId);
}
}
}