Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
8e1383e7
提交
8e1383e7
authored
4月 10, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
代码优化
上级
c92bd677
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
166 行增加
和
4 行删除
+166
-4
TradeOrderConvert.java
...g/dromara/mall/convert/trade/order/TradeOrderConvert.java
+3
-0
SysOssController.java
...ava/org/dromara/resource/controller/SysOssController.java
+53
-3
ISysOssService.java
...ain/java/org/dromara/resource/service/ISysOssService.java
+27
-0
SysOssServiceImpl.java
.../org/dromara/resource/service/impl/SysOssServiceImpl.java
+82
-0
SysDictDataController.java
...omara/system/controller/system/SysDictDataController.java
+1
-1
没有找到文件。
ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/convert/trade/order/TradeOrderConvert.java
浏览文件 @
8e1383e7
...
@@ -130,6 +130,9 @@ public interface TradeOrderConvert {
...
@@ -130,6 +130,9 @@ public interface TradeOrderConvert {
TradeOrderPageItemRespVO
convert
(
TradeOrderDO
order
,
List
<
TradeOrderItemDO
>
items
);
TradeOrderPageItemRespVO
convert
(
TradeOrderDO
order
,
List
<
TradeOrderItemDO
>
items
);
@Mapping
(
target
=
"createTime"
,
expression
=
"java(org.dromara.common.mall.util.date.DateUtils.of(bean.getCreateTime()))"
)
TradeOrderPageItemRespVO
convert1
(
TradeOrderDO
bean
);
ProductPropertyValueDetailRespVO
convert
(
ProductPropertyValueDetailRespDTO
bean
);
ProductPropertyValueDetailRespVO
convert
(
ProductPropertyValueDetailRespDTO
bean
);
default
TradeOrderDetailRespVO
convert
(
TradeOrderDO
order
,
List
<
TradeOrderItemDO
>
orderItems
,
default
TradeOrderDetailRespVO
convert
(
TradeOrderDO
order
,
List
<
TradeOrderItemDO
>
orderItems
,
...
...
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysOssController.java
浏览文件 @
8e1383e7
...
@@ -3,14 +3,16 @@ package org.dromara.resource.controller;
...
@@ -3,14 +3,16 @@ package org.dromara.resource.controller;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
jakarta.servlet.http.HttpServletResponse
;
import
jakarta.validation.constraints.NotEmpty
;
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.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.common.web.core.BaseController
;
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
;
...
@@ -20,8 +22,6 @@ import org.springframework.validation.annotation.Validated;
...
@@ -20,8 +22,6 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
jakarta.servlet.http.HttpServletResponse
;
import
jakarta.validation.constraints.NotEmpty
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
...
@@ -103,4 +103,54 @@ public class SysOssController extends BaseController {
...
@@ -103,4 +103,54 @@ public class SysOssController extends BaseController {
return
toAjax
(
iSysOssService
.
deleteWithValidByIds
(
Arrays
.
asList
(
ossIds
),
true
));
return
toAjax
(
iSysOssService
.
deleteWithValidByIds
(
Arrays
.
asList
(
ossIds
),
true
));
}
}
/**
* 处理文件分片上传的请求。
* 接收前端传来的文件分片、文件名和分片索引,调用 MinioService 中的方法将分片保存到临时目录。
*
* @param chunk 上传的文件分片,类型为 MultipartFile
* @param filename 原始文件的名称
* @param chunkIndex 当前分片的索引,用于标识该分片在整个文件中的位置
* @return 是否成功
*/
@PostMapping
(
"/chunk"
)
public
R
<
Void
>
uploadChunk
(
@RequestParam
(
"chunk"
)
MultipartFile
chunk
,
@RequestParam
(
"filename"
)
String
filename
,
@RequestParam
(
"chunkIndex"
)
int
chunkIndex
)
{
iSysOssService
.
uploadChunk
(
filename
,
chunkIndex
,
chunk
);
return
toAjax
(
true
);
}
/**
* 处理文件分片合并的请求。
* 接收前端传来的文件名和总分片数,调用 MinioService 中的方法将所有分片合并并上传到 MinIO。
*
* @param filename 原始文件的名称
* @param totalChunks 整个文件的总分片数
* @return 文件信息
*/
@PostMapping
(
"/merge"
)
public
R
<
SysOssUploadVo
>
mergeChunks
(
@RequestParam
(
"filename"
)
String
filename
,
@RequestParam
(
"totalChunks"
)
int
totalChunks
)
{
SysOssVo
oss
=
iSysOssService
.
mergeChunks
(
filename
,
totalChunks
);
SysOssUploadVo
uploadVo
=
new
SysOssUploadVo
();
uploadVo
.
setUrl
(
oss
.
getUrl
());
uploadVo
.
setFileName
(
oss
.
getOriginalName
());
uploadVo
.
setOssId
(
oss
.
getOssId
().
toString
());
return
R
.
ok
(
uploadVo
);
}
/**
* 处理查询已上传文件分片的请求。
* 接收前端传来的文件名,调用 MinioService 中的方法获取已上传的分片索引列表。
*
* @param filename 原始文件的名称
* @return 已上传的分片索引列表,类型为 List<Integer>
*/
@GetMapping
(
"/uploaded-chunks"
)
public
R
<
List
<
Integer
>>
getUploadedChunks
(
@RequestParam
(
"filename"
)
String
filename
)
{
// 调用 MinioService 的 getUploadedChunks 方法获取已上传的分片索引列表
return
R
.
ok
(
iSysOssService
.
getUploadedChunks
(
filename
));
}
}
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysOssService.java
浏览文件 @
8e1383e7
...
@@ -92,4 +92,31 @@ public interface ISysOssService {
...
@@ -92,4 +92,31 @@ public interface ISysOssService {
* @return 结果
* @return 结果
*/
*/
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
);
Boolean
deleteWithValidByIds
(
Collection
<
Long
>
ids
,
Boolean
isValid
);
/**
* 上传文件分片到临时目录。
*
* @param filename 原始文件的名称
* @param chunkIndex 当前分片的索引,用于标识该分片在整个文件中的位置
* @param chunk 上传的文件分片,类型为 MultipartFile
* @throws Exception 如果在上传过程中出现异常,如文件操作异常等
*/
void
uploadChunk
(
String
filename
,
int
chunkIndex
,
MultipartFile
chunk
);
/**
* 合并所有文件分片并将合并后的文件上传到 MinIO。
*
* @param filename 原始文件的名称
* @param totalChunks 整个文件的总分片数
* @throws Exception 如果在合并或上传过程中出现异常,如部分分片缺失、文件操作异常等
*/
SysOssVo
mergeChunks
(
String
filename
,
int
totalChunks
);
/**
* 获取已上传的文件分片索引列表。
*
* @param filename 原始文件的名称
* @return 已上传的分片索引列表,类型为 List<Integer>
*/
List
<
Integer
>
getUploadedChunks
(
String
filename
);
}
}
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysOssServiceImpl.java
浏览文件 @
8e1383e7
...
@@ -32,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
...
@@ -32,6 +32,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.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
...
@@ -260,4 +261,85 @@ public class SysOssServiceImpl implements ISysOssService {
...
@@ -260,4 +261,85 @@ public class SysOssServiceImpl implements ISysOssService {
return
oss
;
return
oss
;
}
}
// 定义临时目录,用于存储文件分片
private
static
final
String
TEMP_DIR
=
"temp"
;
@Override
public
void
uploadChunk
(
String
filename
,
int
chunkIndex
,
MultipartFile
chunk
)
{
// 创建临时目录对象
File
tempDir
=
new
File
(
TEMP_DIR
);
// 如果临时目录不存在,则创建该目录
if
(!
tempDir
.
exists
())
{
tempDir
.
mkdirs
();
}
// 构建当前分片的临时文件对象
File
tempFile
=
new
File
(
tempDir
,
filename
+
".part"
+
chunkIndex
);
try
(
InputStream
inputStream
=
chunk
.
getInputStream
())
{
// 将文件分片的输入流复制到临时文件中
org
.
apache
.
commons
.
io
.
FileUtils
.
copyInputStreamToFile
(
inputStream
,
tempFile
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
SysOssVo
mergeChunks
(
String
filename
,
int
totalChunks
)
{
// 创建临时目录对象
File
tempDir
=
new
File
(
TEMP_DIR
);
// 用于存储已找到的文件分片
List
<
File
>
chunks
=
new
ArrayList
<>();
// 遍历所有分片索引
for
(
int
i
=
0
;
i
<
totalChunks
;
i
++)
{
// 构建当前分片的临时文件对象
File
chunk
=
new
File
(
tempDir
,
filename
+
".part"
+
i
);
// 如果该分片文件存在,则添加到列表中
if
(
chunk
.
exists
())
{
chunks
.
add
(
chunk
);
}
}
// 检查已找到的分片数量是否与总分片数一致,如果不一致则抛出异常
if
(
chunks
.
size
()
!=
totalChunks
)
{
throw
new
RuntimeException
(
"部分分片缺失,无法合并"
);
}
// 构建合并后的文件对象
File
mergedFile
=
new
File
(
tempDir
,
filename
);
try
{
// 遍历所有分片文件,将其内容追加到合并后的文件中
for
(
File
chunk
:
chunks
)
{
org
.
apache
.
commons
.
io
.
FileUtils
.
writeByteArrayToFile
(
mergedFile
,
org
.
apache
.
commons
.
io
.
FileUtils
.
readFileToByteArray
(
chunk
),
true
);
}
String
suffix
=
StringUtils
.
substring
(
filename
,
filename
.
lastIndexOf
(
"."
),
filename
.
length
());
OssClient
storage
=
OssFactory
.
instance
();
UploadResult
uploadResult
=
storage
.
uploadSuffix
(
mergedFile
,
suffix
);
// 保存文件信息
return
buildResultEntity
(
filename
,
suffix
,
storage
.
getConfigKey
(),
uploadResult
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
// 无论合并和上传是否成功,都删除所有分片文件和合并后的文件
for
(
File
chunk
:
chunks
)
{
chunk
.
delete
();
}
mergedFile
.
delete
();
}
throw
new
ServiceException
(
"上传失败"
);
}
@Override
public
List
<
Integer
>
getUploadedChunks
(
String
filename
)
{
// 创建临时目录对象
File
tempDir
=
new
File
(
TEMP_DIR
);
// 获取临时目录下所有以指定文件名开头且包含 ".part" 的文件
File
[]
files
=
tempDir
.
listFiles
((
dir
,
name
)
->
name
.
startsWith
(
filename
+
".part"
));
// 如果没有找到相关文件,则返回空列表
if
(
files
==
null
)
{
return
new
ArrayList
<>();
}
// 提取每个文件的分片索引并收集到列表中返回
return
java
.
util
.
Arrays
.
stream
(
files
)
.
map
(
file
->
Integer
.
parseInt
(
file
.
getName
().
substring
(
file
.
getName
().
lastIndexOf
(
".part"
)
+
5
)))
.
collect
(
Collectors
.
toList
());
}
}
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java
浏览文件 @
8e1383e7
...
@@ -38,7 +38,7 @@ public class SysDictDataController extends BaseController {
...
@@ -38,7 +38,7 @@ public class SysDictDataController extends BaseController {
/**
/**
* 查询字典数据列表
* 查询字典数据列表
*/
*/
@SaCheckPermission
(
"system:dict:list"
)
//
@SaCheckPermission("system:dict:list")
@GetMapping
(
"/list"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
<
SysDictDataVo
>
list
(
SysDictDataBo
dictData
,
PageQuery
pageQuery
)
{
public
TableDataInfo
<
SysDictDataVo
>
list
(
SysDictDataBo
dictData
,
PageQuery
pageQuery
)
{
return
dictDataService
.
selectPageDictDataList
(
dictData
,
pageQuery
);
return
dictDataService
.
selectPageDictDataList
(
dictData
,
pageQuery
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论