Commit 94d67e4b15817591445c021d2b5c9b443667034a

Authored by 云中非
2 parents 06517bbb d1b6e5dc

Merge branch 'master' into ljl0223

@@ -241,7 +241,7 @@ public class YtUserController extends BaseController { @@ -241,7 +241,7 @@ public class YtUserController extends BaseController {
241 @GetMapping("/findUserByPhoneNumber/{phoneNumber}") 241 @GetMapping("/findUserByPhoneNumber/{phoneNumber}")
242 public ResponseResult<UserDTO> findUserByPhoneNumber(@PathVariable String phoneNumber) throws ThingsboardException { 242 public ResponseResult<UserDTO> findUserByPhoneNumber(@PathVariable String phoneNumber) throws ThingsboardException {
243 return ResponseResult.success( 243 return ResponseResult.success(
244 - userService.findUserByPhoneNumber(phoneNumber,getCurrentUser().getCurrentTenantId())); 244 + userService.findUserByPhoneNumber(phoneNumber));
245 } 245 }
246 @PostMapping("/relation") 246 @PostMapping("/relation")
247 public String[] getUserRoleOrGroup( 247 public String[] getUserRoleOrGroup(
@@ -41,6 +41,7 @@ public enum ErrorMessage { @@ -41,6 +41,7 @@ public enum ErrorMessage {
41 DEVICE_RELATION_IS_ABSENT(400022,"设备关联关系已不存在"), 41 DEVICE_RELATION_IS_ABSENT(400022,"设备关联关系已不存在"),
42 DATA_IS_DELETED(400023,"数据已经删除"), 42 DATA_IS_DELETED(400023,"数据已经删除"),
43 CONVERT_JS_IS_ALONE(400024,"转换脚本只能启用一个"), 43 CONVERT_JS_IS_ALONE(400024,"转换脚本只能启用一个"),
  44 + PHONE_OR_EMAIL_HAS_REGISTER(400025,"手机或邮箱已被使用"),
44 HAVE_NO_PERMISSION(500002,"没有修改权限"); 45 HAVE_NO_PERMISSION(500002,"没有修改权限");
45 private final int code; 46 private final int code;
46 private String message; 47 private String message;
@@ -118,7 +118,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -118,7 +118,8 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
118 userRoleMapper.insert(userRole); 118 userRoleMapper.insert(userRole);
119 } 119 }
120 // 绑定用户和组织的关系 120 // 绑定用户和组织的关系
121 - organizationService.bindUserToOrganization(tenantId, user.getId(), userDTO.getOrganizationIds()); 121 + organizationService.bindUserToOrganization(
  122 + tenantId, user.getId(), userDTO.getOrganizationIds());
122 user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); 123 user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN);
123 return userDTO; 124 return userDTO;
124 } 125 }
@@ -148,6 +149,33 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -148,6 +149,33 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
148 && StringUtils.isAllBlank(userDTO.getPhoneNumber())) { 149 && StringUtils.isAllBlank(userDTO.getPhoneNumber())) {
149 throw new YtDataValidationException(ErrorMessage.PHONE_NUMBER_OR_EMAIL_REQUIRED.getMessage()); 150 throw new YtDataValidationException(ErrorMessage.PHONE_NUMBER_OR_EMAIL_REQUIRED.getMessage());
150 } 151 }
  152 + boolean needCheck = false;
  153 + if (null != userDTO.getId()) {
  154 + User user = baseMapper.selectById(userDTO.getId());
  155 + if (!user.getPhoneNumber().equals(userDTO.getPhoneNumber())
  156 + || !user.getEmail().equals(userDTO.getEmail())) {
  157 + needCheck = true;
  158 + }
  159 + }
  160 + if (needCheck || null == userDTO.getId()) {
  161 + LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
  162 + if (null == userDTO.getId()) {
  163 + queryWrapper.eq(User::getPhoneNumber, userDTO.getPhoneNumber());
  164 + queryWrapper.or().eq(User::getEmail, userDTO.getEmail());
  165 + }
  166 + if (needCheck) {
  167 + queryWrapper.ne(User::getId, userDTO.getId());
  168 + queryWrapper.and(
  169 + (userQueryWrapper -> {
  170 + userQueryWrapper.eq(User::getPhoneNumber, userDTO.getPhoneNumber());
  171 + userQueryWrapper.or().eq(User::getEmail, userDTO.getEmail());
  172 + }));
  173 + }
  174 + List<User> existPhoneOrEmail = baseMapper.selectList(queryWrapper);
  175 + if (null != existPhoneOrEmail && existPhoneOrEmail.size() >0) {
  176 + throw new YtDataValidationException(ErrorMessage.PHONE_OR_EMAIL_HAS_REGISTER.getMessage());
  177 + }
  178 + }
