Commit 5f2abdabbe8fa597238f7cf142f66ab298745c18

Authored by YunaiV
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&lt;MailTemplateDO&gt; {
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&lt;NotifyTemplateDO&gt; {
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&lt;SmsTemplateDO&gt; {
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));
... ...