访客接口
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-08-06 10:02:11 +08:00
parent 00ad9a1330
commit 4acfdb6b35
5 changed files with 84 additions and 6 deletions

View File

@@ -70,8 +70,10 @@ public class TbVisitorManagementController extends BaseController {
*/ */
@PostMapping("/getcode") @PostMapping("/getcode")
public R<String> getcode(QrCodeInfo qrCodeInfo) { public R<String> getcode(QrCodeInfo qrCodeInfo) {
Long string = (Long) StpUtil.getLoginId(); String userid =StpUtil.getLoginId().toString();
qrCodeInfo.setUserid(string); String[] split = userid.split(":");
Long s1 = Long.valueOf(split[1]);
qrCodeInfo.setUserid(s1);
String s = remoteConfigService.selectQrTimeOut(); String s = remoteConfigService.selectQrTimeOut();
int i = Integer.parseInt(s); int i = Integer.parseInt(s);
UUID value = UUID.randomUUID(); UUID value = UUID.randomUUID();

View File

@@ -6,11 +6,13 @@ import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.QueryGroup; 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.web.core.BaseController;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.bo.SysOssBo;
import org.dromara.resource.domain.vo.SysOssUploadVo; import org.dromara.resource.domain.vo.SysOssUploadVo;
import org.dromara.resource.domain.vo.SysOssVo; import org.dromara.resource.domain.vo.SysOssVo;
@@ -80,6 +82,32 @@ public class SysOssController extends BaseController {
return R.ok(uploadVo); 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<SysOssUploadVo> 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对象存储 * 下载OSS对象存储
* *

View File

@@ -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;
}

View File

@@ -3,6 +3,7 @@ package org.dromara.resource.service;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.bo.SysOssBo;
import org.dromara.resource.domain.vo.SysOssVo; import org.dromara.resource.domain.vo.SysOssVo;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -60,6 +61,14 @@ public interface ISysOssService {
*/ */
SysOssVo upload(MultipartFile file); SysOssVo upload(MultipartFile file);
/**
* 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库
*
* @param file 要上传的 MultipartFile 对象
* @return 上传成功后的 SysOssVo 对象,包含文件信息
*/
SysOssVo qrupload(MultipartFile file, QrCodeInfo qrCodeInfo);
/** /**
* 上传文件到对象存储服务,并保存文件信息到数据库 * 上传文件到对象存储服务,并保存文件信息到数据库
* *

View File

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.CacheNames; 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.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.SpringUtils; 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.entity.UploadResult;
import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.enums.AccessPolicyType;
import org.dromara.common.oss.factory.OssFactory; 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.SysOss;
import org.dromara.resource.domain.bo.SysOssBo; import org.dromara.resource.domain.bo.SysOssBo;
import org.dromara.resource.domain.vo.SysOssVo; import org.dromara.resource.domain.vo.SysOssVo;
@@ -33,10 +36,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -199,6 +199,21 @@ public class SysOssServiceImpl implements ISysOssService {
return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); 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); 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对象存储 * 新增OSS对象存储
* *