package com.iailab.module.system.service.mail; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; import com.iailab.module.system.controller.admin.mail.vo.account.MailAccountSaveReqVO; import com.iailab.module.system.dal.dataobject.mail.MailAccountDO; import com.iailab.module.system.dal.mysql.mail.MailAccountMapper; import com.iailab.module.system.dal.redis.RedisKeyConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.List; import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.iailab.module.system.enums.ErrorCodeConstants.MAIL_ACCOUNT_NOT_EXISTS; import static com.iailab.module.system.enums.ErrorCodeConstants.MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS; /** * é‚®ç®±è´¦å· Service 实现类 * * @author wangjingyi * @since 2022-03-21 */ @Service @Validated @Slf4j public class MailAccountServiceImpl implements MailAccountService { @Resource private MailAccountMapper mailAccountMapper; @Resource private MailTemplateService mailTemplateService; @Override public Long createMailAccount(MailAccountSaveReqVO createReqVO) { MailAccountDO account = BeanUtils.toBean(createReqVO, MailAccountDO.class); mailAccountMapper.insert(account); return account.getId(); } @Override @CacheEvict(value = RedisKeyConstants.MAIL_ACCOUNT, key = "#updateReqVO.id") public void updateMailAccount(MailAccountSaveReqVO updateReqVO) { // æ ¡éªŒæ˜¯å¦å˜åœ¨ validateMailAccountExists(updateReqVO.getId()); // æ›´æ–° MailAccountDO updateObj = BeanUtils.toBean(updateReqVO, MailAccountDO.class); mailAccountMapper.updateById(updateObj); } @Override @CacheEvict(value = RedisKeyConstants.MAIL_ACCOUNT, key = "#id") public void deleteMailAccount(Long id) { // æ ¡éªŒæ˜¯å¦å˜åœ¨è´¦å· validateMailAccountExists(id); // æ ¡éªŒæ˜¯å¦å˜åœ¨å…³è”模版 if (mailTemplateService.getMailTemplateCountByAccountId(id) > 0) { throw exception(MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS); } // åˆ é™¤ mailAccountMapper.deleteById(id); } private void validateMailAccountExists(Long id) { if (mailAccountMapper.selectById(id) == null) { throw exception(MAIL_ACCOUNT_NOT_EXISTS); } } @Override public MailAccountDO getMailAccount(Long id) { return mailAccountMapper.selectById(id); } @Override @Cacheable(value = RedisKeyConstants.MAIL_ACCOUNT, key = "#id", unless = "#result == null") public MailAccountDO getMailAccountFromCache(Long id) { return getMailAccount(id); } @Override public PageResult<MailAccountDO> getMailAccountPage(MailAccountPageReqVO pageReqVO) { return mailAccountMapper.selectPage(pageReqVO); } @Override public List<MailAccountDO> getMailAccountList() { return mailAccountMapper.selectList(); } }