diff --git a/maku-boot-system/src/main/java/net/maku/system/service/impl/SysSmsConfigServiceImpl.java b/maku-boot-system/src/main/java/net/maku/system/service/impl/SysSmsConfigServiceImpl.java
new file mode 100644
index 0000000..93367b9
--- /dev/null
+++ b/maku-boot-system/src/main/java/net/maku/system/service/impl/SysSmsConfigServiceImpl.java
@@ -0,0 +1,100 @@
+package net.maku.system.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import net.maku.framework.common.constant.Constant;
+import net.maku.framework.common.utils.PageResult;
+import net.maku.framework.mybatis.service.impl.BaseServiceImpl;
+import net.maku.sms.config.SmsConfig;
+import net.maku.system.cache.SmsConfigCache;
+import net.maku.system.convert.SysSmsConfigConvert;
+import net.maku.system.dao.SysSmsConfigDao;
+import net.maku.system.entity.SysSmsConfigEntity;
+import net.maku.system.query.SysSmsConfigQuery;
+import net.maku.system.service.SysSmsConfigService;
+import net.maku.system.vo.SysSmsConfigVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 短信配置
+ *
+ * @author 阿沐 babamu@126.com
+ * MAKU
+ */
+@Service
+@AllArgsConstructor
+public class SysSmsConfigServiceImpl extends BaseServiceImpl implements SysSmsConfigService {
+ private final SmsConfigCache smsConfigCache;
+
+ @Override
+ public PageResult page(SysSmsConfigQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(SysSmsConfigConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ @Override
+ public List list(Integer platform) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(platform != null, SysSmsConfigEntity::getPlatform, platform);
+
+ List list = baseMapper.selectList(wrapper);
+ return SysSmsConfigConvert.INSTANCE.convertList(list);
+ }
+
+ private LambdaQueryWrapper getWrapper(SysSmsConfigQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(query.getPlatform() != null, SysSmsConfigEntity::getPlatform, query.getPlatform());
+ wrapper.like(StrUtil.isNotBlank(query.getGroupName()), SysSmsConfigEntity::getGroupName, query.getGroupName());
+ return wrapper;
+ }
+
+ @Override
+ public List listByEnable() {
+ // 从缓存读取
+ List cacheList = smsConfigCache.list();
+
+ // 如果缓存没有,则从DB读取,然后保存到缓存里
+ if (cacheList == null) {
+ List list = this.list(new LambdaQueryWrapper().in(SysSmsConfigEntity::getStatus, Constant.ENABLE));
+
+ cacheList = SysSmsConfigConvert.INSTANCE.convertList2(list);
+ smsConfigCache.save(cacheList);
+ }
+
+ return cacheList;
+ }
+
+ @Override
+ public void save(SysSmsConfigVO vo) {
+ SysSmsConfigEntity entity = SysSmsConfigConvert.INSTANCE.convert(vo);
+
+ baseMapper.insert(entity);
+
+ smsConfigCache.delete();
+ }
+
+ @Override
+ public void update(SysSmsConfigVO vo) {
+ SysSmsConfigEntity entity = SysSmsConfigConvert.INSTANCE.convert(vo);
+
+ updateById(entity);
+
+ smsConfigCache.delete();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(List idList) {
+ removeByIds(idList);
+
+ smsConfigCache.delete();
+ }
+
+}
\ No newline at end of file