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