Commit 7902dee3877b06684b31e3a0c691ac9b48813b1f

Authored by xp.Huang
2 parents 26cd5abf 6b3acb98

Merge branch '20220429' into 'master'

20220429

See merge request huang/thingsboard3.3.2!92
@@ -14,20 +14,23 @@ import org.thingsboard.server.common.data.id.UserId; @@ -14,20 +14,23 @@ import org.thingsboard.server.common.data.id.UserId;
14 import org.thingsboard.server.common.data.security.UserCredentials; 14 import org.thingsboard.server.common.data.security.UserCredentials;
15 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; 15 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
16 import org.thingsboard.server.common.data.yunteng.dto.UserDTO; 16 import org.thingsboard.server.common.data.yunteng.dto.UserDTO;
  17 +import org.thingsboard.server.common.data.yunteng.dto.UserDetailsDTO;
17 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO; 18 import org.thingsboard.server.common.data.yunteng.dto.YtThirdUserDTO;
18 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; 19 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
19 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum; 20 import org.thingsboard.server.common.data.yunteng.enums.ThirdPlatformEnum;
  21 +import org.thingsboard.server.common.data.yunteng.utils.JacksonUtil;
20 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 22 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
21 import org.thingsboard.server.controller.BaseController; 23 import org.thingsboard.server.controller.BaseController;
22 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity; 24 import org.thingsboard.server.dao.yunteng.entities.YtThirdUserEntity;
23 import org.thingsboard.server.dao.yunteng.service.YtThirdPlatformService; 25 import org.thingsboard.server.dao.yunteng.service.YtThirdPlatformService;
  26 +import org.thingsboard.server.dao.yunteng.service.YtUserService;
24 import org.thingsboard.server.service.security.auth.jwt.RefreshTokenRepository; 27 import org.thingsboard.server.service.security.auth.jwt.RefreshTokenRepository;
25 import org.thingsboard.server.service.security.auth.yunteng.YtLoginResponse; 28 import org.thingsboard.server.service.security.auth.yunteng.YtLoginResponse;
26 -import org.thingsboard.server.service.security.model.JwtTokenPair;  
27 import org.thingsboard.server.service.security.model.SecurityUser; 29 import org.thingsboard.server.service.security.model.SecurityUser;
28 import org.thingsboard.server.service.security.model.UserPrincipal; 30 import org.thingsboard.server.service.security.model.UserPrincipal;
29 import org.thingsboard.server.service.security.model.token.JwtTokenFactory; 31 import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
30 32
  33 +import java.util.List;
