Commit 0adf42195ffd05f5cd93daf9b97a92d68c8c25cf
1 parent
14323d91
refactor(DEFECT-1009): 消息配置被使用时,不能删除
消息模板启用时,监测消息配置是否存在。
Showing
5 changed files
with
25 additions
and
11 deletions
... | ... | @@ -73,8 +73,8 @@ public class TkMessageConfigController extends BaseController { |
73 | 73 | @DeleteMapping |
74 | 74 | @PreAuthorize("@check.checkPermissions({},{'api:yt:message:delete'})") |
75 | 75 | public ResponseResult<String> deleteMessageConfig( |
76 | - @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) { | |
77 | - return messageConfigService.deleteMessageConfig(deleteDTO.getIds()) | |
76 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) throws ThingsboardException { | |
77 | + return messageConfigService.deleteMessageConfig(deleteDTO.getIds(),getCurrentUser().getCurrentTenantId()) | |
78 | 78 | ? ResponseResult.success(FastIotConstants.StateValue.DELETE_SUCCESS) |
79 | 79 | : ResponseResult.failed(FastIotConstants.StateValue.DELETE_FAILED); |
80 | 80 | } | ... | ... |
... | ... | @@ -108,8 +108,9 @@ public enum ErrorMessage { |
108 | 108 | HIKVISION_API_ERROR(400084,"海康威视视频预览API调用失败【%s】,错误码【%s】"), |
109 | 109 | RESET_PASSWORD_SUCCESS(400085,"重置成功,请使用默认密码登录"), |
110 | 110 | HAVE_NO_PERMISSION(500002,"没有修改权限"), |
111 | + MESSAGE_TEMPLATE_DELETED(400020,"消息模板不存在!"), | |
111 | 112 | NOT_ALLOED_ISOLATED_IN_MONOLITH(500003,"【monolith】模式下,不能选择【isolated】类型的租户配置"), |
112 | - MESSAGE_TEMPLATE_USING_CONFIG(500003,"消息模板【%s】正在使用消息配置。"); | |
113 | + MESSAGE_TEMPLATE_USING_CONFIG(500003,"删除消息配置前,需要禁用使用消息配置的消息模板%s。"); | |
113 | 114 | private final int code; |
114 | 115 | private String message; |
115 | 116 | ... | ... |
... | ... | @@ -3,9 +3,8 @@ package org.thingsboard.server.dao.yunteng.impl; |
3 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
4 | 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | 5 | import com.baomidou.mybatisplus.core.metadata.IPage; |
6 | -import java.util.List; | |
7 | -import java.util.Map; | |
8 | -import java.util.Set; | |
6 | + | |
7 | +import java.util.*; | |
9 | 8 | import java.util.stream.Collectors; |
10 | 9 | |
11 | 10 | import lombok.RequiredArgsConstructor; |
... | ... | @@ -18,6 +17,7 @@ import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
18 | 17 | import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; |
19 | 18 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
20 | 19 | import org.thingsboard.server.common.data.yunteng.dto.MessageConfigDTO; |
20 | +import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; | |
21 | 21 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; |
22 | 22 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
23 | 23 | import org.thingsboard.server.dao.yunteng.entities.TkMessageConfigEntity; |
... | ... | @@ -76,12 +76,16 @@ public class TkMessageConfigServiceImpl |
76 | 76 | |
77 | 77 | @Override |
78 | 78 | @Transactional |
79 | - public boolean deleteMessageConfig(Set<String> ids) { | |
79 | + public boolean deleteMessageConfig(Set<String> ids,String tenantId) { | |
80 | 80 | LambdaQueryWrapper<TkMessageTemplateEntity> filter = new LambdaQueryWrapper<>(); |
81 | - filter.in(TkMessageTemplateEntity::getMessageConfigId,ids); | |
81 | + filter | |
82 | + .in(TkMessageTemplateEntity::getMessageConfigId, ids) | |
83 | + .eq(TkMessageTemplateEntity::getTenantId, tenantId) | |
84 | + .eq(TkMessageTemplateEntity::getStatus, StatusEnum.ENABLE.getIndex()); | |
82 | 85 | List<TkMessageTemplateEntity> templates = templateMapper.selectList(filter); |
83 | 86 | if(templates.size()>0){ |
84 | - String errMsg = String.format(ErrorMessage.MESSAGE_TEMPLATE_USING_CONFIG.getMessage(),templates.stream().map(t->t.getTemplateName()).collect(Collectors.toList())); | |
87 | + List<String> templateNames =templates.stream().map(t->t.getTemplateName()).collect(Collectors.toList()); | |
88 | + String errMsg = String.format(ErrorMessage.MESSAGE_TEMPLATE_USING_CONFIG.getMessage(), templateNames); | |
85 | 89 | throw new TkDataValidationException(errMsg); |
86 | 90 | } |
87 | 91 | return baseMapper.deleteBatchIds(ids) > 0; | ... | ... |
... | ... | @@ -10,7 +10,9 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio |
10 | 10 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
11 | 11 | import org.thingsboard.server.common.data.yunteng.dto.MessageTemplateDTO; |
12 | 12 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
13 | +import org.thingsboard.server.dao.yunteng.entities.TkMessageConfigEntity; | |
13 | 14 | import org.thingsboard.server.dao.yunteng.entities.TkMessageTemplateEntity; |
15 | +import org.thingsboard.server.dao.yunteng.mapper.MessageConfigMapper; | |
14 | 16 | import org.thingsboard.server.dao.yunteng.mapper.MessageTemplateMapper; |
15 | 17 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
16 | 18 | import org.thingsboard.server.dao.yunteng.service.TkMessageTemplateService; |
... | ... | @@ -25,6 +27,7 @@ import java.util.Set; |
25 | 27 | public class TkMessageTemplateServiceImpl |
26 | 28 | extends AbstractBaseService<MessageTemplateMapper, TkMessageTemplateEntity> |
27 | 29 | implements TkMessageTemplateService { |
30 | + private final MessageConfigMapper configMapper; | |
28 | 31 | @Override |
29 | 32 | public TkPageData<MessageTemplateDTO> page(Map<String, Object> queryMap) { |
30 | 33 | IPage<TkMessageTemplateEntity> configIPage = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME,false); |
... | ... | @@ -52,7 +55,6 @@ public class TkMessageTemplateServiceImpl |
52 | 55 | @Override |
53 | 56 | @Transactional |
54 | 57 | public MessageTemplateDTO updateMessageTemplate(MessageTemplateDTO templateDTO) { |
55 | - | |
56 | 58 | //查询该租户下 是否已经启用相同消息类型、相同用途的模板 |
57 | 59 | if(null!=templateDTO.getStatus() && templateDTO.getStatus() == FastIotConstants.MagicNumber.ONE){ |
58 | 60 | MessageTemplateDTO queryTemplate = new MessageTemplateDTO(); |
... | ... | @@ -69,6 +71,13 @@ public class TkMessageTemplateServiceImpl |
69 | 71 | } |
70 | 72 | } |
71 | 73 | TkMessageTemplateEntity messageTemplate = baseMapper.selectById(templateDTO.getId()); |
74 | + if(messageTemplate == null){ | |
75 | + throw new TkDataValidationException(ErrorMessage.MESSAGE_TEMPLATE_DELETED.getMessage()); | |
76 | + } | |
77 | + TkMessageConfigEntity configEntity =configMapper.selectById(StringUtils.isNotBlank(templateDTO.getMessageConfigId())?templateDTO.getMessageConfigId():messageTemplate.getMessageConfigId()); | |
78 | + if(configEntity == null){ | |
79 | + throw new TkDataValidationException(ErrorMessage.MESSAGE_CONFIG_NOT_EXISTS.getMessage()); | |
80 | + } | |
72 | 81 | templateDTO.copyToEntity(messageTemplate); |
73 | 82 | baseMapper.updateById(messageTemplate); |
74 | 83 | messageTemplate.copyToDTO(templateDTO); | ... | ... |
... | ... | @@ -14,7 +14,7 @@ public interface TkMessageConfigService extends BaseService<TkMessageConfigEntit |
14 | 14 | |
15 | 15 | MessageConfigDTO saveMessageConfig(String tenantId,MessageConfigDTO configDTO); |
16 | 16 | |
17 | - boolean deleteMessageConfig(Set<String> ids); | |
17 | + boolean deleteMessageConfig(Set<String> ids,String tenantId); | |
18 | 18 | |
19 | 19 | MessageConfigDTO updateMessageConfig(String tenantId,MessageConfigDTO configDTO); |
20 | 20 | ... | ... |