해당 게시글은 개인 프로젝트인 "광고 관리 플랫폼 대행사 센터 제작" 중
#66 "광고 관리 버그 수정" 이슈를 다루고 있습니다.
manage/광고주ID/campaigns/캠페인ID/ + post(form/delete)
,manage/광고주ID/campaigns/캠페인ID/creatives/소재ID + post(form/delete)
@GetMapping("/{campaignId}/form")
public String updateCampaignForm(
@PathVariable("clientId") String clientId,
@PathVariable Long campaignId,
ModelMap map
) {
campaignService.validateClientAndCampaign(campaignId, clientId);
CampaignResponse campaign = CampaignResponse.from(campaignService.getCampaign(campaignId));
ClientUserWithCampaignsResponse clientUser = ClientUserWithCampaignsResponse.from(manageService.getClientUserWithCampaigns(clientId));
map.addAttribute("clientUser", clientUser);
map.addAttribute("campaign", campaign);
map.addAttribute("formStatus", FormStatus.UPDATE);
return "manage/campaign-form";
}
public void updateCampaign(Long campaignId, String clientId, CampaignDto dto) {
try {
validateClientAndCampaign(campaignId, clientId);
Campaign campaign = campaignRepository.getReferenceById(campaignId);
ClientUser clientUser = clientUserRepository.getReferenceById(dto.clientUserDto().userId());
if (campaign.isDeleted()) {
throw new EntityNotFoundException();
}
if (campaign.getClientUser().equals(clientUser))
if (dto.name() != null) {
campaign.setName(dto.name());
}
campaign.setBudget(dto.budget());
} catch (EntityNotFoundException e) {
log.warn("캠페인을 수정하는데 필요한 정보를 찾을 수 없습니다. - dto : {}", e.getLocalizedMessage());
} catch (IllegalArgumentException e) {
log.warn("캠페인-광고주가 매칭되어 있지 않습니다. 잘못된 경로로 접근하였습니다.", e.getLocalizedMessage());
}
}
public void validateClientAndCampaign(Long campaignId, String clientId) {
Campaign campaign = campaignRepository.getReferenceById(campaignId);
ClientUser clientUser = clientUserRepository.getReferenceById(clientId);
if (!campaign.getClientUser().equals(clientUser)) {
throw new IllegalArgumentException("캠페인-광고주가 매칭되어 있지 않습니다.");
}
}
@Transactional
로 처리를 해야 할 지... 추가 테스트 해보고 반영해보는 것으로