Commit 75de6c14d8bd3bc323d4249430798d933d08603b
Merge branch '20220913' into 'master_dev'
fix(DEFECT-1017): 住户配置选择错误异常信息调整 See merge request yunteng/thingskit!230
Showing
7 changed files
with
53 additions
and
13 deletions
... | ... | @@ -22,6 +22,8 @@ import org.thingsboard.server.common.data.id.UserId; |
22 | 22 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; |
23 | 23 | import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; |
24 | 24 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
25 | +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; | |
26 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | |
25 | 27 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
26 | 28 | import org.thingsboard.server.common.data.yunteng.dto.MenuDTO; |
27 | 29 | import org.thingsboard.server.common.data.yunteng.dto.TenantDTO; |
... | ... | @@ -30,6 +32,7 @@ import org.thingsboard.server.common.data.yunteng.dto.request.TenantReqDTO; |
30 | 32 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; |
31 | 33 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
32 | 34 | import org.thingsboard.server.controller.BaseController; |
35 | +import org.thingsboard.server.dao.exception.DataValidationException; | |
33 | 36 | import org.thingsboard.server.dao.tenant.TenantService; |
34 | 37 | import org.thingsboard.server.dao.user.UserService; |
35 | 38 | import org.thingsboard.server.dao.yunteng.service.MenuService; |
... | ... | @@ -219,10 +222,17 @@ public class TkAdminController extends BaseController { |
219 | 222 | updateOrSaveTenant(tenantReqDTO, isCreate); |
220 | 223 | result = tkTenantService.updateOrCreateTenant(tenantReqDTO, isCreate); |
221 | 224 | } catch (Exception e) { |
222 | - if (isCreate) { | |
225 | + if (isCreate && result != null) { | |
223 | 226 | deleteTenant(tenantReqDTO.getTenantId()); |
224 | - throw handleException(e); | |
225 | 227 | } |
228 | + if(e instanceof DataValidationException){ | |
229 | + String errMsg = e.getMessage(); | |
230 | + if(errMsg.contains("isolated tenant profiles")){ | |
231 | + errMsg = ErrorMessage.NOT_ALLOED_ISOLATED_IN_MONOLITH.getMessage(); | |
232 | + } | |
233 | + throw new DataValidationException(errMsg); | |
234 | + } | |
235 | + throw handleException(e); | |
226 | 236 | } |
227 | 237 | return result; |
228 | 238 | } | ... | ... |
... | ... | @@ -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 | } | ... | ... |
... | ... | @@ -84,7 +84,7 @@ public interface FastIotConstants { |
84 | 84 | |
85 | 85 | /** 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) */ |
86 | 86 | public static final String[] JOB_WHITELIST_STR = { |
87 | - "org.thingsboard.server.dao.util.yunteng.task" | |
87 | + "org.thingsboard.server.dao.util.yunteng.task","org.thingsboard.server.utils.yunteng" | |
88 | 88 | }; |
89 | 89 | /** http请求 */ |
90 | 90 | public static final String HTTP = "http://"; | ... | ... |
... | ... | @@ -107,7 +107,10 @@ public enum ErrorMessage { |
107 | 107 | HIKVISION_GET_URL_ERROR(400083,"海康威视视API调用获取URL失败!!"), |
108 | 108 | HIKVISION_API_ERROR(400084,"海康威视视频预览API调用失败【%s】,错误码【%s】"), |
109 | 109 | RESET_PASSWORD_SUCCESS(400085,"重置成功,请使用默认密码登录"), |
110 | - HAVE_NO_PERMISSION(500002,"没有修改权限"); | |
110 | + HAVE_NO_PERMISSION(500002,"没有修改权限"), | |
111 | + MESSAGE_TEMPLATE_DELETED(400020,"消息模板不存在!"), | |
112 | + NOT_ALLOED_ISOLATED_IN_MONOLITH(500003,"【monolith】模式下,不能选择【isolated】类型的租户配置"), | |
113 | + MESSAGE_TEMPLATE_USING_CONFIG(500003,"删除消息配置前,需要禁用使用消息配置的消息模板%s。"); | |
111 | 114 | private final int code; |
112 | 115 | private String message; |
113 | 116 | ... | ... |
1 | 1 | package org.thingsboard.server.dao.yunteng.impl; |
2 | 2 | |
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
3 | 4 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
4 | 5 | import com.baomidou.mybatisplus.core.metadata.IPage; |
5 | -import java.util.List; | |
6 | -import java.util.Map; | |
7 | -import java.util.Set; | |
6 | + | |
7 | +import java.util.*; | |
8 | +import java.util.stream.Collectors; | |
9 | + | |
8 | 10 | import lombok.RequiredArgsConstructor; |
9 | 11 | import lombok.extern.slf4j.Slf4j; |
10 | 12 | import org.apache.commons.lang3.StringUtils; |
... | ... | @@ -15,12 +17,17 @@ import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
15 | 17 | import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; |
16 | 18 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
17 | 19 | import org.thingsboard.server.common.data.yunteng.dto.MessageConfigDTO; |
20 | +import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; | |
18 | 21 | import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; |
19 | 22 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
20 | 23 | import org.thingsboard.server.dao.yunteng.entities.TkMessageConfigEntity; |
24 | +import org.thingsboard.server.dao.yunteng.entities.TkMessageTemplateEntity; | |
21 | 25 | import org.thingsboard.server.dao.yunteng.mapper.MessageConfigMapper; |
26 | +import org.thingsboard.server.dao.yunteng.mapper.MessageTemplateMapper; | |
22 | 27 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
23 | 28 | import org.thingsboard.server.dao.yunteng.service.TkMessageConfigService; |
29 | +import org.thingsboard.server.dao.yunteng.service.TkMessageTemplateService; | |
30 | +import org.thingsboard.server.dao.yunteng.service.TkUserService; | |
24 | 31 | |
25 | 32 | @Service |
26 | 33 | @Slf4j |
... | ... | @@ -28,7 +35,7 @@ import org.thingsboard.server.dao.yunteng.service.TkMessageConfigService; |
28 | 35 | public class TkMessageConfigServiceImpl |
29 | 36 | extends AbstractBaseService<MessageConfigMapper, TkMessageConfigEntity> |
30 | 37 | implements TkMessageConfigService { |
31 | - | |
38 | + private final MessageTemplateMapper templateMapper; | |
32 | 39 | @Override |
33 | 40 | public TkPageData<MessageConfigDTO> page(String tenantId, Map<String, Object> queryMap) { |
34 | 41 | IPage<TkMessageConfigEntity> configIPage = |
... | ... | @@ -69,7 +76,18 @@ public class TkMessageConfigServiceImpl |
69 | 76 | |
70 | 77 | @Override |
71 | 78 | @Transactional |
72 | - public boolean deleteMessageConfig(Set<String> ids) { | |
79 | + public boolean deleteMessageConfig(Set<String> ids,String tenantId) { | |
80 | + LambdaQueryWrapper<TkMessageTemplateEntity> filter = new LambdaQueryWrapper<>(); | |
81 | + filter | |
82 | + .in(TkMessageTemplateEntity::getMessageConfigId, ids) | |
83 | + .eq(TkMessageTemplateEntity::getTenantId, tenantId) | |
84 | + .eq(TkMessageTemplateEntity::getStatus, StatusEnum.ENABLE.getIndex()); | |
85 | + List<TkMessageTemplateEntity> templates = templateMapper.selectList(filter); | |
86 | + if(templates.size()>0){ | |
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); | |
89 | + throw new TkDataValidationException(errMsg); | |
90 | + } | |
73 | 91 | return baseMapper.deleteBatchIds(ids) > 0; |
74 | 92 | } |
75 | 93 | ... | ... |
... | ... | @@ -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 | ... | ... |