From 4acfdb6b359b88674f935b89a8fb2a0cb027d3d5 Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Wed, 6 Aug 2025 10:02:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BF=E5=AE=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TbVisitorManagementController.java | 6 ++- .../resource/controller/SysOssController.java | 28 ++++++++++++++ .../dromara/resource/domain/QrCodeInfo.java | 10 +++++ .../resource/service/ISysOssService.java | 9 +++++ .../service/impl/SysOssServiceImpl.java | 37 +++++++++++++++++-- 5 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java index 3fc2c1e2..bf854706 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbVisitorManagementController.java @@ -70,8 +70,10 @@ public class TbVisitorManagementController extends BaseController { */ @PostMapping("/getcode") public R getcode(QrCodeInfo qrCodeInfo) { - Long string = (Long) StpUtil.getLoginId(); - qrCodeInfo.setUserid(string); + String userid =StpUtil.getLoginId().toString(); + String[] split = userid.split(":"); + Long s1 = Long.valueOf(split[1]); + qrCodeInfo.setUserid(s1); String s = remoteConfigService.selectQrTimeOut(); int i = Integer.parseInt(s); UUID value = UUID.randomUUID(); diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java index 77beb930..f8c469ba 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java @@ -6,11 +6,13 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.web.core.BaseController; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssUploadVo; import org.dromara.resource.domain.vo.SysOssVo; @@ -80,6 +82,32 @@ public class SysOssController extends BaseController { return R.ok(uploadVo); } + + /** + * 上传OSS对象存储 + * + * @param file 文件 + */ + @SaCheckPermission("system:oss:upload") + @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) + @PostMapping(value = "/qrupload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R codeUpload(@RequestPart("file") MultipartFile file,String code) { + if (ObjectUtil.isNull(file)) { + return R.fail("上传文件不能为空"); + } + QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + code); + if (info==null){ + return R.fail("二维码已过期"); + } + + SysOssVo oss = iSysOssService.qrupload(file,info); + SysOssUploadVo uploadVo = new SysOssUploadVo(); + uploadVo.setUrl(oss.getUrl()); + uploadVo.setFileName(oss.getOriginalName()); + uploadVo.setOssId(oss.getOssId().toString()); + return R.ok(uploadVo); + } + /** * 下载OSS对象存储 * diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java new file mode 100644 index 00000000..975ed6b2 --- /dev/null +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/QrCodeInfo.java @@ -0,0 +1,10 @@ +package org.dromara.resource.domain; +import lombok.Data; + +@Data +public class QrCodeInfo { + private String deviceCode; // 对应“设备码” + private String generateTime; // 对应“生成时间” + private String qrCodeId; // 对应“二维码ID” + private Long userid; +} diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java index 76c545ee..22472437 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java @@ -3,6 +3,7 @@ package org.dromara.resource.service; import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; import org.springframework.web.multipart.MultipartFile; @@ -60,6 +61,14 @@ public interface ISysOssService { */ SysOssVo upload(MultipartFile file); + /** + * 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + SysOssVo qrupload(MultipartFile file, QrCodeInfo qrCodeInfo); + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java index 2e94612c..6069bc5d 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; @@ -20,6 +21,8 @@ import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.UploadResult; import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.resource.domain.QrCodeInfo; import org.dromara.resource.domain.SysOss; import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.vo.SysOssVo; @@ -33,10 +36,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.time.Duration; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -199,6 +199,21 @@ public class SysOssServiceImpl implements ISysOssService { return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); } + @Override + public SysOssVo qrupload(MultipartFile file, QrCodeInfo info) { + String originalfileName = file.getOriginalFilename(); + String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult; + try { + uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } + // 保存文件信息 + return buildResultEntityQr(originalfileName, suffix, storage.getConfigKey(), uploadResult,info); + } + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * @@ -227,6 +242,20 @@ public class SysOssServiceImpl implements ISysOssService { return this.matchingUrl(sysOssVo); } + private SysOssVo buildResultEntityQr(String originalfileName, String suffix, String configKey, UploadResult uploadResult,QrCodeInfo info) { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + oss.setCreateBy(info.getUserid()); + oss.setCreateTime(new Date()); + baseMapper.insert(oss); + SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); + return this.matchingUrl(sysOssVo); + } + /** * 新增OSS对象存储 *