diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/controller/SysOssController.java b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/controller/SysOssController.java index 5396458b..42317e9c 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/controller/SysOssController.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/controller/SysOssController.java @@ -32,6 +32,7 @@ import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -58,6 +59,19 @@ public class SysOssController extends BaseController { return iSysOssService.queryPageList(bo, pageQuery); } + /** + * 查询OSS对象基于id串 + */ + @ApiOperation("查询OSS对象基于ID") + @SaCheckPermission("system:oss:list") + @GetMapping("/listByIds/{ossIds}") + public R> listByIds(@ApiParam("OSS对象ID串") + @NotEmpty(message = "主键不能为空") + @PathVariable Long[] ossIds) { + List list = iSysOssService.listByIds(Arrays.asList(ossIds)); + return R.ok(list); + } + /** * 上传OSS对象存储 */ diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/ISysOssService.java b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/ISysOssService.java index da298e75..2cfdcad1 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/ISysOssService.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/ISysOssService.java @@ -8,6 +8,7 @@ import com.ruoyi.resource.domain.vo.SysOssVo; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; +import java.util.List; /** * 文件上传 服务层 @@ -18,6 +19,8 @@ public interface ISysOssService { TableDataInfo queryPageList(SysOssBo sysOss, PageQuery pageQuery); + List listByIds(Collection ossIds); + SysOss getById(Long ossId); SysOss upload(MultipartFile file); diff --git a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/impl/SysOssServiceImpl.java index 5ff496f0..121a26e7 100644 --- a/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/impl/SysOssServiceImpl.java @@ -42,6 +42,11 @@ public class SysOssServiceImpl implements ISysOssService { return TableDataInfo.build(result); } + @Override + public List listByIds(Collection ossIds) { + return baseMapper.selectVoById(ossIds); + } + private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); diff --git a/ruoyi-ui/src/api/system/oss.js b/ruoyi-ui/src/api/system/oss.js index a7424728..d3b245a7 100644 --- a/ruoyi-ui/src/api/system/oss.js +++ b/ruoyi-ui/src/api/system/oss.js @@ -9,6 +9,14 @@ export function listOss(query) { }) } +// 查询OSS对象基于id串 +export function listByIds(ossId) { + return request({ + url: '/system/oss/listByIds/' + ossId, + method: 'get' + }) +} + // 删除OSS对象存储 export function delOss(ossId) { return request({ diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue index f01e879d..653b584c 100644 --- a/ruoyi-ui/src/components/FileUpload/index.vue +++ b/ruoyi-ui/src/components/FileUpload/index.vue @@ -82,19 +82,24 @@ export default { }, watch: { value: { - handler(val) { + async handler(val) { if (val) { let temp = 1; // 首先将值转为数组 - const list = Array.isArray(val) ? val : this.value.split(','); + let list; + if (Array.isArray(val)) { + list = val; + } else { + await listByIds(val).then(res => { + list = res.data.map(oss => { + oss = { name: oss.originalName, url: oss.url, ossId: oss.ossId }; + return oss; + }); + }) + } // 然后将数组转为对象数组 this.fileList = list.map(item => { - // 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来 - if (typeof item === "string") { - item = { name: item, url: item }; - } else { - item = { name: item.name, url: item.url, ossId: item.ossId }; - } + item = { name: item.name, url: item.url, ossId: item.ossId }; item.uid = item.uid || new Date().getTime() + temp++; return item; }); @@ -161,7 +166,7 @@ export default { this.fileList = this.fileList.concat(this.uploadList); this.uploadList = []; this.number = 0; - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); this.$modal.closeLoading(); } } else { @@ -174,7 +179,7 @@ export default { let ossId = this.fileList[index].ossId; delOss(ossId); this.fileList.splice(index, 1); - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); }, // 获取文件名称 getFileName(name) { @@ -184,6 +189,15 @@ export default { return name; } }, + // 对象转成指定字符串分隔 + listToString(list, separator) { + let strs = ""; + separator = separator || ","; + for (let i in list) { + strs += list[i].ossId + separator; + } + return strs != "" ? strs.substr(0, strs.length - 1) : ""; + }, } }; diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue index f27941de..5330a165 100644 --- a/ruoyi-ui/src/components/ImageUpload/index.vue +++ b/ruoyi-ui/src/components/ImageUpload/index.vue @@ -86,19 +86,21 @@ export default { }, watch: { value: { - handler(val) { + async handler(val) { if (val) { // 首先将值转为数组 - const list = Array.isArray(val) ? val : this.value.split(','); + let list; + if (Array.isArray(val)) { + list = val; + } else { + await listByIds(val).then(res => { + list = res.data; + }) + } // 然后将数组转为对象数组 this.fileList = list.map(item => { - // 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来 - if (typeof item === "string") { - item = { name: item, url: item }; - } else { - // 此处name使用ossId 防止删除出现重名 - item = { name: item.ossId, url: item.url, ossId: item.ossId }; - } + // 此处name使用ossId 防止删除出现重名 + item = { name: item.ossId, url: item.url, ossId: item.ossId }; return item; }); } else { @@ -124,7 +126,7 @@ export default { let ossId = this.fileList[findex].ossId; delOss(ossId); this.fileList.splice(findex, 1); - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); } }, // 上传成功回调 @@ -135,7 +137,7 @@ export default { this.fileList = this.fileList.concat(this.uploadList); this.uploadList = []; this.number = 0; - this.$emit("input", this.fileList); + this.$emit("input", this.listToString(this.fileList)); this.$modal.closeLoading(); } } else { @@ -188,6 +190,15 @@ export default { this.dialogImageUrl = file.url; this.dialogVisible = true; }, + // 对象转成指定字符串分隔 + listToString(list, separator) { + let strs = ""; + separator = separator || ","; + for (let i in list) { + strs += list[i].ossId + separator; + } + return strs != "" ? strs.substr(0, strs.length - 1) : ""; + }, } };