151 } 179 }
152 180
153 @Override 181 @Override
@@ -245,14 +273,14 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -245,14 +273,14 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
245 user.setEmail(userDTO.getEmail()); 273 user.setEmail(userDTO.getEmail());
246 user.setAccountExpireTime(userDTO.getAccountExpireTime()); 274 user.setAccountExpireTime(userDTO.getAccountExpireTime());
247 user.setRemark(userDTO.getRemark()); 275 user.setRemark(userDTO.getRemark());
248 - if (userDTO.getPassword() !=null && !userDTO.getPassword().equals("******")) { 276 + if (userDTO.getPassword() != null && !userDTO.getPassword().equals("******")) {
249 user.setPassword(passwordEncoder.encode(userDTO.getPassword())); 277 user.setPassword(passwordEncoder.encode(userDTO.getPassword()));
250 } 278 }
251 baseMapper.updateById(user); 279 baseMapper.updateById(user);
252 - if(null != userDTO.getRoleIds()){ 280 + if (null != userDTO.getRoleIds()) {
253 deleteAndAddUserRole(user.getId(), Arrays.asList(userDTO.getRoleIds())); 281 deleteAndAddUserRole(user.getId(), Arrays.asList(userDTO.getRoleIds()));
254 userOrganizationMappingService.addOrUpdateUserOrganizationMapping( 282 userOrganizationMappingService.addOrUpdateUserOrganizationMapping(
255 - user.getId(), Arrays.asList(userDTO.getOrganizationIds()), true); 283 + user.getId(), Arrays.asList(userDTO.getOrganizationIds()), true);
256 } 284 }
257 user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN); 285 user.copyToDTO(userDTO, PASSWORD, ACTIVATE_TOKEN);
258 return userDTO; 286 return userDTO;
@@ -260,33 +288,32 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -260,33 +288,32 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
260 288
261 @Override 289 @Override
262 public YtPageData<UserDTO> page( 290 public YtPageData<UserDTO> page(
263 - Map<String, Object> queryMap,  
264 - boolean isPtSysadmin,  
265 - boolean isTenantAdmin) { 291 + Map<String, Object> queryMap, boolean isPtSysadmin, boolean isTenantAdmin) {
266 String tenantId = (String) queryMap.get("tenantId"); 292 String tenantId = (String) queryMap.get("tenantId");
267 IPage<UserDTO> userPage = null; 293 IPage<UserDTO> userPage = null;
268 IPage<User> userIPage = getPage(queryMap, "create_time", false); 294 IPage<User> userIPage = getPage(queryMap, "create_time", false);
269 - String organizationId = queryMap.get("organizationId") != null ? (String) queryMap.get("organizationId") : null; 295 + String organizationId =
  296 + queryMap.get("organizationId") != null ? (String) queryMap.get("organizationId") : null;
270 List<String> userIds = null; 297 List<String> userIds = null;
271 - if(null != organizationId){  
272 - userIds = userOrganizationMappingService.getUserIdByOrganizationIds(tenantId,organizationId);  
273 - queryMap.put("userIds",userIds); 298 + if (null != organizationId) {
  299 + userIds = userOrganizationMappingService.getUserIdByOrganizationIds(tenantId, organizationId);
  300 + queryMap.put("userIds", userIds);
274 } 301 }
275 if (isPtSysadmin) { 302 if (isPtSysadmin) {
276 String roleType = (String) queryMap.get("roleType"); 303 String roleType = (String) queryMap.get("roleType");
277 if (!StringUtils.isEmpty(roleType)) { 304 if (!StringUtils.isEmpty(roleType)) {
278 userPage = baseMapper.getTenantAdminPage(userIPage, tenantId); 305 userPage = baseMapper.getTenantAdminPage(userIPage, tenantId);
279 } else { 306 } else {
280 - if(null != organizationId && (userIds.size()==FastIotConstants.MagicNumber.ZERO)){ 307 + if (null != organizationId && (userIds.size() == FastIotConstants.MagicNumber.ZERO)) {
281 userPage = new Page<>(); 308 userPage = new Page<>();
282 - }else{ 309 + } else {
283 userPage = baseMapper.getUserPage(userIPage, queryMap); 310 userPage = baseMapper.getUserPage(userIPage, queryMap);
284 } 311 }
285 } 312 }
286 } else if (isTenantAdmin) { 313 } else if (isTenantAdmin) {
287 - if(null != organizationId && (userIds.size()==FastIotConstants.MagicNumber.ZERO)){ 314 + if (null != organizationId && (userIds.size() == FastIotConstants.MagicNumber.ZERO)) {
288 userPage = new Page<>(); 315 userPage = new Page<>();
289 - }else{ 316 + } else {
290 userPage = baseMapper.getUserPage(userIPage, queryMap); 317 userPage = baseMapper.getUserPage(userIPage, queryMap);
291 } 318 }
292 } 319 }
@@ -475,11 +502,11 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -475,11 +502,11 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
475 502
476 @Override 503 @Override
477 public String findUserCustomerIdById(String id) { 504 public String findUserCustomerIdById(String id) {
478 - if(StringUtils.isAllEmpty(id)){ 505 + if (StringUtils.isAllEmpty(id)) {
479 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); 506 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
480 } 507 }
481 String customerId = baseMapper.findUserCustomerIdById(id); 508 String customerId = baseMapper.findUserCustomerIdById(id);
482 - if(null == customerId){ 509 + if (null == customerId) {
483 throw new YtDataValidationException(ErrorMessage.USER_NOT_EXISTS.getMessage()); 510 throw new YtDataValidationException(ErrorMessage.USER_NOT_EXISTS.getMessage());
484 } 511 }
485 return customerId; 512 return customerId;
@@ -498,14 +525,16 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -498,14 +525,16 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
498 } 525 }
499 526
500 @Override 527 @Override
501 - public List<UserDTO> getMyCustomers(String organizationId,String tenantId, boolean isTenantAdmin) {  
502 - if(StringUtils.isEmpty(organizationId)){ 528 + public List<UserDTO> getMyCustomers(
  529 + String organizationId, String tenantId, boolean isTenantAdmin) {
  530 + if (StringUtils.isEmpty(organizationId)) {
503 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); 531 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
504 } 532 }
505 - if(isTenantAdmin){  
506 - List<String> userList = userOrganizationMappingService.getUserIdsByOrganizationId(organizationId);  
507 - if(null != userList && userList.size()>FastIotConstants.MagicNumber.ZERO){  
508 - return baseMapper.getMyCustomers(tenantId, EntityId.NULL_UUID.toString(),userList); 533 + if (isTenantAdmin) {
  534 + List<String> userList =
  535 + userOrganizationMappingService.getUserIdsByOrganizationId(organizationId);
  536 + if (null != userList && userList.size() > FastIotConstants.MagicNumber.ZERO) {
  537 + return baseMapper.getMyCustomers(tenantId, EntityId.NULL_UUID.toString(), userList);
509 } 538 }
510 } 539 }
511 return null; 540 return null;
@@ -513,16 +542,17 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -513,16 +542,17 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
513 542
514 @Override 543 @Override
515 @Async 544 @Async
516 - public CompletableFuture<TsValue> findUsersAsyncByTs(LocalDateTime startTs, LocalDateTime endTs, long ts) { 545 + public CompletableFuture<TsValue> findUsersAsyncByTs(
  546 + LocalDateTime startTs, LocalDateTime endTs, long ts) {
517 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 547 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
518 String startTime = df.format(startTs); 548 String startTime = df.format(startTs);
519 String endTime = df.format(endTs); 549 String endTime = df.format(endTs);
520 - List<UserDTO> list = baseMapper.findUsersAsyncByTs(startTime,endTime);  
521 - return CompletableFuture.supplyAsync(()->new TsValue(ts,String.valueOf(list.size()))); 550 + List<UserDTO> list = baseMapper.findUsersAsyncByTs(startTime, endTime);
  551 + return CompletableFuture.supplyAsync(() -> new TsValue(ts, String.valueOf(list.size())));
522 } 552 }
523 553
524 @Override 554 @Override
525 - public UserDTO accountExist(String userName,String tenantId) { 555 + public UserDTO accountExist(String userName, String tenantId) {
526 if (StringUtils.isEmpty(userName)) { 556 if (StringUtils.isEmpty(userName)) {
527 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); 557 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
528 } 558 }
@@ -534,17 +564,16 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> @@ -534,17 +564,16 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
534 564
535 /** 565 /**
536 * 判断手机号是否重复 566 * 判断手机号是否重复
537 - * @param phoneNumber  
538 - * @param tenantId 567 + *
  568 + * @param phoneNumber 手机号
539 * @return 569 * @return
540 */ 570 */
541 @Override 571 @Override
542 - public UserDTO findUserByPhoneNumber(String phoneNumber, String tenantId) { 572 + public UserDTO findUserByPhoneNumber(String phoneNumber) {
543 if (StringUtils.isEmpty(phoneNumber)) { 573 if (StringUtils.isEmpty(phoneNumber)) {
544 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); 574 throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
545 } 575 }
546 UserDTO userDTO = new UserDTO(); 576 UserDTO userDTO = new UserDTO();
547 - userDTO.setTenantId(tenantId);  
548 userDTO.setPhoneNumber(phoneNumber); 577 userDTO.setPhoneNumber(phoneNumber);
549 return baseMapper.findUserInfoByPhoneNumber(userDTO); 578 return baseMapper.findUserInfoByPhoneNumber(userDTO);
550 } 579 }
@@ -64,11 +64,10 @@ public interface YtUserService { @@ -64,11 +64,10 @@ public interface YtUserService {
64 64
65 /** 65 /**
66 * 判断电话是否注册过 66 * 判断电话是否注册过
67 - * @param phoneNumber  
68 - * @param tenantId 67 + * @param phoneNumber 手机号
69 * @return 68 * @return
70 */ 69 */
71 - UserDTO findUserByPhoneNumber(String phoneNumber,String tenantId); 70 + UserDTO findUserByPhoneNumber(String phoneNumber);
72 71
73 User validateChangePasswordAccount(AccountReqDTO accountReqDTO); 72 User validateChangePasswordAccount(AccountReqDTO accountReqDTO);
74 73
@@ -164,7 +164,6 @@ @@ -164,7 +164,6 @@
164 <include refid="columns"/> 164 <include refid="columns"/>
165 FROM sys_user su 165 FROM sys_user su
166 WHERE su.phone_number=#{phoneNumber} 166 WHERE su.phone_number=#{phoneNumber}
167 - AND su.tenant_id=#{tenantId}  
168 </select> 167 </select>
169 168
170 <select id="findUserCustomerIdById" resultType="java.lang.String"> 169 <select id="findUserCustomerIdById" resultType="java.lang.String">