From 8d9a2d656e4ae007590c622e5f7c228adacdca49 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Fri, 14 Jun 2024 10:11:36 +0800
Subject: [PATCH] 统一风格
---
src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java | 121 +++++++++++++++++++++++++++++++++-------
1 files changed, 99 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java
index c3c9a1b..abdb892 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/UserServiceImpl.java
@@ -1,15 +1,24 @@
package com.dji.sample.manage.service.impl;
import com.auth0.jwt.JWT;
+import com.auth0.jwt.exceptions.TokenExpiredException;
+import com.auth0.jwt.interfaces.DecodedJWT;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.common.model.CustomClaim;
+import com.dji.sample.common.model.Pagination;
+import com.dji.sample.common.model.PaginationData;
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.common.util.JwtUtil;
import com.dji.sample.component.mqtt.config.MqttConfiguration;
import com.dji.sample.manage.dao.IUserMapper;
import com.dji.sample.manage.model.dto.UserDTO;
+import com.dji.sample.manage.model.dto.UserListDTO;
import com.dji.sample.manage.model.dto.WorkspaceDTO;
import com.dji.sample.manage.model.entity.UserEntity;
+import com.dji.sample.manage.model.enums.UserTypeEnum;
import com.dji.sample.manage.service.IUserService;
import com.dji.sample.manage.service.IWorkspaceService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +27,13 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.List;
+import java.util.Objects;
import java.util.Optional;
+import java.util.stream.Collectors;
@Service
@Transactional
@@ -40,7 +55,7 @@
if (userEntity == null) {
return ResponseResult.builder()
.code(HttpStatus.UNAUTHORIZED.value())
- .message("invalid username")
+ .message("无效的用户名")
.build();
}
@@ -51,27 +66,30 @@
}
@Override
- public ResponseResult userLogin(String username, String password) {
+ public ResponseResult userLogin(String username, String password, Integer flag) {
// check user
UserEntity userEntity = this.getUserByUsername(username);
if (userEntity == null) {
return ResponseResult.builder()
.code(HttpStatus.UNAUTHORIZED.value())
- .message("invalid username")
+ .message("无效的用户名")
.build();
+ }
+ if (flag.intValue() != userEntity.getUserType().intValue()) {
+ return ResponseResult.error("帐户类型不匹配");
}
if (!password.equals(userEntity.getPassword())) {
return ResponseResult.builder()
.code(HttpStatus.UNAUTHORIZED.value())
- .message("invalid password")
+ .message("无效的密码")
.build();
}
- Optional<WorkspaceDTO> workspaceOpt = workspaceService.getWorkspaceById(userEntity.getWorkspaceId());
+ Optional<WorkspaceDTO> workspaceOpt = workspaceService.getWorkspaceByWorkspaceId(userEntity.getWorkspaceId());
if (workspaceOpt.isEmpty()) {
return ResponseResult.builder()
.code(HttpStatus.UNAUTHORIZED.value())
- .message("invalid workspace id")
+ .message("无效的项目id")
.build();
}
@@ -83,13 +101,7 @@
String token = JwtUtil.createToken(customClaim.convertToMap());
UserDTO userDTO = entityConvertToDTO(userEntity);
- userDTO.setMqttAddr(new StringBuilder()
- .append(mqttConfiguration.getProtocol().trim())
- .append("://")
- .append(mqttConfiguration.getHost().trim())
- .append(":")
- .append(mqttConfiguration.getPort())
- .toString());
+ userDTO.setMqttAddr(MqttConfiguration.getBasicMqttAddress());
userDTO.setAccessToken(token);
userDTO.setWorkspaceId(workspaceOpt.get().getWorkspaceId());
return ResponseResult.success(userDTO);
@@ -100,13 +112,79 @@
if (!StringUtils.hasText(token)) {
return Optional.empty();
}
- CustomClaim customClaim = new CustomClaim(JWT.decode(token).getClaims());
+ CustomClaim customClaim;
+ try {
+ DecodedJWT jwt = JwtUtil.verifyToken(token);
+ customClaim = new CustomClaim(jwt.getClaims());
+ } catch (TokenExpiredException e) {
+ customClaim = new CustomClaim(JWT.decode(token).getClaims());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Optional.empty();
+ }
String refreshToken = JwtUtil.createToken(customClaim.convertToMap());
UserDTO user = entityConvertToDTO(this.getUserByUsername(customClaim.getUsername()));
+ if (Objects.isNull(user)) {
+ return Optional.empty();
+ }
user.setWorkspaceId(customClaim.getWorkspaceId());
user.setAccessToken(refreshToken);
return Optional.of(user);
+ }
+
+ @Override
+ public PaginationData<UserListDTO> getUsersByWorkspaceId(long page, long pageSize, String workspaceId) {
+ Page<UserEntity> userEntityPage = mapper.selectPage(
+ new Page<>(page, pageSize),
+ new LambdaQueryWrapper<UserEntity>().eq(UserEntity::getWorkspaceId, workspaceId));
+
+ List<UserListDTO> usersList = userEntityPage.getRecords()
+ .stream()
+ .map(this::entity2UserListDTO)
+ .collect(Collectors.toList());
+ return new PaginationData<>(usersList, new Pagination(userEntityPage));
+ }
+
+ @Override
+ public Boolean updateUser(String workspaceId, String userId, UserListDTO user) {
+ UserEntity userEntity = mapper.selectOne(
+ new LambdaQueryWrapper<UserEntity>()
+ .eq(UserEntity::getUserId, userId)
+ .eq(UserEntity::getWorkspaceId, workspaceId));
+ if (userEntity == null) {
+ return false;
+ }
+ userEntity.setMqttUsername(user.getMqttUsername());
+ userEntity.setMqttPassword(user.getMqttPassword());
+ userEntity.setUpdateTime(System.currentTimeMillis());
+ int id = mapper.update(userEntity, new LambdaUpdateWrapper<UserEntity>()
+ .eq(UserEntity::getUserId, userId)
+ .eq(UserEntity::getWorkspaceId, workspaceId));
+
+ return id > 0;
+ }
+
+ /**
+ * Convert database entity objects into user data transfer object.
+ * @param entity
+ * @return
+ */
+ private UserListDTO entity2UserListDTO(UserEntity entity) {
+ UserListDTO.UserListDTOBuilder builder = UserListDTO.builder();
+ if (entity != null) {
+ builder.userId(entity.getUserId())
+ .username(entity.getUsername())
+ .mqttUsername(entity.getMqttUsername())
+ .mqttPassword(entity.getMqttPassword())
+ .userType(UserTypeEnum.find(entity.getUserType()).getDesc())
+ .createTime(LocalDateTime.ofInstant(
+ Instant.ofEpochMilli(entity.getCreateTime()), ZoneId.systemDefault()));
+ Optional<WorkspaceDTO> workspaceOpt = workspaceService.getWorkspaceByWorkspaceId(entity.getWorkspaceId());
+ workspaceOpt.ifPresent(workspace -> builder.workspaceName(workspace.getWorkspaceName()));
+ }
+
+ return builder.build();
}
/**
@@ -119,9 +197,14 @@
.eq("username", username));
}
+ /**
+ * Convert database entity objects into user data transfer object.
+ * @param entity
+ * @return
+ */
private UserDTO entityConvertToDTO(UserEntity entity) {
if (entity == null) {
- return new UserDTO();
+ return null;
}
return UserDTO.builder()
.userId(entity.getUserId())
@@ -129,13 +212,7 @@
.userType(entity.getUserType())
.mqttUsername(entity.getMqttUsername())
.mqttPassword(entity.getMqttPassword())
- .mqttAddr(new StringBuilder()
- .append(mqttConfiguration.getProtocol().trim())
- .append("://")
- .append(mqttConfiguration.getHost().trim())
- .append(":")
- .append(mqttConfiguration.getPort())
- .toString())
+ .mqttAddr(MqttConfiguration.getBasicMqttAddress())
.build();
}
}
--
Gitblit v1.9.3