31 import java.util.UUID; 34 import java.util.UUID;
32 35
33 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*; 36 import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.*;
@@ -44,6 +47,7 @@ public class YtThirdPlatformController extends BaseController { @@ -44,6 +47,7 @@ public class YtThirdPlatformController extends BaseController {
44 private final JwtTokenFactory tokenFactory; 47 private final JwtTokenFactory tokenFactory;
45 private final RefreshTokenRepository refreshTokenRepository; 48 private final RefreshTokenRepository refreshTokenRepository;
46 private final YtThirdPlatformService thirdService; 49 private final YtThirdPlatformService thirdService;
  50 + private final YtUserService ytUserService;
47 51
48 @GetMapping(params = {PAGE_SIZE, PAGE}) 52 @GetMapping(params = {PAGE_SIZE, PAGE})
49 @ApiOperation("分页") 53 @ApiOperation("分页")
@@ -66,14 +70,14 @@ public class YtThirdPlatformController extends BaseController { @@ -66,14 +70,14 @@ public class YtThirdPlatformController extends BaseController {
66 public YtLoginResponse saveOrUpdateAlarmProfile( 70 public YtLoginResponse saveOrUpdateAlarmProfile(
67 @Validated @RequestBody YtThirdUserDTO dto) throws ThingsboardException { 71 @Validated @RequestBody YtThirdUserDTO dto) throws ThingsboardException {
68 UserDTO userDto = thirdService.bindUser(dto); 72 UserDTO userDto = thirdService.bindUser(dto);
69 - return buildJwtToken(userDto,dto.getThirdUserId()); 73 + return buildJwtToken(userDto, dto.getThirdUserId());
70 } 74 }
71 75
72 @DeleteMapping 76 @DeleteMapping
73 @ApiOperation("解绑") 77 @ApiOperation("解绑")
74 public boolean deleteAlarmProfile(@Validated(DeleteGroup.class) @RequestBody YtThirdUserDTO dto) 78 public boolean deleteAlarmProfile(@Validated(DeleteGroup.class) @RequestBody YtThirdUserDTO dto)
75 throws ThingsboardException { 79 throws ThingsboardException {
76 - return thirdService.unbindUser(getCurrentUser().getCurrentTenantId(), dto.getAppUserId(),dto.getThirdUserId()); 80 + return thirdService.unbindUser(getCurrentUser().getCurrentTenantId(), dto.getAppUserId(), dto.getThirdUserId());
77 } 81 }
78 82
79 @GetMapping("login/{loginCode}") 83 @GetMapping("login/{loginCode}")
@@ -82,19 +86,21 @@ public class YtThirdPlatformController extends BaseController { @@ -82,19 +86,21 @@ public class YtThirdPlatformController extends BaseController {
82 throws ThingsboardException { 86 throws ThingsboardException {
83 String thirdUserId = thirdService.thirdLogin(loginCode); 87 String thirdUserId = thirdService.thirdLogin(loginCode);
84 UserDTO userDto = thirdService.login(thirdUserId); 88 UserDTO userDto = thirdService.login(thirdUserId);
85 - if(userDto == null){ 89 + if (userDto == null) {
86 return new YtLoginResponse().setThirdUserId(thirdUserId); 90 return new YtLoginResponse().setThirdUserId(thirdUserId);
87 } 91 }
88 - return buildJwtToken(userDto,thirdUserId); 92 + return buildJwtToken(userDto, thirdUserId);
89 } 93 }
90 94
91 @NotNull 95 @NotNull
92 - private YtLoginResponse buildJwtToken(UserDTO userDto,String thirdUserId) { 96 + private YtLoginResponse buildJwtToken(UserDTO userDto, String thirdUserId) {
93 String accessToken = ""; 97 String accessToken = "";
94 String refreshToken = ""; 98 String refreshToken = "";
95 if (userDto != null && StringUtils.isNotEmpty(userDto.getTbUser())) { 99 if (userDto != null && StringUtils.isNotEmpty(userDto.getTbUser())) {
96 UserId userId = new UserId(UUID.fromString(userDto.getTbUser())); 100 UserId userId = new UserId(UUID.fromString(userDto.getTbUser()));
97 User user = userService.findUserById(null, userId); 101 User user = userService.findUserById(null, userId);
  102 + List<UserDetailsDTO> userDetailsDTOS = ytUserService.findUserDetailsByUsername(userDto.getUsername(),userDto.getTenantId());
  103 + user.setUserDetailsDTO(userDetailsDTOS.get(0));
98 UserCredentials credentials = userService.findUserCredentialsByUserId(user.getTenantId(), userId); 104 UserCredentials credentials = userService.findUserCredentialsByUserId(user.getTenantId(), userId);
99 String email = user.getEmail(); 105 String email = user.getEmail();
100 int emailIndex = email.indexOf("@"); 106 int emailIndex = email.indexOf("@");
1 package org.thingsboard.server.dao.yunteng.impl; 1 package org.thingsboard.server.dao.yunteng.impl;
2 2
3 import com.baomidou.mybatisplus.core.conditions.Wrapper; 3 import com.baomidou.mybatisplus.core.conditions.Wrapper;
4 -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
5 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
7 import lombok.RequiredArgsConstructor; 6 import lombok.RequiredArgsConstructor;
8 import lombok.extern.slf4j.Slf4j; 7 import lombok.extern.slf4j.Slf4j;
9 -import org.jetbrains.annotations.Nullable;  
10 import org.springframework.stereotype.Service; 8 import org.springframework.stereotype.Service;
11 import org.springframework.transaction.annotation.Transactional; 9 import org.springframework.transaction.annotation.Transactional;
12 import org.thingsboard.server.common.data.StringUtils; 10 import org.thingsboard.server.common.data.StringUtils;
13 -import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;  
14 -import org.thingsboard.server.common.data.yunteng.core.exception.NoneTenantAssetException;  
15 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException; 11 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
16 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 12 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
17 -import org.thingsboard.server.common.data.yunteng.dto.*;  
18 -import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;  
19 -import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils; 13 +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
  14 +import org.thingsboard.server.common.data.yunteng.dto.YtVideoDTO;
20 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData; 15 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
21 -import org.thingsboard.server.dao.yunteng.entities.AlarmProfile;  
22 import org.thingsboard.server.dao.yunteng.entities.YtVideoEntity; 16 import org.thingsboard.server.dao.yunteng.entities.YtVideoEntity;
23 -import org.thingsboard.server.dao.yunteng.mapper.AlarmProfileMapper;  
24 -import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper;  
25 import org.thingsboard.server.dao.yunteng.mapper.YtVideoMapper; 17 import org.thingsboard.server.dao.yunteng.mapper.YtVideoMapper;
26 -import org.thingsboard.server.dao.yunteng.service.*; 18 +import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
  19 +import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService;
  20 +import org.thingsboard.server.dao.yunteng.service.YtVideoService;
27 21
28 -import java.util.HashSet;  
29 import java.util.List; 22 import java.util.List;
30 -import java.util.Map;  
31 -import java.util.Set;  
32 -import java.util.stream.Collectors;  
33 23
34 @Slf4j 24 @Slf4j
35 @Service 25 @Service
36 @RequiredArgsConstructor 26 @RequiredArgsConstructor
37 public class YtVideoServiceImpl extends AbstractBaseService<YtVideoMapper, YtVideoEntity> 27 public class YtVideoServiceImpl extends AbstractBaseService<YtVideoMapper, YtVideoEntity>
38 - implements YtVideoService { 28 + implements YtVideoService {
39 29
40 - private final UserOrganizationMappingService userOrganizationMappingService; 30 + private final UserOrganizationMappingService userOrganizationMappingService;
41 31
42 - @Override  
43 - public YtPageData<YtVideoDTO> pageDatas(IPage<YtVideoEntity> pageInfrom,  
44 - boolean isPtTenantAdmin, String tenantId, String currentUserId, String organizationId, String name, Boolean status) { 32 + @Override
  33 + public YtPageData<YtVideoDTO> pageDatas(IPage<YtVideoEntity> pageInfrom,
  34 + boolean isPtTenantAdmin, String tenantId, String currentUserId, String organizationId, String name, Boolean status) {
45 35
46 - List<String> organizationIds = userOrganizationMappingService.getEnableOrganizationIds(isPtTenantAdmin, tenantId, currentUserId,organizationId);  
47 - Wrapper pageFilter = new QueryWrapper<YtVideoEntity>()  
48 - .lambda()  
49 - .in(organizationIds!=null&& !organizationIds.isEmpty(),YtVideoEntity::getOrganizationId,organizationIds)  
50 - .eq(status!=null,YtVideoEntity::getStatus,status)  
51 - .like(StringUtils.isNotEmpty(name),YtVideoEntity::getName,name);  
52 - IPage<YtVideoDTO> page =  
53 - baseMapper.getVideoPage(pageInfrom, tenantId,name,status,organizationIds);  
54 - return getPageData(page, YtVideoDTO.class);  
55 - } 36 + List<String> organizationIds = userOrganizationMappingService.getEnableOrganizationIds(isPtTenantAdmin, tenantId, currentUserId, organizationId);
  37 + Wrapper pageFilter = new QueryWrapper<YtVideoEntity>()
  38 + .lambda()
  39 + .in(organizationIds != null && !organizationIds.isEmpty(), YtVideoEntity::getOrganizationId, organizationIds)
  40 + .eq(status != null, YtVideoEntity::getStatus, status)
  41 + .like(StringUtils.isNotEmpty(name), YtVideoEntity::getName, name);
  42 + if (organizationIds == null || organizationIds.isEmpty()) {
  43 + organizationIds = null;
  44 + }
  45 + IPage<YtVideoDTO> page =
  46 + baseMapper.getVideoPage(pageInfrom, tenantId, name, status, organizationIds);
  47 + return getPageData(page, YtVideoDTO.class);
  48 + }
56 49
57 50
58 - @Override  
59 - public YtVideoDTO detail(String tenantId, String entityId) {  
60 - Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()  
61 - .eq(YtVideoEntity::getTenantId,tenantId)  
62 - .eq(YtVideoEntity::getId,entityId);  
63 - YtVideoEntity self = baseMapper.selectOne(filter);  
64 - return self.getDTO(YtVideoDTO.class);  
65 - } 51 + @Override
  52 + public YtVideoDTO detail(String tenantId, String entityId) {
  53 + Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()
  54 + .eq(YtVideoEntity::getTenantId, tenantId)
  55 + .eq(YtVideoEntity::getId, entityId);
  56 + YtVideoEntity self = baseMapper.selectOne(filter);
  57 + return self.getDTO(YtVideoDTO.class);
  58 + }
66 59
67 60
68 - @Override  
69 - @Transactional(rollbackFor=Exception.class)  
70 - public YtVideoDTO saveOrUpdate(YtVideoDTO videoDTO) {  
71 - if (StringUtils.isNotEmpty(videoDTO.getId())) {  
72 - Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()  
73 - .eq(YtVideoEntity::getTenantId,videoDTO.getTenantId())  
74 - .eq(YtVideoEntity::getId,videoDTO.getId());  
75 - YtVideoEntity oldVideo = baseMapper.selectOne(filter);  
76 - if (null == oldVideo) {  
77 - throw new YtDataValidationException(String.format(ErrorMessage.NOT_EXITED_OR_PERMISSION.getMessage(),videoDTO.getId()));  
78 - }  
79 - baseMapper.updateById(videoDTO.getEntity(YtVideoEntity.class));  
80 - } else {  
81 - baseMapper.insert(videoDTO.getEntity(YtVideoEntity.class)); 61 + @Override
  62 + @Transactional(rollbackFor = Exception.class)
  63 + public YtVideoDTO saveOrUpdate(YtVideoDTO videoDTO) {
  64 + if (StringUtils.isNotEmpty(videoDTO.getId())) {
  65 + Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()
  66 + .eq(YtVideoEntity::getTenantId, videoDTO.getTenantId())
  67 + .eq(YtVideoEntity::getId, videoDTO.getId());
  68 + YtVideoEntity oldVideo = baseMapper.selectOne(filter);
  69 + if (null == oldVideo) {
  70 + throw new YtDataValidationException(String.format(ErrorMessage.NOT_EXITED_OR_PERMISSION.getMessage(), videoDTO.getId()));
  71 + }
  72 + baseMapper.updateById(videoDTO.getEntity(YtVideoEntity.class));
  73 + } else {
  74 + baseMapper.insert(videoDTO.getEntity(YtVideoEntity.class));
  75 + }
  76 + return videoDTO;
82 } 77 }
83 - return videoDTO;  
84 - }  
85 78
86 79
87 -  
88 - @Override  
89 - @Transactional(rollbackFor=Exception.class)  
90 - public boolean deleteDataByIds(DeleteDTO deleteDTO) {  
91 - Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()  
92 - .eq(YtVideoEntity::getTenantId,deleteDTO.getTenantId())  
93 - .in(YtVideoEntity::getId,deleteDTO.getIds());  
94 - return baseMapper.delete(filter) > 0;  
95 - } 80 + @Override
  81 + @Transactional(rollbackFor = Exception.class)
  82 + public boolean deleteDataByIds(DeleteDTO deleteDTO) {
  83 + Wrapper filter = new QueryWrapper<YtVideoEntity>().lambda()
  84 + .eq(YtVideoEntity::getTenantId, deleteDTO.getTenantId())
  85 + .in(YtVideoEntity::getId, deleteDTO.getIds());
  86 + return baseMapper.delete(filter) > 0;
  87 + }
96 88
97 } 89 }
@@ -71,7 +71,13 @@ @@ -71,7 +71,13 @@
71 AND base.request LIKE concat('%',#{oneway}::TEXT,'%') 71 AND base.request LIKE concat('%',#{oneway}::TEXT,'%')
72 </if> 72 </if>
73 <if test="status !=null"> 73 <if test="status !=null">
74 - AND base.status = #{status} 74 + AND base.status
  75 + <if test="status.toString() == 'SUCCESSFUL'">
  76 + = #{status}
  77 + </if>
  78 + <if test="status.toString() != 'SUCCESSFUL'">
  79 + != 'SUCCESSFUL'
  80 + </if>
75 </if> 81 </if>
76 <if test="organization !=null"> 82 <if test="organization !=null">
77 AND dev.organization_id IN 83 AND dev.organization_id IN