Commit 5f2abdabbe8fa597238f7cf142f66ab298745c18
1 parent
8ba906c6
feat: 优化 IoT 告警模板选择
- 后端 mail/sms/notify 模板 simple-list 仅返回启用模板精简字段 - 前端补充 mail/sms/notify 模板 simple-list API 封装 - vue3 与 vben antd/ele 在各自 system 模块封装模板选择组件 - IoT 告警配置按接收类型动态选择短信、邮件、站内信模板 - 补充前端 IotAlertReceiveTypeEnum,替换表单内裸常量
Showing
15 changed files
with
115 additions
and
22 deletions
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.java
| 1 | 1 | package cn.iocoder.yudao.module.system.controller.admin.mail; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| ... | ... | @@ -80,10 +81,11 @@ public class MailTemplateController { |
| 80 | 81 | return success(BeanUtils.toBean(pageResult, MailTemplateRespVO.class)); |
| 81 | 82 | } |
| 82 | 83 | |
| 83 | - @GetMapping({"/list-all-simple", "simple-list"}) | |
| 84 | - @Operation(summary = "获得邮件模版精简列表") | |
| 85 | - public CommonResult<List<MailTemplateSimpleRespVO>> getSimpleTemplateList() { | |
| 86 | - List<MailTemplateDO> list = mailTempleService.getMailTemplateList(); | |
| 84 | + @GetMapping({"/list-all-simple", "/simple-list"}) | |
| 85 | + @Operation(summary = "获得邮件模版精简列表", description = "只包含被开启的邮件模版,主要用于前端的下拉选项") | |
| 86 | + public CommonResult<List<MailTemplateSimpleRespVO>> getSimpleMailTemplateList() { | |
| 87 | + List<MailTemplateDO> list = mailTempleService.getMailTemplateListByStatus( | |
| 88 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 87 | 89 | return success(BeanUtils.toBean(list, MailTemplateSimpleRespVO.class)); |
| 88 | 90 | } |
| 89 | 91 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/notify/NotifyTemplateController.java
| 1 | 1 | package cn.iocoder.yudao.module.system.controller.admin.notify; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -88,9 +89,10 @@ public class NotifyTemplateController { |
| 88 | 89 | } |
| 89 | 90 | |
| 90 | 91 | @GetMapping({"/list-all-simple", "/simple-list"}) |
| 91 | - @Operation(summary = "获得站内信模版精简列表") | |
| 92 | - public CommonResult<List<NotifyTemplateSimpleRespVO>> getSimpleTemplateList() { | |
| 93 | - List<NotifyTemplateDO> list = notifyTemplateService.getNotifyTemplateList(); | |
| 92 | + @Operation(summary = "获得站内信模版精简列表", description = "只包含被开启的站内信模版,主要用于前端的下拉选项") | |
| 93 | + public CommonResult<List<NotifyTemplateSimpleRespVO>> getSimpleNotifyTemplateList() { | |
| 94 | + List<NotifyTemplateDO> list = notifyTemplateService.getNotifyTemplateListByStatus( | |
| 95 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 94 | 96 | return success(BeanUtils.toBean(list, NotifyTemplateSimpleRespVO.class)); |
| 95 | 97 | } |
| 96 | 98 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.java
| 1 | 1 | package cn.iocoder.yudao.module.system.controller.admin.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; |
| 4 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 6 | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| ... | ... | @@ -90,9 +91,10 @@ public class SmsTemplateController { |
| 90 | 91 | } |
| 91 | 92 | |
| 92 | 93 | @GetMapping({"/list-all-simple", "/simple-list"}) |
| 93 | - @Operation(summary = "获得短信模板精简列表") | |
| 94 | - public CommonResult<List<SmsTemplateSimpleRespVO>> getSimpleTemplateList() { | |
| 95 | - List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateList(); | |
| 94 | + @Operation(summary = "获得短信模板精简列表", description = "只包含被开启的短信模板,主要用于前端的下拉选项") | |
| 95 | + public CommonResult<List<SmsTemplateSimpleRespVO>> getSimpleSmsTemplateList() { | |
| 96 | + List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateListByStatus( | |
| 97 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 96 | 98 | return success(BeanUtils.toBean(list, SmsTemplateSimpleRespVO.class)); |
| 97 | 99 | } |
| 98 | 100 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailTemplateMapper.java
| ... | ... | @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemp |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; |
| 8 | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 10 | 12 | @Mapper |
| 11 | 13 | public interface MailTemplateMapper extends BaseMapperX<MailTemplateDO> { |
| 12 | 14 | |
| ... | ... | @@ -28,4 +30,8 @@ public interface MailTemplateMapper extends BaseMapperX<MailTemplateDO> { |
| 28 | 30 | return selectOne(MailTemplateDO::getCode, code); |
| 29 | 31 | } |
| 30 | 32 | |
| 33 | + default List<MailTemplateDO> selectListByStatus(Integer status) { | |
| 34 | + return selectList(MailTemplateDO::getStatus, status); | |
| 35 | + } | |
| 36 | + | |
| 31 | 37 | } | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notify/NotifyTemplateMapper.java
| ... | ... | @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.system.controller.admin.notify.vo.template.Notify |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.dataobject.notify.NotifyTemplateDO; |
| 8 | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 10 | 12 | @Mapper |
| 11 | 13 | public interface NotifyTemplateMapper extends BaseMapperX<NotifyTemplateDO> { |
| 12 | 14 | |
| ... | ... | @@ -23,4 +25,8 @@ public interface NotifyTemplateMapper extends BaseMapperX<NotifyTemplateDO> { |
| 23 | 25 | .orderByDesc(NotifyTemplateDO::getId)); |
| 24 | 26 | } |
| 25 | 27 | |
| 28 | + default List<NotifyTemplateDO> selectListByStatus(Integer status) { | |
| 29 | + return selectList(NotifyTemplateDO::getStatus, status); | |
| 30 | + } | |
| 31 | + | |
| 26 | 32 | } | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsTemplateMapper.java
| ... | ... | @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTempla |
| 7 | 7 | import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO; |
| 8 | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 10 | 12 | @Mapper |
| 11 | 13 | public interface SmsTemplateMapper extends BaseMapperX<SmsTemplateDO> { |
| 12 | 14 | |
| ... | ... | @@ -30,4 +32,8 @@ public interface SmsTemplateMapper extends BaseMapperX<SmsTemplateDO> { |
| 30 | 32 | return selectCount(SmsTemplateDO::getChannelId, channelId); |
| 31 | 33 | } |
| 32 | 34 | |
| 35 | + default List<SmsTemplateDO> selectListByStatus(Integer status) { | |
| 36 | + return selectList(SmsTemplateDO::getStatus, status); | |
| 37 | + } | |
| 38 | + | |
| 33 | 39 | } | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateService.java
| ... | ... | @@ -70,6 +70,14 @@ public interface MailTemplateService { |
| 70 | 70 | List<MailTemplateDO> getMailTemplateList(); |
| 71 | 71 | |
| 72 | 72 | /** |
| 73 | + * 获取指定状态的邮件模版数组 | |
| 74 | + * | |
| 75 | + * @param status 状态 | |
| 76 | + * @return 邮件模版数组 | |
| 77 | + */ | |
| 78 | + List<MailTemplateDO> getMailTemplateListByStatus(Integer status); | |
| 79 | + | |
| 80 | + /** | |
| 73 | 81 | * 从缓存中获取邮件模版 |
| 74 | 82 | * |
| 75 | 83 | * @param code 模板编码 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateServiceImpl.java
| ... | ... | @@ -113,7 +113,9 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | @Override |
| 116 | - public MailTemplateDO getMailTemplate(Long id) {return mailTemplateMapper.selectById(id);} | |
| 116 | + public MailTemplateDO getMailTemplate(Long id) { | |
| 117 | + return mailTemplateMapper.selectById(id); | |
| 118 | + } | |
| 117 | 119 | |
| 118 | 120 | @Override |
| 119 | 121 | @Cacheable(value = RedisKeyConstants.MAIL_TEMPLATE, key = "#code", unless = "#result == null") |
| ... | ... | @@ -127,7 +129,14 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 127 | 129 | } |
| 128 | 130 | |
| 129 | 131 | @Override |
| 130 | - public List<MailTemplateDO> getMailTemplateList() {return mailTemplateMapper.selectList();} | |
| 132 | + public List<MailTemplateDO> getMailTemplateList() { | |
| 133 | + return mailTemplateMapper.selectList(); | |
| 134 | + } | |
| 135 | + | |
| 136 | + @Override | |
| 137 | + public List<MailTemplateDO> getMailTemplateListByStatus(Integer status) { | |
| 138 | + return mailTemplateMapper.selectListByStatus(status); | |
| 139 | + } | |
| 131 | 140 | |
| 132 | 141 | @Override |
| 133 | 142 | public String formatMailTemplateContent(String content, Map<String, Object> params) { |
| ... | ... | @@ -236,4 +245,4 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 236 | 245 | return ReUtil.findAllGroup1(PATTERN_PARAMS, content); |
| 237 | 246 | } |
| 238 | 247 | |
| 239 | -} | |
| 240 | 248 | \ No newline at end of file |
| 249 | +} | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notify/NotifyTemplateService.java
| ... | ... | @@ -70,11 +70,12 @@ public interface NotifyTemplateService { |
| 70 | 70 | PageResult<NotifyTemplateDO> getNotifyTemplatePage(NotifyTemplatePageReqVO pageReqVO); |
| 71 | 71 | |
| 72 | 72 | /** |
| 73 | - * 获得启用状态的站内信模版列表 | |
| 73 | + * 获得指定状态的站内信模版列表 | |
| 74 | 74 | * |
| 75 | + * @param status 状态 | |
| 75 | 76 | * @return 站内信模版列表 |
| 76 | 77 | */ |
| 77 | - List<NotifyTemplateDO> getNotifyTemplateList(); | |
| 78 | + List<NotifyTemplateDO> getNotifyTemplateListByStatus(Integer status); | |
| 78 | 79 | |
| 79 | 80 | /** |
| 80 | 81 | * 格式化站内信内容 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/notify/NotifyTemplateServiceImpl.java
| ... | ... | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.service.notify; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.ReUtil; |
| 4 | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 6 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 8 | 7 | import cn.iocoder.yudao.module.system.controller.admin.notify.vo.template.NotifyTemplatePageReqVO; |
| ... | ... | @@ -117,8 +116,8 @@ public class NotifyTemplateServiceImpl implements NotifyTemplateService { |
| 117 | 116 | } |
| 118 | 117 | |
| 119 | 118 | @Override |
| 120 | - public List<NotifyTemplateDO> getNotifyTemplateList() { | |
| 121 | - return notifyTemplateMapper.selectList(NotifyTemplateDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); | |
| 119 | + public List<NotifyTemplateDO> getNotifyTemplateListByStatus(Integer status) { | |
| 120 | + return notifyTemplateMapper.selectListByStatus(status); | |
| 122 | 121 | } |
| 123 | 122 | |
| 124 | 123 | @VisibleForTesting | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateService.java
| ... | ... | @@ -71,11 +71,12 @@ public interface SmsTemplateService { |
| 71 | 71 | PageResult<SmsTemplateDO> getSmsTemplatePage(SmsTemplatePageReqVO pageReqVO); |
| 72 | 72 | |
| 73 | 73 | /** |
| 74 | - * 获得启用状态的短信模板列表 | |
| 74 | + * 获得指定状态的短信模板列表 | |
| 75 | 75 | * |
| 76 | + * @param status 状态 | |
| 76 | 77 | * @return 短信模板列表 |
| 77 | 78 | */ |
| 78 | - List<SmsTemplateDO> getSmsTemplateList(); | |
| 79 | + List<SmsTemplateDO> getSmsTemplateListByStatus(Integer status); | |
| 79 | 80 | |
| 80 | 81 | /** |
| 81 | 82 | * 获得指定短信渠道下的短信模板数量 | ... | ... |
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java
| ... | ... | @@ -131,8 +131,8 @@ public class SmsTemplateServiceImpl implements SmsTemplateService { |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | 133 | @Override |
| 134 | - public List<SmsTemplateDO> getSmsTemplateList() { | |
| 135 | - return smsTemplateMapper.selectList(SmsTemplateDO::getStatus, CommonStatusEnum.ENABLE.getStatus()); | |
| 134 | + public List<SmsTemplateDO> getSmsTemplateListByStatus(Integer status) { | |
| 135 | + return smsTemplateMapper.selectListByStatus(status); | |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 138 | @Override | ... | ... |
yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateServiceImplTest.java
| ... | ... | @@ -157,6 +157,23 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { |
| 157 | 157 | } |
| 158 | 158 | |
| 159 | 159 | @Test |
| 160 | + public void testGetMailTemplateListByStatus() { | |
| 161 | + // mock 数据 | |
| 162 | + MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class, | |
| 163 | + o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); | |
| 164 | + mailTemplateMapper.insert(dbMailTemplate); | |
| 165 | + mailTemplateMapper.insert(cloneIgnoreId(dbMailTemplate, | |
| 166 | + o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | |
| 167 | + | |
| 168 | + // 调用 | |
| 169 | + List<MailTemplateDO> list = mailTemplateService.getMailTemplateListByStatus( | |
| 170 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 171 | + // 断言 | |
| 172 | + assertEquals(1, list.size()); | |
| 173 | + assertPojoEquals(dbMailTemplate, list.get(0)); | |
| 174 | + } | |
| 175 | + | |
| 176 | + @Test | |
| 160 | 177 | public void testGetMailTemplate() { |
| 161 | 178 | // mock 数据 |
| 162 | 179 | MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); | ... | ... |
yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/notify/NotifyTemplateServiceImplTest.java
| ... | ... | @@ -12,6 +12,7 @@ import org.springframework.context.annotation.Import; |
| 12 | 12 | |
| 13 | 13 | import jakarta.annotation.Resource; |
| 14 | 14 | import java.util.HashMap; |
| 15 | +import java.util.List; | |
| 15 | 16 | import java.util.Map; |
| 16 | 17 | |
| 17 | 18 | import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; |
| ... | ... | @@ -137,6 +138,23 @@ public class NotifyTemplateServiceImplTest extends BaseDbUnitTest { |
| 137 | 138 | } |
| 138 | 139 | |
| 139 | 140 | @Test |
| 141 | + public void testGetNotifyTemplateListByStatus() { | |
| 142 | + // mock 数据 | |
| 143 | + NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class, | |
| 144 | + o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); | |
| 145 | + notifyTemplateMapper.insert(dbNotifyTemplate); | |
| 146 | + notifyTemplateMapper.insert(cloneIgnoreId(dbNotifyTemplate, | |
| 147 | + o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | |
| 148 | + | |
| 149 | + // 调用 | |
| 150 | + List<NotifyTemplateDO> list = notifyTemplateService.getNotifyTemplateListByStatus( | |
| 151 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 152 | + // 断言 | |
| 153 | + assertEquals(1, list.size()); | |
| 154 | + assertPojoEquals(dbNotifyTemplate, list.get(0)); | |
| 155 | + } | |
| 156 | + | |
| 157 | + @Test | |
| 140 | 158 | public void testGetNotifyTemplate() { |
| 141 | 159 | // mock 数据 |
| 142 | 160 | NotifyTemplateDO dbNotifyTemplate = randomPojo(NotifyTemplateDO.class); | ... | ... |
yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImplTest.java
| ... | ... | @@ -245,6 +245,22 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest { |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | @Test |
| 248 | + public void testGetSmsTemplateListByStatus() { | |
| 249 | + // mock 数据 | |
| 250 | + SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO(o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); | |
| 251 | + smsTemplateMapper.insert(dbSmsTemplate); | |
| 252 | + smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, | |
| 253 | + o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | |
| 254 | + | |
| 255 | + // 调用 | |
| 256 | + List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateListByStatus( | |
| 257 | + CommonStatusEnum.ENABLE.getStatus()); | |
| 258 | + // 断言 | |
| 259 | + assertEquals(1, list.size()); | |
| 260 | + assertPojoEquals(dbSmsTemplate, list.get(0)); | |
| 261 | + } | |
| 262 | + | |
| 263 | + @Test | |
| 248 | 264 | public void testGetSmsTemplateCountByChannelId() { |
| 249 | 265 | // mock 数据 |
| 250 | 266 | SmsTemplateDO dbSmsTemplate = randomPojo(SmsTemplateDO.class, o -> o.setChannelId(1L)); | ... | ... |