Commit 4e48e81093d5fde05a4f042509a54dec886273fb

Authored by xp.Huang
2 parents cca20b4a 09c7933f

Merge branch '20220923' into 'master'

fix(DEFECT-762): 调整邮件推送频率

See merge request huang/thingsboard3.3.2!137
@@ -10,6 +10,8 @@ import org.thingsboard.server.common.data.yunteng.common.AddGroup; @@ -10,6 +10,8 @@ import org.thingsboard.server.common.data.yunteng.common.AddGroup;
10 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; 10 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
11 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; 11 import org.thingsboard.server.common.data.yunteng.common.UpdateGroup;
12 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; 12 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
  13 +import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
  14 +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
13 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; 15 import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
14 import org.thingsboard.server.common.data.yunteng.dto.MessageTemplateDTO; 16 import org.thingsboard.server.common.data.yunteng.dto.MessageTemplateDTO;
15 import org.thingsboard.server.common.data.yunteng.dto.request.EmailReqDTO; 17 import org.thingsboard.server.common.data.yunteng.dto.request.EmailReqDTO;
@@ -92,15 +94,19 @@ public class YtMessageTemplateController extends BaseController { @@ -92,15 +94,19 @@ public class YtMessageTemplateController extends BaseController {
92 public ResponseResult<String> sendSms( 94 public ResponseResult<String> sendSms(
93 @Validated({AddGroup.class}) @RequestBody SmsReqDTO smsReqDTO) { 95 @Validated({AddGroup.class}) @RequestBody SmsReqDTO smsReqDTO) {
94 boolean result = smsService.sendSms(smsReqDTO); 96 boolean result = smsService.sendSms(smsReqDTO);
95 - String message = result ? ResponseCodeEnum.SUCCESS.name() : ResponseCodeEnum.FAILED.name();  
96 - return ResponseResult.success(message); 97 + if(!result){
  98 + throw new YtDataValidationException(ErrorMessage.MESSAGE_SEND_FAILED.getMessage());
  99 + }
  100 + return ResponseResult.success(ResponseCodeEnum.SUCCESS.name() );
97 } 101 }
98 102
99 @PostMapping("/send_email") 103 @PostMapping("/send_email")
100 public ResponseResult<String> sendEmail( 104 public ResponseResult<String> sendEmail(
101 @Validated({AddGroup.class}) @RequestBody EmailReqDTO emailReqDTO) { 105 @Validated({AddGroup.class}) @RequestBody EmailReqDTO emailReqDTO) {
102 boolean result = mailService.sendEmail(emailReqDTO); 106 boolean result = mailService.sendEmail(emailReqDTO);
103 - String message = result ? ResponseCodeEnum.SUCCESS.name() : ResponseCodeEnum.FAILED.name();  
104 - return ResponseResult.success(message); 107 + if(!result){
  108 + throw new YtDataValidationException(ErrorMessage.MESSAGE_SEND_FAILED.getMessage());
  109 + }
  110 + return ResponseResult.success(ResponseCodeEnum.SUCCESS.name() );
105 } 111 }
106 } 112 }
@@ -340,6 +340,9 @@ public class RestAuthenticationProvider implements AuthenticationProvider { @@ -340,6 +340,9 @@ public class RestAuthenticationProvider implements AuthenticationProvider {
340 User user = new User(); 340 User user = new User();
341 String tbEmail = optionalUser.get().getUsername() + "@" + accountProperties.getEmailSuffix(); 341 String tbEmail = optionalUser.get().getUsername() + "@" + accountProperties.getEmailSuffix();
342 UserDetailsDTO ytDetailDTO = optionalUser.get(); 342 UserDetailsDTO ytDetailDTO = optionalUser.get();
  343 + if(ytDetailDTO.getAccountExpireTime() != null && ytDetailDTO.getAccountExpireTime().isBefore(LocalDateTime.now())){
  344 + throw new AccountExpiredException(ErrorMessage.ACCOUNT_HAS_EXPIRED.getMessage());
  345 + }
343 //如果是平台管理员 346 //如果是平台管理员
344 if(isPlatFormUser(ytDetailDTO)){ 347 if(isPlatFormUser(ytDetailDTO)){
345 user.setAuthority(Authority.PLATFORM_USER); 348 user.setAuthority(Authority.PLATFORM_USER);
@@ -17,7 +17,6 @@ public enum ErrorMessage { @@ -17,7 +17,6 @@ public enum ErrorMessage {
17 USERNAME_PASSWORD_INCORRECT(401001, "用户名或密码错误"), 17 USERNAME_PASSWORD_INCORRECT(401001, "用户名或密码错误"),
18 TOKEN_EXPIRED(401002, "token已过期,请重新登录"), 18 TOKEN_EXPIRED(401002, "token已过期,请重新登录"),
19 NONE_TENANT_ASSET(401003, "非当前租户资产"), 19 NONE_TENANT_ASSET(401003, "非当前租户资产"),
20 - AUTHENTICATION_FAILED_ACCOUNT_EXPIRED(401003, "账号已过期,请联系你的管理员"),  
21 BAD_PARAMETER(400000, "查询参数无效"), 20 BAD_PARAMETER(400000, "查询参数无效"),
22 INVALID_PARAMETER(400001, "无效参数"), 21 INVALID_PARAMETER(400001, "无效参数"),
23 TOO_MANY_REQUEST(429001, "请求过多"), 22 TOO_MANY_REQUEST(429001, "请求过多"),
@@ -81,6 +80,7 @@ public enum ErrorMessage { @@ -81,6 +80,7 @@ public enum ErrorMessage {
81 DATA_BOARD_IS_PRIVATE(400057,"该数据看板不是公有视图"), 80 DATA_BOARD_IS_PRIVATE(400057,"该数据看板不是公有视图"),
82 MESSAGE_SEND_TOO_FAST(400058,"1分钟内请求次数过多,请休息一下!"), 81 MESSAGE_SEND_TOO_FAST(400058,"1分钟内请求次数过多,请休息一下!"),
83 PASSWORD_INCORRECT(4010059, "密码错误!"), 82 PASSWORD_INCORRECT(4010059, "密码错误!"),
  83 + MESSAGE_SEND_FAILED(4010059, "消息发送失败!"),
84 HAVE_NO_PERMISSION(500002,"没有修改权限"); 84 HAVE_NO_PERMISSION(500002,"没有修改权限");
85 private final int code; 85 private final int code;
86 private String message; 86 private String message;
@@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor; @@ -8,6 +8,7 @@ import lombok.RequiredArgsConstructor;
8 import lombok.extern.slf4j.Slf4j; 8 import lombok.extern.slf4j.Slf4j;
9 import org.apache.commons.lang3.RandomStringUtils; 9 import org.apache.commons.lang3.RandomStringUtils;
10 import org.apache.commons.lang3.StringUtils; 10 import org.apache.commons.lang3.StringUtils;
  11 +import org.springframework.security.authentication.BadCredentialsException;
11 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
12 import org.springframework.transaction.annotation.Transactional; 13 import org.springframework.transaction.annotation.Transactional;
13 import org.thingsboard.common.util.JacksonUtil; 14 import org.thingsboard.common.util.JacksonUtil;
@@ -133,6 +134,9 @@ public class YtSmsServiceImpl implements YtSmsService { @@ -133,6 +134,9 @@ public class YtSmsServiceImpl implements YtSmsService {
133 if (users.isEmpty()) { 134 if (users.isEmpty()) {
134 throw new YtDataValidationException("电话号码未在系统注册,请联系你的管理员"); 135 throw new YtDataValidationException("电话号码未在系统注册,请联系你的管理员");
135 } 136 }
  137 + if(users.get(0).getAccountExpireTime() != null && users.get(0).getAccountExpireTime().isBefore(LocalDateTime.now())){
  138 + throw new YtDataValidationException(ErrorMessage.ACCOUNT_HAS_EXPIRED.getMessage());
  139 + }
136 // 获取是否有验证码存在,防止发送数量过多 140 // 获取是否有验证码存在,防止发送数量过多
137 String key = 141 String key =
138 purpose.name() 142 purpose.name()
@@ -327,6 +327,12 @@ class ReactState { @@ -327,6 +327,12 @@ class ReactState {
327 currentAlarm.setPropagate(false); 327 currentAlarm.setPropagate(false);
328 328
329 currentAlarm = ctx.getAlarmService().createOrUpdateAlarm(currentAlarm); 329 currentAlarm = ctx.getAlarmService().createOrUpdateAlarm(currentAlarm);
  330 + Alarm oldAlarm = currentAlarms.get(deviceId);
  331 + if(oldAlarm != null
  332 + && currentAlarm.getId().equals(oldAlarm.getId())
  333 + && currentAlarm.getSeverity().equals(oldAlarm.getSeverity())){
  334 + return;
  335 + }
330 ytDeviceService.freshAlarmStatus(entityId, 1); 336 ytDeviceService.freshAlarmStatus(entityId, 1);
331 currentAlarms.put(deviceId, currentAlarm); 337 currentAlarms.put(deviceId, currentAlarm);
332 alarmMsg(ctx, msg, currentAlarm, "Alarm Cleared"); 338 alarmMsg(ctx, msg, currentAlarm, "Alarm Cleared");