MessageSettingsCommandServiceImpl.java
package com.deveagles.be15_deveagles_be.features.messages.command.application.service.impl;
import com.deveagles.be15_deveagles_be.common.exception.BusinessException;
import com.deveagles.be15_deveagles_be.common.exception.ErrorCode;
import com.deveagles.be15_deveagles_be.features.messages.command.application.dto.request.MessageSettingRequest;
import com.deveagles.be15_deveagles_be.features.messages.command.application.dto.response.MessageSettingResponse;
import com.deveagles.be15_deveagles_be.features.messages.command.application.service.MessageSettingsCommandService;
import com.deveagles.be15_deveagles_be.features.messages.command.domain.aggregate.MessageSettings;
import com.deveagles.be15_deveagles_be.features.messages.command.domain.repository.MessageSettingRepository;
import com.deveagles.be15_deveagles_be.features.shops.command.application.service.ShopCommandServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Transactional
@Service
@RequiredArgsConstructor
public class MessageSettingsCommandServiceImpl implements MessageSettingsCommandService {
private final MessageSettingRepository messageSettingRepository;
private final ShopCommandServiceImpl shopCommandServiceImpl;
@Override
public Long createDefault(Long shopId) {
if (messageSettingRepository.existsByShopId(shopId)) {
throw new BusinessException(ErrorCode.MESSAGE_SETTINGS_ALREADY_EXISTS);
}
MessageSettings settings =
MessageSettings.builder()
.shopId(shopId)
.senderNumber(null)
.canAlimtalk(false)
.point(0L)
.build();
return messageSettingRepository.save(settings).getShopId();
}
@Override
@Transactional(readOnly = true)
public MessageSettingResponse loadSettings(Long shopId) {
shopCommandServiceImpl.validateShopExists(shopId);
MessageSettings settings =
messageSettingRepository
.findByShopId(shopId)
.orElseThrow(() -> new BusinessException(ErrorCode.MESSAGE_SETTINGS_NOT_FOUND));
return MessageSettingResponse.from(settings);
}
@Override
public void updateSettings(Long shopId, MessageSettingRequest request) {
shopCommandServiceImpl.validateShopExists(shopId);
MessageSettings settings =
messageSettingRepository
.findByShopId(shopId)
.orElseThrow(() -> new BusinessException(ErrorCode.MESSAGE_SETTINGS_NOT_FOUND));
settings.update(request.getSenderNumber(), request.getCanAlimtalk());
if (request.getPoint() != null && request.getPoint() > 0) {
settings.addPoint(request.getPoint());
}
}
}