Commit 4af840a21b0c340fe5ddde536686ba42b089fbc6
1 parent
e5be8978
fix: [DEFECT-905] sms config error throw exception
Showing
2 changed files
with
59 additions
and
44 deletions
... | ... | @@ -85,6 +85,7 @@ public enum ErrorMessage { |
85 | 85 | PROJECT_USED_SCRIPT(400061,"产品【%s】正在使用待删除的解析脚本"), |
86 | 86 | RULE_CHAIN_NOT_ENABLE(400062,"规则链不是有效的!"), |
87 | 87 | DUPLICATE_IDENTIFIERS_EXIST(400063,"存在重复的功能标识符。"), |
88 | + SMS_CONFIG_ERROR(400064,"短信配置错误。"), | |
88 | 89 | HAVE_NO_PERMISSION(500002,"没有修改权限"); |
89 | 90 | private final int code; |
90 | 91 | private String message; | ... | ... |
1 | 1 | package org.thingsboard.server.dao.yunteng.impl; |
2 | 2 | |
3 | - | |
4 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | 4 | import com.fasterxml.jackson.databind.JsonNode; |
6 | 5 | import com.fasterxml.jackson.databind.node.ObjectNode; |
... | ... | @@ -19,10 +18,7 @@ import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidatio |
19 | 18 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
20 | 19 | import org.thingsboard.server.common.data.yunteng.dto.request.CodeTTL; |
21 | 20 | import org.thingsboard.server.common.data.yunteng.dto.request.SmsReqDTO; |
22 | -import org.thingsboard.server.common.data.yunteng.enums.AssetStatusEnum; | |
23 | -import org.thingsboard.server.common.data.yunteng.enums.MessageTypeEnum; | |
24 | -import org.thingsboard.server.common.data.yunteng.enums.MsgTemplatePurposeEnum; | |
25 | -import org.thingsboard.server.common.data.yunteng.enums.ResponseCodeEnum; | |
21 | +import org.thingsboard.server.common.data.yunteng.enums.*; | |
26 | 22 | import org.thingsboard.server.dao.yunteng.entities.TkMessageConfigEntity; |
27 | 23 | import org.thingsboard.server.dao.yunteng.entities.TkMessageTemplateEntity; |
28 | 24 | import org.thingsboard.server.dao.yunteng.entities.TkSmsLogEntity; |
... | ... | @@ -66,44 +62,60 @@ public class TkSmsServiceImpl implements TkSmsService { |
66 | 62 | if (StringUtils.isEmpty(phoneNumbers) || StringUtils.isEmpty(templateId)) { |
67 | 63 | throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); |
68 | 64 | } |
69 | - /**消息模板是否可用*/ | |
70 | - QueryWrapper<TkMessageTemplateEntity> messageTemplateQueryWrapper = new QueryWrapper<TkMessageTemplateEntity>(); | |
71 | - messageTemplateQueryWrapper.lambda() | |
72 | - .eq(TkMessageTemplateEntity::getId, templateId) | |
73 | - .eq(TkMessageTemplateEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
74 | - TkMessageTemplateEntity messageTemplate = messageTemplateMapper.selectOne(messageTemplateQueryWrapper); | |
65 | + /** 消息模板是否可用 */ | |
66 | + QueryWrapper<TkMessageTemplateEntity> messageTemplateQueryWrapper = | |
67 | + new QueryWrapper<TkMessageTemplateEntity>(); | |
68 | + messageTemplateQueryWrapper | |
69 | + .lambda() | |
70 | + .eq(TkMessageTemplateEntity::getId, templateId) | |
71 | + .eq(TkMessageTemplateEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
72 | + TkMessageTemplateEntity messageTemplate = | |
73 | + messageTemplateMapper.selectOne(messageTemplateQueryWrapper); | |
75 | 74 | if (null == messageTemplate) { |
76 | 75 | throw new YtDataValidationException(ErrorMessage.MESSAGE_TEMPLATE_NOT_EXISTS.getMessage()); |
77 | 76 | } |
78 | 77 | |
79 | - /**消息配置是否可用*/ | |
78 | + /** 消息配置是否可用 */ | |
80 | 79 | QueryWrapper<TkMessageConfigEntity> configQueryWrapper = new QueryWrapper<>(); |
81 | - configQueryWrapper.lambda() | |
82 | - .eq(TkMessageConfigEntity::getId, messageTemplate.getMessageConfigId()) | |
83 | - .eq(TkMessageConfigEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
84 | - TkMessageConfigEntity messageConfig = | |
85 | - messageConfigMapper.selectOne(configQueryWrapper); | |
80 | + configQueryWrapper | |
81 | + .lambda() | |
82 | + .eq(TkMessageConfigEntity::getId, messageTemplate.getMessageConfigId()) | |
83 | + .eq(TkMessageConfigEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
84 | + TkMessageConfigEntity messageConfig = messageConfigMapper.selectOne(configQueryWrapper); | |
86 | 85 | if (null == messageConfig) { |
87 | 86 | throw new YtDataValidationException(ErrorMessage.MESSAGE_CONFIG_NOT_EXISTS.getMessage()); |
88 | 87 | } |
89 | 88 | |
90 | 89 | JsonNode configJsonNode = messageConfig.getConfig(); |
91 | 90 | ObjectNode configObjectNode = (ObjectNode) configJsonNode; |
92 | - configObjectNode.put("type", messageConfig.getPlatformType()); | |
91 | + String platForm = messageConfig.getPlatformType(); | |
92 | + configObjectNode.put("type", platForm); | |
93 | + boolean isMatch = true; | |
94 | + if (platForm.equals(SmsProviderTypeEnum.TENCENT_CLOUD.name()) | |
95 | + && (null == configJsonNode.get("appId") || null == configJsonNode.get("appKey"))) { | |
96 | + isMatch = false; | |
97 | + } else if (platForm.equals(SmsProviderTypeEnum.ALI_CLOUD.name()) | |
98 | + && (null == configJsonNode.get("accessKeyId") | |
99 | + || null == configJsonNode.get("accessKeySecret"))) { | |
100 | + isMatch = false; | |
101 | + } | |
102 | + if (!isMatch) { | |
103 | + throw new YtDataValidationException(ErrorMessage.SMS_CONFIG_ERROR.getMessage()); | |
104 | + } | |
93 | 105 | SmsProviderConfiguration smsProviderConfiguration = |
94 | - JacksonUtil.convertValue(configObjectNode, SmsProviderConfiguration.class); | |
106 | + JacksonUtil.convertValue(configObjectNode, SmsProviderConfiguration.class); | |
95 | 107 | if (null != smsProviderConfiguration) { |
96 | 108 | SmsSender smsSender = ytDefaultSmsSenderFactory.createSmsSender(smsProviderConfiguration); |
97 | 109 | String result = |
98 | - smsSender.sendSms( | |
99 | - phoneNumbers, | |
100 | - messageTemplate.getTemplateCode(), | |
101 | - templateParam, | |
102 | - messageTemplate.getSignName()); | |
110 | + smsSender.sendSms( | |
111 | + phoneNumbers, | |
112 | + messageTemplate.getTemplateCode(), | |
113 | + templateParam, | |
114 | + messageTemplate.getSignName()); | |
103 | 115 | // 记录短信日志 |
104 | 116 | String status = ResponseCodeEnum.SUCCESS.name(); |
105 | - String remark = smsReqDTO.getRemark()==null?"":smsReqDTO.getRemark(); | |
106 | - if(!ResponseCodeEnum.SUCCESS.name().equals(result)){ | |
117 | + String remark = smsReqDTO.getRemark() == null ? "" : smsReqDTO.getRemark(); | |
118 | + if (!ResponseCodeEnum.SUCCESS.name().equals(result)) { | |
107 | 119 | status = ResponseCodeEnum.FAILED.name(); |
108 | 120 | remark += result; |
109 | 121 | } |
... | ... | @@ -123,18 +135,21 @@ public class TkSmsServiceImpl implements TkSmsService { |
123 | 135 | return false; |
124 | 136 | } |
125 | 137 | |
126 | - | |
127 | 138 | @Override |
128 | 139 | @Transactional |
129 | - public boolean sendSmsCode(String phoneNumber,MsgTemplatePurposeEnum purpose) { | |
140 | + public boolean sendSmsCode(String phoneNumber, MsgTemplatePurposeEnum purpose) { | |
130 | 141 | // 检查手机号码是否存在系统,以免乱发消息 |
131 | - List<SysUserEntity> users = userMapper | |
132 | - .selectList(new QueryWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getPhoneNumber, phoneNumber)); | |
142 | + List<SysUserEntity> users = | |
143 | + userMapper.selectList( | |
144 | + new QueryWrapper<SysUserEntity>() | |
145 | + .lambda() | |
146 | + .eq(SysUserEntity::getPhoneNumber, phoneNumber)); | |
133 | 147 | if (users.isEmpty()) { |
134 | 148 | throw new YtDataValidationException("电话号码未在系统注册,请联系你的管理员"); |
135 | 149 | } |
136 | - if(users.get(0).getAccountExpireTime() != null && users.get(0).getAccountExpireTime().isBefore(LocalDateTime.now())){ | |
137 | - throw new YtDataValidationException(ErrorMessage.ACCOUNT_HAS_EXPIRED.getMessage()); | |
150 | + if (users.get(0).getAccountExpireTime() != null | |
151 | + && users.get(0).getAccountExpireTime().isBefore(LocalDateTime.now())) { | |
152 | + throw new YtDataValidationException(ErrorMessage.ACCOUNT_HAS_EXPIRED.getMessage()); | |
138 | 153 | } |
139 | 154 | // 获取是否有验证码存在,防止发送数量过多 |
140 | 155 | String key = |
... | ... | @@ -157,28 +172,27 @@ public class TkSmsServiceImpl implements TkSmsService { |
157 | 172 | throw new YtDataValidationException(ErrorMessage.MESSAGE_SEND_TOO_FAST.getMessage()); |
158 | 173 | } |
159 | 174 | |
160 | - /**消息模板是否可用*/ | |
175 | + /** 消息模板是否可用 */ | |
161 | 176 | List<TkMessageTemplateEntity> messageTemplates = |
162 | 177 | messageTemplateMapper.selectList( |
163 | 178 | new QueryWrapper<TkMessageTemplateEntity>() |
164 | 179 | .lambda() |
165 | - .eq(TkMessageTemplateEntity::getTenantId, users.get(0).getTenantId()) | |
166 | - .eq(TkMessageTemplateEntity::getStatus, 1) | |
167 | - .eq(TkMessageTemplateEntity::getTemplatePurpose, purpose.name()) | |
168 | - .eq(TkMessageTemplateEntity::getMessageType, MessageTypeEnum.PHONE_MESSAGE.name())); | |
180 | + .eq(TkMessageTemplateEntity::getTenantId, users.get(0).getTenantId()) | |
181 | + .eq(TkMessageTemplateEntity::getStatus, 1) | |
182 | + .eq(TkMessageTemplateEntity::getTemplatePurpose, purpose.name()) | |
183 | + .eq(TkMessageTemplateEntity::getMessageType, MessageTypeEnum.PHONE_MESSAGE.name())); | |
169 | 184 | if (messageTemplates.isEmpty()) { |
170 | 185 | throw new YtDataValidationException(ErrorMessage.MESSAGE_TEMPLATE_NOT_EXISTS.getMessage()); |
171 | 186 | } |
172 | 187 | |
173 | - /**消息配置是否可用*/ | |
174 | - | |
188 | + /** 消息配置是否可用 */ | |
175 | 189 | TkMessageTemplateEntity messageTemplate = messageTemplates.get(0); |
176 | 190 | QueryWrapper<TkMessageConfigEntity> configQueryWrapper = new QueryWrapper<>(); |
177 | - configQueryWrapper.lambda() | |
178 | - .eq(TkMessageConfigEntity::getId, messageTemplate.getMessageConfigId()) | |
179 | - .eq(TkMessageConfigEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
180 | - TkMessageConfigEntity messageConfig = | |
181 | - messageConfigMapper.selectOne(configQueryWrapper); | |
191 | + configQueryWrapper | |
192 | + .lambda() | |
193 | + .eq(TkMessageConfigEntity::getId, messageTemplate.getMessageConfigId()) | |
194 | + .eq(TkMessageConfigEntity::getStatus, AssetStatusEnum.ENABLE.ordinal()); | |
195 | + TkMessageConfigEntity messageConfig = messageConfigMapper.selectOne(configQueryWrapper); | |
182 | 196 | if (null == messageConfig) { |
183 | 197 | throw new YtDataValidationException(ErrorMessage.MESSAGE_CONFIG_NOT_EXISTS.getMessage()); |
184 | 198 | } | ... | ... |