diff --git a/dk-common/common-oss/pom.xml b/dk-common/common-oss/pom.xml
index b27d8fa..a924766 100644
--- a/dk-common/common-oss/pom.xml
+++ b/dk-common/common-oss/pom.xml
@@ -16,9 +16,10 @@
+
org.dromara
- common-json
+ common-dubbo
@@ -53,6 +54,17 @@
+
+ software.amazon.awssdk
+ sts
+ 2.28.22
+
+
+ software.amazon.awssdk
+ url-connection-client
+ 2.28.22
+
+
@@ -72,16 +84,9 @@
compile
- com.amazonaws
- aws-java-sdk-core
- 1.12.261
- compile
-
-
- com.amazonaws
- aws-java-sdk-sts
- 1.12.261
- compile
+ io.minio
+ minio
+ ${minio.version}
@@ -89,6 +94,22 @@
aliyun-sdk-oss
${aliyun-oss.version}
-
+
+
+
+
+ software.amazon.awssdk
+ software.amazon.awssdk
+ https://mvnrepository.com/artifact/software.amazon.awssdk/s3/
+
+ always
+ true
+
+
+ always
+ true
+
+
+
diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
index c320b92..3268f86 100644
--- a/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
+++ b/dk-common/common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
@@ -107,6 +107,7 @@ public class OssClient {
S3Configuration config = S3Configuration.builder().chunkedEncodingEnabled(false)
.pathStyleAccessEnabled(isStyle).build();
+
// 创建 预签名 URL 的生成器 实例,用于生成 S3 预签名 URL
this.presigner = S3Presigner.builder()
.region(of())
@@ -114,7 +115,6 @@ public class OssClient {
.endpointOverride(URI.create(getDomain()))
.serviceConfiguration(config)
.build();
-
// 创建存储桶
createBucket();
} catch (Exception e) {
diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/enumd/HttpsType.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/enumd/HttpsType.java
new file mode 100644
index 0000000..9fb83f2
--- /dev/null
+++ b/dk-common/common-oss/src/main/java/org/dromara/common/oss/enumd/HttpsType.java
@@ -0,0 +1,34 @@
+package org.dromara.common.oss.enumd;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * minio策略配置
+ *
+ * @author Lion Li
+ */
+@Getter
+@AllArgsConstructor
+public enum HttpsType {
+
+ /**
+ * 否
+ */
+ N("N"),
+
+ /**
+ * 是
+ */
+ Y("Y"),
+
+ HTTP("http://"),
+
+ HTTPS("https://");
+
+ /**
+ * 类型
+ */
+ private final String type;
+
+}
diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/Minio.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/Minio.java
index e824c68..e97686c 100644
--- a/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/Minio.java
+++ b/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/Minio.java
@@ -1,15 +1,24 @@
package org.dromara.common.oss.factory;
-import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.client.builder.AwsClientBuilder;
-import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
-import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
-import com.amazonaws.services.securitytoken.model.Credentials;
+import io.minio.credentials.AssumeRoleProvider;
+import io.minio.credentials.Credentials;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.sdk.cloudapi.storage.CredentialsToken;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.sts.StsClient;
+import software.amazon.awssdk.services.sts.model.GetFederationTokenRequest;
+import software.amazon.awssdk.services.sts.model.GetSessionTokenRequest;
+import software.amazon.awssdk.services.sts.model.GetSessionTokenResponse;
+
+import java.net.URI;
+import java.security.NoSuchAlgorithmException;
+import java.time.Duration;
+
/**
* @auther wuyuan
@@ -20,18 +29,16 @@ public class Minio {
public static CredentialsToken getCredentials(OssClient client) {
try {
- AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(client.getOssProperties().getEndpoint(), client.getOssProperties().getRegion());
- BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(client.getOssProperties().getAccessKey(), client.getOssProperties().getSecretKey());
- AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(basicAWSCredentials);
- AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
- .withEndpointConfiguration(endpointConfiguration)
- .withCredentials(credentialsProvider).build();
- Credentials credentials = stsClient.getSessionToken().getCredentials();
- return new CredentialsToken(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken(), client.getOssProperties().getExpire());
- } catch (Exception e) {
+ AssumeRoleProvider provider = new AssumeRoleProvider(client.getIsHttps()+client.getOssProperties().getEndpoint(), client.getOssProperties().getAccessKey(),
+ client.getOssProperties().getSecretKey(), Math.toIntExact(client.getOssProperties().getExpire()),
+ null, client.getOssProperties().getRegion(), null, null, null, null);
+ Credentials credential = provider.fetch();
+ return new CredentialsToken(credential.accessKey(), credential.secretKey(), credential.sessionToken(), client.getOssProperties().getExpire());
+ } catch (NoSuchAlgorithmException e) {
log.debug("Failed to obtain sts.");
e.printStackTrace();
}
return null;
}
+
}
diff --git a/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java b/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java
index e7b8688..556af9d 100644
--- a/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java
+++ b/dk-common/common-oss/src/main/java/org/dromara/common/oss/factory/OssFactory.java
@@ -1,8 +1,8 @@
package org.dromara.common.oss.factory;
+import org.apache.dubbo.common.utils.JsonUtils;
import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.oss.constant.OssConstant;
import org.dromara.common.oss.core.OssClient;
import org.dromara.common.oss.exception.OssException;
@@ -47,7 +47,7 @@ public class OssFactory {
if (json == null) {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
}
- OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
+ OssProperties properties = JsonUtils.toJavaObject(json, OssProperties.class);
// 使用租户标识避免多个租户相同key实例覆盖
String key = configKey;
if (StringUtils.isNotBlank(properties.getTenantId())) {
@@ -71,33 +71,11 @@ public class OssFactory {
return client;
}
- public static synchronized CredentialsToken getCredentials(String configKey) {
- String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
- if (json == null) {
- throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
- }
- OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
- // 使用租户标识避免多个租户相同key实例覆盖
- String key = configKey;
- if (StringUtils.isNotBlank(properties.getTenantId())) {
- key = properties.getTenantId() + ":" + configKey;
- }
- OssClient client = CLIENT_CACHE.get(key);
- // 客户端不存在或配置不相同则重新构建
- if (client == null || !client.checkPropertiesSame(properties)) {
- LOCK.lock();
- try {
- if(OssTypeEnum.ALIYUN.getType().equals(client.getOssProperties().getSThreeType())){
- AliyunOss.getCredentials(client);
- }else if(OssTypeEnum.MINIO.getType().equals(client.getOssProperties().getSThreeType())){
- Minio.getCredentials(client);
- }
- } catch (Exception e) {
- log.debug("Failed to obtain sts.");
- e.printStackTrace();
- } finally {
- LOCK.unlock();
- }
+ public static synchronized CredentialsToken getCredentials(OssClient client) {
+ if(OssTypeEnum.ALIYUN.getType().equals(client.getOssProperties().getSThreeType())){
+ return AliyunOss.getCredentials(client);
+ }else if(OssTypeEnum.MINIO.getType().equals(client.getOssProperties().getSThreeType())){
+ return Minio.getCredentials(client);
}
return null;
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
index 478b308..b131ea9 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java
@@ -1,6 +1,11 @@
package org.dromara.sample.manage.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.v3.oas.annotations.Operation;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.web.core.BaseController;
import org.dromara.sample.manage.model.dto.DeviceDTO;
import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO;
import org.dromara.sample.manage.service.IDeviceService;
@@ -35,22 +40,23 @@ public class DeviceController {
* Get the topology list of all online devices in one workspace.
* @return
*/
- @GetMapping("/devices")
- public HttpResultResponse> getDevices() {
- LoginUser loginUser = LoginHelper.getLoginUser();
- List devicesList = deviceService.getDevicesTopoForWeb(loginUser.getTenantId());
-
+ @GetMapping("/{workspace_id}/devices")
+ @SaCheckPermission("work:spaces:list")
+ @Operation(summary = "获取一个工作区中所有在线设备的列表。", description = "获取一个工作区中所有在线设备的列表")
+ public HttpResultResponse> getDevices(@PathVariable("workspace_id") String workspaceId) {
+ List devicesList = deviceService.getDevicesTopoForWeb(workspaceId);
return HttpResultResponse.success(devicesList);
}
/**
- * 绑定设备
+ * 将设备绑定到工作区,只能web查看
* After binding the device to the workspace, the device data can only be seen on the web.
* @param device
* @param deviceSn
* @return
*/
@PostMapping("/{device_sn}/binding")
+ @Operation(summary = "获取一个工作区中所有在线设备的列表。", description = "获取一个工作区中所有在线设备的列表")
public HttpResultResponse bindDevice(@RequestBody DeviceDTO device, @PathVariable("device_sn") String deviceSn) {
device.setDeviceSn(deviceSn);
boolean isUpd = deviceService.bindDevice(device);
@@ -63,11 +69,12 @@ public class DeviceController {
* @param deviceSn
* @return
*/
- @GetMapping("/devices/{device_sn}")
- public HttpResultResponse getDevice(
+ @GetMapping("/{workspace_id}/devices/{device_sn}")
+ @Operation(summary = "根据设备sn获取设备信息。", description = "根据设备sn获取设备信息。")
+ public HttpResultResponse getDevice(@PathVariable("workspace_id") String workspaceId,
@PathVariable("device_sn") String deviceSn) {
Optional deviceOpt = deviceService.getDeviceBySn(deviceSn);
- return deviceOpt.isEmpty() ? HttpResultResponse.error("device not found.") : HttpResultResponse.success(deviceOpt.get());
+ return deviceOpt.isEmpty() ? HttpResultResponse.error("找不到该设备。") : HttpResultResponse.success(deviceOpt.get());
}
/**
@@ -77,23 +84,25 @@ public class DeviceController {
* @param pageSize
* @return
*/
- @GetMapping("/devices/bound")
+ @Operation(summary = "在工作区中获取绑定设备列表。", description = "在工作区中获取绑定设备列表。")
+ @GetMapping("/{workspace_id}/devices/bound")
public HttpResultResponse> getBoundDevicesWithDomain(
- Integer domain,
+ @PathVariable("workspace_id") String workspaceId,Integer domain,
@RequestParam(defaultValue = "1") Long page,
@RequestParam(value = "page_size", defaultValue = "50") Long pageSize) {
LoginUser loginUser = LoginHelper.getLoginUser();
- PaginationData devices = deviceService.getBoundDevicesWithDomain(loginUser.getTenantId(), page, pageSize, domain);
+ PaginationData devices = deviceService.getBoundDevicesWithDomain(workspaceId, page, pageSize, domain);
return HttpResultResponse.success(devices);
}
/**
- * 正在删除设备的绑定状态。
+ * 删除设备的绑定状态。
* Removing the binding state of the device.
* @param deviceSn
* @return
*/
+ @Operation(summary = "删除设备的绑定状态。", description = "删除设备的绑定状态。")
@DeleteMapping("/{device_sn}/unbinding")
public HttpResultResponse unbindingDevice(@PathVariable("device_sn") String deviceSn) {
deviceService.unbindDevice(deviceSn);
@@ -108,7 +117,9 @@ public class DeviceController {
* @return
*/
@PutMapping("/devices/{device_sn}")
+ @Operation(summary = "更新设备信息。", description = "更新设备信息。")
public HttpResultResponse updateDevice(@RequestBody DeviceDTO device,
+ @PathVariable("workspace_id") String workspaceId,
@PathVariable("device_sn") String deviceSn) {
device.setDeviceSn(deviceSn);
boolean isUpd = deviceService.updateDevice(device);
@@ -121,11 +132,11 @@ public class DeviceController {
* @param upgradeDTOS
* @return
*/
+ @Operation(summary = "设备离线固件升级任务。", description = "设备离线固件升级任务。")
@PostMapping("/devices/ota")
- public HttpResultResponse createOtaJob(
+ public HttpResultResponse createOtaJob(@PathVariable("workspace_id") String workspaceId,
@RequestBody List upgradeDTOS) {
- LoginUser loginUser = LoginHelper.getLoginUser();
- return deviceService.createDeviceOtaJob(loginUser.getTenantId(), upgradeDTOS);
+ return deviceService.createDeviceOtaJob(workspaceId, upgradeDTOS);
}
/**
@@ -135,15 +146,16 @@ public class DeviceController {
* @param param
* @return
*/
- @PutMapping("/devices/{device_sn}/property")
- public HttpResultResponse devicePropertySet(@PathVariable("device_sn") String dockSn,
+ @Operation(summary = "设置无人机的属性参数。", description = "设置无人机的属性参数。")
+ @PutMapping("/{workspace_id}/devices/{device_sn}/property")
+ public HttpResultResponse devicePropertySet(@PathVariable("workspace_id") String workspaceId,
+ @PathVariable("device_sn") String dockSn,
@RequestBody JsonNode param) {
- LoginUser loginUser = LoginHelper.getLoginUser();
if (param.size() != 1) {
return HttpResultResponse.error(CloudSDKErrorEnum.INVALID_PARAMETER);
}
- int result = deviceService.devicePropertySet(loginUser.getTenantId(), dockSn, param);
+ int result = deviceService.devicePropertySet(workspaceId, dockSn, param);
return PropertySetReplyResultEnum.SUCCESS.getResult() == result ?
HttpResultResponse.success() : HttpResultResponse.error(result, String.valueOf(result));
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java
index 0630344..c684107 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceFirmwareController.java
@@ -1,5 +1,6 @@
package org.dromara.sample.manage.controller;
+import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
@@ -44,6 +45,7 @@ public class DeviceFirmwareController {
* @return
*/
@GetMapping("/firmware-release-notes/latest")
+ @Operation(summary = "获取此设备型号的最新固件版本信息。", description = "获取此设备型号的最新固件版本信息。")
public HttpResultResponse> getLatestFirmwareNote(@RequestParam("device_name") List deviceNames) {
List releaseNotes = deviceNames.stream()
@@ -61,11 +63,12 @@ public class DeviceFirmwareController {
* @param param
* @return
*/
- @GetMapping("/firmwares")
+ @GetMapping("/{workspace_id}/firmwares")
+ @Operation(summary = "根据参数查询固件信息。", description = "根据参数查询固件信息。")
public HttpResultResponse> getAllFirmwarePagination(
+ @PathVariable("workspace_id") String workspaceId,
@Valid DeviceFirmwareQueryParam param) {
- LoginUser loginUser = LoginHelper.getLoginUser();
- PaginationData data = service.getAllFirmwarePagination(loginUser.getTenantId(), param);
+ PaginationData data = service.getAllFirmwarePagination(workspaceId, param);
return HttpResultResponse.success(data);
}
@@ -77,17 +80,19 @@ public class DeviceFirmwareController {
* @param param
* @return
*/
- @PostMapping("/firmwares/file/upload")
+ @Operation(summary = "导入固件文件以进行设备升级。", description = "导入固件文件以进行设备升级。")
+ @PostMapping("/{workspace_id}/firmwares/file/upload")
public HttpResultResponse importFirmwareFile(HttpServletRequest request,
- @NotNull(message = "No file received.") MultipartFile file,
+ @PathVariable("workspace_id") String workspaceId,
+ @NotNull(message = "未收到文件。") MultipartFile file,
@Valid DeviceFirmwareUploadParam param) {
if (!file.getOriginalFilename().endsWith(FirmwareFileProperties.FIRMWARE_FILE_SUFFIX)) {
- return HttpResultResponse.error("The file format is incorrect.");
+ return HttpResultResponse.error("文件格式不正确。");
}
LoginUser loginUser = LoginHelper.getLoginUser();
String creator = loginUser.getUsername();
- service.importFirmwareFile(loginUser.getTenantId(), creator, param, file);
+ service.importFirmwareFile(workspaceId, creator, param, file);
return HttpResultResponse.success();
}
@@ -98,8 +103,9 @@ public class DeviceFirmwareController {
* @param param
* @return
*/
- @PutMapping("/firmwares/{firmware_id}")
- public HttpResultResponse changeFirmwareStatus(
+ @Operation(summary = "更改固件一致性状态。", description = "更改固件一致性状态。")
+ @PutMapping("/{workspace_id}/firmwares/{firmware_id}")
+ public HttpResultResponse changeFirmwareStatus(@PathVariable("workspace_id") String workspaceId,
@PathVariable("firmware_id") String firmwareId,
@Valid @RequestBody DeviceFirmwareUpdateParam param) {
service.updateFirmwareInfo(DeviceFirmwareDTO.builder()
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java
index f601674..b6d268e 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceHmsController.java
@@ -32,8 +32,8 @@ public class DeviceHmsController {
* @param param
* @return
*/
- @GetMapping("/devices/hms")
- public HttpResultResponse> getHmsInformation(DeviceHmsQueryParam param) {
+ @GetMapping("/{workspace_id}/devices/hms")
+ public HttpResultResponse> getHmsInformation( @PathVariable("workspace_id") String workspaceId,DeviceHmsQueryParam param) {
PaginationData devices = deviceHmsService.getDeviceHmsByParam(param);
return HttpResultResponse.success(devices);
@@ -45,7 +45,7 @@ public class DeviceHmsController {
* @param deviceSn
* @return
*/
- @PutMapping("/devices/hms/{device_sn}")
+ @PutMapping("/{workspace_id}/devices/hms/{device_sn}")
public HttpResultResponse updateReadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) {
deviceHmsService.updateUnreadHms(deviceSn);
return HttpResultResponse.success();
@@ -57,7 +57,7 @@ public class DeviceHmsController {
* @param deviceSn
* @return
*/
- @GetMapping("/devices/hms/{device_sn}")
+ @GetMapping("/{workspace_id}/devices/hms/{device_sn}")
public HttpResultResponse> getUnreadHmsByDeviceSn(@PathVariable("device_sn") String deviceSn) {
PaginationData paginationData = deviceHmsService.getDeviceHmsByParam(
DeviceHmsQueryParam.builder()
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java
index bffffbd..0a87ec4 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/WorkspaceController.java
@@ -1,15 +1,22 @@
package org.dromara.sample.manage.controller;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
+import org.dromara.common.core.domain.R;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.common.HttpResultResponse;
+import org.dromara.common.web.core.BaseController;
import org.dromara.sample.manage.model.dto.WorkspaceDTO;
+import org.dromara.sample.manage.model.entity.WorkspaceEntity;
import org.dromara.sample.manage.service.IWorkspaceService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@@ -21,7 +28,7 @@ import java.util.Optional;
*/
@RestController
@RequestMapping("${url.manage.prefix}${url.manage.version}/workspaces")
-public class WorkspaceController {
+public class WorkspaceController extends BaseController {
@Autowired
private IWorkspaceService workspaceService;
@@ -33,10 +40,28 @@ public class WorkspaceController {
* @return
*/
@GetMapping("/current")
+ @SaCheckPermission("work:spaces:list")
+ @Operation(summary = "获取当前用户所在工作区的相关信息。", description = "工作区配置无人机所用,绑定到平台需要工作区")
public HttpResultResponse getCurrentWorkspace(HttpServletRequest request) {
LoginUser loginUser = LoginHelper.getLoginUser();
String tenantId = loginUser.getTenantId();
Optional workspaceOpt = workspaceService.getWorkspaceByTenantId(tenantId);
return workspaceOpt.isEmpty() ? HttpResultResponse.error() : HttpResultResponse.success(workspaceOpt.get());
}
+
+ /**
+ * 新增工作区
+ * Gets information about the workspace that the current user is in.
+ * @param request
+ * @return
+ */
+ @PostMapping("/add")
+ @SaCheckPermission("work:spaces:add")
+ @Operation(summary = "新增工作区。", description = "新增工作区主要是组织号",
+ parameters = {
+ @Parameter(name = "workspaceDTO", description = "workspaceDTO"),
+ })
+ public HttpResultResponse addCurrentWorkspace(HttpServletRequest request, @Validated @RequestBody WorkspaceDTO workspaceDTO) {
+ return workspaceService.insertCurrentWorkspace(workspaceDTO) > 0 ? HttpResultResponse.success() : HttpResultResponse.error();
+ }
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java
index fa8736b..f8b35bf 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/WorkspaceDTO.java
@@ -1,5 +1,7 @@
package org.dromara.sample.manage.model.dto;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -18,13 +20,19 @@ public class WorkspaceDTO {
private Integer id;
+ @Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
+ @Schema(description = "workspaceId,设备区域标识id", format = "uuid")
private String workspaceId;
+ @Schema(description = "workspaceName,工作区标识id")
private String workspaceName;
+ @Schema(description = "workspaceName,工作区标识id")
private String workspaceDesc;
+ @Schema(description = "platformName,工作区的平台名称")
private String platformName;
+ @Schema(description = "bindCode,设备编码")
private String bindCode;
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java
index 8836edf..f7a178c 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceEntity.java
@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
+import java.util.Date;
/**
* The entity class of the device
@@ -52,11 +53,11 @@ public class DeviceEntity implements Serializable {
@TableField(value = "child_sn")
private String childSn;
- @TableField(value = "create_time", fill = FieldFill.INSERT)
- private Long createTime;
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
- @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
- private Long updateTime;
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
@TableField(value = "device_desc")
private String deviceDesc;
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java
index 2684991..8b1b624 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/WorkspaceEntity.java
@@ -1,36 +1,40 @@
package org.dromara.sample.manage.model.entity;
import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Pattern;
import lombok.Data;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serializable;
@TableName(value = "manage_workspace")
@Data
-public class WorkspaceEntity implements Serializable {
+public class WorkspaceEntity extends TenantEntity implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField(value = "workspace_id")
+ @Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
+ @Schema(description = "workspaceId,设备区域标识id", format = "uuid")
private String workspaceId;
@TableField(value = "workspace_name")
+ @Schema(description = "workspaceName,工作区标识id")
private String workspaceName;
@TableField(value = "workspace_desc")
+ @Schema(description = "workspaceDesc,工作区描述")
private String workspaceDesc;
@TableField(value = "platform_name")
+ @Schema(description = "platformName,工作区的平台名称")
private String platformName;
- @TableField(value = "create_time", fill = FieldFill.INSERT)
- private Long createTime;
-
- @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
- private Long updateTime;
-
@TableField(value = "bind_code")
+ @Schema(description = "bindCode,设备编码")
private String bindCode;
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java
index e2446ed..124803f 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IWorkspaceService.java
@@ -23,4 +23,6 @@ public interface IWorkspaceService {
*/
Optional getWorkspaceNameByBindCode(String bindCode);
+
+ int insertCurrentWorkspace(WorkspaceDTO workspaceDTO);
}
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java
index e6521a8..8605e59 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/WorkspaceServiceImpl.java
@@ -1,6 +1,7 @@
package org.dromara.sample.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.sample.manage.mapper.IWorkspaceMapper;
import org.dromara.sample.manage.model.dto.WorkspaceDTO;
import org.dromara.sample.manage.model.entity.WorkspaceEntity;
@@ -35,7 +36,7 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
return Optional.ofNullable(entityConvertToDto(
mapper.selectOne(
new LambdaQueryWrapper()
- .eq(WorkspaceEntity::getWorkspaceId, tenantId))));
+ .eq(WorkspaceEntity::getTenantId, tenantId))));
}
@Override
@@ -44,6 +45,12 @@ public class WorkspaceServiceImpl implements IWorkspaceService {
mapper.selectOne(new LambdaQueryWrapper().eq(WorkspaceEntity::getBindCode, bindCode))));
}
+ @Override
+ public int insertCurrentWorkspace(WorkspaceDTO workspaceDTO) {
+ WorkspaceEntity workspaceEntity = MapstructUtils.convert(workspaceDTO, WorkspaceEntity.class);
+ return mapper.insert(workspaceEntity);
+ }
+
/**
* Convert database entity objects into workspace data transfer object.
* @param entity
diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/storage/service/impl/StorageServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/storage/service/impl/StorageServiceImpl.java
index 4c6991d..af53d55 100644
--- a/dk-modules/sample/src/main/java/org/dromara/sample/storage/service/impl/StorageServiceImpl.java
+++ b/dk-modules/sample/src/main/java/org/dromara/sample/storage/service/impl/StorageServiceImpl.java
@@ -9,6 +9,7 @@ import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder
import com.amazonaws.services.securitytoken.model.Credentials;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.oss.core.OssClient;
+import org.dromara.common.oss.enumd.HttpsType;
import org.dromara.common.oss.factory.OssFactory;
import org.dromara.common.sdk.cloudapi.media.StorageConfigGet;
import org.dromara.common.sdk.cloudapi.media.api.AbstractMediaService;
@@ -35,11 +36,11 @@ public class StorageServiceImpl extends AbstractMediaService implements IStorage
@Override
public StsCredentialsResponse getSTSCredentials() {
- OssClient ossClient = OssFactory.instance("media_file");
+ OssClient ossClient = OssFactory.instance("mediafile");
return new StsCredentialsResponse()
- .setEndpoint(ossClient.getOssProperties().getEndpoint())
- .setBucket("media_file")
- .setCredentials(OssFactory.getCredentials("media_file"))
+ .setEndpoint(ossClient.getIsHttps()+ossClient.getOssProperties().getEndpoint())
+ .setBucket("mediafile")
+ .setCredentials(OssFactory.getCredentials(ossClient))
.setProvider(OssTypeEnum.fromType(ossClient.getOssProperties().getSThreeType()))
.setObjectKeyPrefix(ossClient.getOssProperties().getPrefix())
.setRegion(ossClient.getOssProperties().getRegion());
diff --git a/pom.xml b/pom.xml
index f29f27b..4f31bb1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
2.28.22
0.31.3
+ 8.3.7
3.3.3
@@ -82,12 +83,12 @@
dev
- 114.235.183.147:8848
+ 127.0.0.1:8848
DEFAULT_GROUP
DEFAULT_GROUP
nacos
nacos
- 114.235.183.147:4560
+ 127.0.0.1:4560
@@ -98,12 +99,12 @@
prod
prod
- 114.235.183.147:8848
+ 127.0.0.1:8848
DEFAULT_GROUP
DEFAULT_GROUP
nacos
nacos
- 114.235.183.147:4560
+ 127.0.0.1:4560