From af815e00ee24debce269525554a20c811ad4b8aa Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 29 Sep 2025 10:37:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(video):=20=E6=96=B0=E5=A2=9E=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=AE=A1=E7=90=86=E4=B8=8EMinIO=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增算法模型实体类VModel及对应CRUD接口和实现 - 新增MinIO对象记录实体类VMinioObject及对应CRUD接口和实现 - 实现模型下载重定向功能 - 扩展MinioService支持指定文件名上传和删除对象 - 在CommonController中增加上传后持久化MinIO对象记录逻辑 - 新增ModelController用于模型管理RESTful接口- 新增VMinioObjectController用于MinIO对象记录管理接口 - 添加相关Mapper XML配置和DAO接口 - 更新pom.xml引入必要依赖 --- ruoyi-admin/pom.xml | 8 ++ .../controller/common/CommonController.java | 31 +++++- .../system/VMinioObjectController.java | 88 +++++++++++++++++ .../web/controller/video/ModelController.java | 97 +++++++++++++++++++ .../ruoyi/framework/service/MinioService.java | 32 ++++++ ruoyi-video/pom.xml | 4 + .../com/ruoyi/video/domain/VMinioObject.java | 36 +++++++ .../java/com/ruoyi/video/domain/VModel.java | 47 +++++++++ .../video/mapper/VMinioObjectMapper.java | 15 +++ .../com/ruoyi/video/mapper/VModelMapper.java | 16 +++ .../video/service/IVMinioObjectService.java | 13 +++ .../ruoyi/video/service/IVModelService.java | 14 +++ .../service/impl/VMinioObjectServiceImpl.java | 43 ++++++++ .../video/service/impl/VModelServiceImpl.java | 46 +++++++++ .../mapper/video/VMinioObjectMapper.xml | 58 +++++++++++ .../resources/mapper/video/VModelMapper.xml | 67 +++++++++++++ 16 files changed, 611 insertions(+), 4 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VMinioObjectController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/video/ModelController.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/domain/VMinioObject.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/domain/VModel.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/mapper/VMinioObjectMapper.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/mapper/VModelMapper.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/IVMinioObjectService.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/IVModelService.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VMinioObjectServiceImpl.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VModelServiceImpl.java create mode 100644 ruoyi-video/src/main/resources/mapper/video/VMinioObjectMapper.xml create mode 100644 ruoyi-video/src/main/resources/mapper/video/VModelMapper.xml diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 0d2c17c..c9f588c 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -62,6 +62,14 @@ org.springframework spring-context + + org.springframework + spring-web + + + org.springframework + spring-web + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index c17da6c..cf3017c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -22,6 +22,9 @@ import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.framework.config.MinioProperties; import com.ruoyi.framework.service.MinioService; +import com.ruoyi.video.service.IVMinioObjectService; +import com.ruoyi.video.domain.VMinioObject; +import com.ruoyi.common.utils.SecurityUtils; /** * 通用请求处理 @@ -43,6 +46,9 @@ public class CommonController @Autowired(required = false) private MinioProperties minioProperties; + @Autowired + private IVMinioObjectService vMinioObjectService; + private static final String FILE_DELIMETER = ","; /** @@ -87,9 +93,18 @@ public class CommonController { if (minioProperties != null && minioProperties.isEnabled()) { - MinioService.UploadResult result = minioService.upload(file); - String fileName = result.getObjectName(); + // 先生成唯一文件名(含扩展名),再用该名称上传 + String uniqueObjectName = FileUploadUtils.extractFilename(file); + MinioService.UploadResult result = minioService.uploadWithName(file, uniqueObjectName); + String fileName = result.getObjectName(); // 即 uniqueObjectName String url = result.getUrl(); + // persist to v_minio_object + VMinioObject record = new VMinioObject(); + record.setObjectName(fileName); + record.setUrl(url); + record.setOriginalName(file.getOriginalFilename()); + try { record.setCreateBy(SecurityUtils.getUsername()); } catch (Exception ignored) {} + vMinioObjectService.insert(record); AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); @@ -132,13 +147,21 @@ public class CommonController { for (MultipartFile file : files) { - MinioService.UploadResult result = minioService.upload(file); - String fileName = result.getObjectName(); + String uniqueObjectName = FileUploadUtils.extractFilename(file); + MinioService.UploadResult result = minioService.uploadWithName(file, uniqueObjectName); + String fileName = result.getObjectName(); // 即 uniqueObjectName String url = result.getUrl(); urls.add(url); fileNames.add(fileName); newFileNames.add(FileUtils.getName(fileName)); originalFilenames.add(file.getOriginalFilename()); + // persist each to v_minio_object + VMinioObject record = new VMinioObject(); + record.setObjectName(fileName); + record.setUrl(url); + record.setOriginalName(file.getOriginalFilename()); + try { record.setCreateBy(SecurityUtils.getUsername()); } catch (Exception ignored) {} + vMinioObjectService.insert(record); } } else diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VMinioObjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VMinioObjectController.java new file mode 100644 index 0000000..7d89d58 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VMinioObjectController.java @@ -0,0 +1,88 @@ +package com.ruoyi.web.controller.system; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.service.MinioService; +import com.ruoyi.video.domain.VMinioObject; +import com.ruoyi.video.service.IVMinioObjectService; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/system/minio-object") +public class VMinioObjectController { + + private final IVMinioObjectService vMinioObjectService; + private final MinioService minioService; + + public VMinioObjectController(IVMinioObjectService vMinioObjectService, + MinioService minioService) { + this.vMinioObjectService = vMinioObjectService; + this.minioService = minioService; + } + + /** + * 查询:根据主键ID查询一条记录 + */ + @GetMapping("/{id}") + public AjaxResult getById(@PathVariable("id") Long id) { + VMinioObject obj = vMinioObjectService.selectById(id); + if (obj == null) { + return AjaxResult.error("记录不存在"); + } + return AjaxResult.success(obj); + } + + /** + * 查询:根据唯一对象名查询 + */ + @GetMapping("/name/{objectName}") + public AjaxResult getByObjectName(@PathVariable("objectName") String objectName) { + VMinioObject obj = vMinioObjectService.selectByObjectName(objectName); + if (obj == null) { + return AjaxResult.error("记录不存在"); + } + return AjaxResult.success(obj); + } + + /** + * 删除:根据主键ID删除(先删 MinIO,后删数据库) + */ + @DeleteMapping("/{id}") + public AjaxResult deleteById(@PathVariable("id") Long id) { + VMinioObject obj = vMinioObjectService.selectById(id); + if (obj == null) { + return AjaxResult.error("记录不存在或已删除"); + } + String objectName = obj.getObjectName(); + if (StringUtils.isEmpty(objectName)) { + return AjaxResult.error("对象名为空,无法删除 MinIO 对象"); + } + try { + // 先删除 MinIO 中的对象,确保不留悬挂数据 + minioService.deleteObject(objectName); + } catch (Exception e) { + return AjaxResult.error("删除 MinIO 对象失败: " + e.getMessage()); + } + // 再删除数据库记录 + int rows = vMinioObjectService.deleteById(id); + return rows > 0 ? AjaxResult.success() : AjaxResult.error("删除数据库记录失败"); + } + + /** + * 删除:根据唯一对象名删除(先 MinIO,再 DB) + */ + @DeleteMapping("/name/{objectName}") + public AjaxResult deleteByObjectName(@PathVariable("objectName") String objectName) { + VMinioObject obj = vMinioObjectService.selectByObjectName(objectName); + if (obj == null) { + return AjaxResult.error("记录不存在或已删除"); + } + try { + minioService.deleteObject(objectName); + } catch (Exception e) { + return AjaxResult.error("删除 MinIO 对象失败: " + e.getMessage()); + } + int rows = vMinioObjectService.deleteByObjectName(objectName); + return rows > 0 ? AjaxResult.success() : AjaxResult.error("删除数据库记录失败"); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/video/ModelController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/video/ModelController.java new file mode 100644 index 0000000..e6c24e9 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/video/ModelController.java @@ -0,0 +1,97 @@ +package com.ruoyi.web.controller.video; + +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.video.domain.VModel; +import com.ruoyi.video.service.IVModelService; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/video/model") +public class ModelController { + + private final IVModelService modelService; + + public ModelController(IVModelService modelService) { + this.modelService = modelService; + } + + /** 新增模型(JSON) */ + @PostMapping + public AjaxResult create(@RequestBody VModel model) { + if (StringUtils.isEmpty(model.getModelName())) { + return AjaxResult.error("模型名称不能为空"); + } + if (StringUtils.isEmpty(model.getUrl())) { + return AjaxResult.error("模型URL不能为空"); + } + if (StringUtils.isEmpty(model.getFramework())) { + model.setFramework("onnx"); + } + int rows = modelService.insert(model); + return rows > 0 ? AjaxResult.success(model) : AjaxResult.error("新增失败"); + } + + /** 根据ID查询 */ + @GetMapping("/{id}") + public AjaxResult get(@PathVariable("id") Long id) { + VModel model = modelService.selectById(id); + return model != null ? AjaxResult.success(model) : AjaxResult.error("未找到记录"); + } + + /** 列表查询(可选条件) */ + @GetMapping("/list") + public AjaxResult list(@RequestParam(value = "modelName", required = false) String modelName, + @RequestParam(value = "framework", required = false) String framework, + @RequestParam(value = "enabled", required = false) Integer enabled, + @RequestParam(value = "keyword", required = false) String keyword) { + Map params = new HashMap<>(); + params.put("modelName", modelName); + params.put("framework", framework); + params.put("enabled", enabled); + params.put("keyword", keyword); + List list = modelService.selectList(params); + return AjaxResult.success(list); + } + + /** 删除 */ + @DeleteMapping("/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + int rows = modelService.deleteById(id); + return rows > 0 ? AjaxResult.success() : AjaxResult.error("删除失败"); + } + + /** 启用/禁用 */ + @PutMapping("/{id}/enable") + public AjaxResult enable(@PathVariable("id") Long id, + @RequestParam("enabled") Integer enabled) { + if (enabled == null || (enabled != 0 && enabled != 1)) { + return AjaxResult.error("enabled 仅支持 0 或 1"); + } + int rows = modelService.updateEnabled(id, enabled); + return rows > 0 ? AjaxResult.success() : AjaxResult.error("更新失败"); + } + + /** 下载:直接 302 重定向到模型URL,确保可点击下载 */ + @GetMapping("/download/{id}") + public void download(@PathVariable("id") Long id, HttpServletResponse response) throws IOException { + VModel model = modelService.selectById(id); + if (model == null || StringUtils.isEmpty(model.getUrl())) { + response.sendError(HttpServletResponse.SC_NOT_FOUND, "模型或URL不存在"); + return; + } + // 302 跳转到真实URL + String target = model.getUrl(); + response.setStatus(HttpServletResponse.SC_FOUND); + response.setHeader("Location", target); + response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(model.getModelName(), StandardCharsets.UTF_8) + ".onnx\""); + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/service/MinioService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/service/MinioService.java index 4bf2ebd..92fc5ae 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/service/MinioService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/service/MinioService.java @@ -4,6 +4,7 @@ import com.ruoyi.framework.config.MinioProperties; import com.ruoyi.common.utils.file.FileUploadUtils; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; +import io.minio.RemoveObjectArgs; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.springframework.beans.factory.annotation.Autowired; @@ -44,6 +45,25 @@ public class MinioService { return new UploadResult(objectName, url); } + /** + * Upload using the provided unique objectName. + */ + public UploadResult uploadWithName(MultipartFile file, String objectName) throws Exception { + ensureBucket(); + try (InputStream is = file.getInputStream()) { + minioClient.putObject( + PutObjectArgs.builder() + .bucket(properties.getBucket()) + .object(objectName) + .stream(is, file.getSize(), -1) + .contentType(file.getContentType()) + .build() + ); + } + String url = buildObjectUrl(objectName); + return new UploadResult(objectName, url); + } + public String buildObjectUrl(String objectName) { String endpoint = properties.getEndpoint(); if (endpoint.endsWith("/")) { @@ -63,6 +83,18 @@ public class MinioService { } } + /** + * Delete an object from MinIO by its object name (key). + */ + public void deleteObject(String objectName) throws Exception { + minioClient.removeObject( + RemoveObjectArgs.builder() + .bucket(properties.getBucket()) + .object(objectName) + .build() + ); + } + public static class UploadResult { private final String objectName; private final String url; diff --git a/ruoyi-video/pom.xml b/ruoyi-video/pom.xml index 984eb68..96da1cb 100644 --- a/ruoyi-video/pom.xml +++ b/ruoyi-video/pom.xml @@ -95,6 +95,10 @@ org.springframework spring-aop + + com.ruoyi + ruoyi-common + diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/domain/VMinioObject.java b/ruoyi-video/src/main/java/com/ruoyi/video/domain/VMinioObject.java new file mode 100644 index 0000000..e554150 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/domain/VMinioObject.java @@ -0,0 +1,36 @@ +package com.ruoyi.video.domain; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * MinIO 返回结果记录实体,对应表 v_minio_object + */ +public class VMinioObject extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 主键ID */ + private Long objectId; + /** MinIO 对象名(Key) */ + private String objectName; + /** 访问URL */ + private String url; + /** 原始文件名(上传时的文件名) */ + private String originalName; + /** 删除标志(0存在 2删除) */ + private String delFlag; + + public Long getObjectId() { return objectId; } + public void setObjectId(Long objectId) { this.objectId = objectId; } + + public String getObjectName() { return objectName; } + public void setObjectName(String objectName) { this.objectName = objectName; } + + public String getUrl() { return url; } + public void setUrl(String url) { this.url = url; } + + public String getOriginalName() { return originalName; } + public void setOriginalName(String originalName) { this.originalName = originalName; } + + public String getDelFlag() { return delFlag; } + public void setDelFlag(String delFlag) { this.delFlag = delFlag; } +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/domain/VModel.java b/ruoyi-video/src/main/java/com/ruoyi/video/domain/VModel.java new file mode 100644 index 0000000..44891bb --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/domain/VModel.java @@ -0,0 +1,47 @@ +package com.ruoyi.video.domain; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 算法模型(ONNX等)记录表 v_model + */ +public class VModel extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long modelId; + private String modelName; + private String version; + private String framework; // e.g., onnx + private String url; // OSS/MinIO 直链 + private Long fileSize; // bytes + private String checksum; // e.g., sha256 + private Integer enabled; // 1启用 0禁用 + private String delFlag; // 0存在 2删除 + + public Long getModelId() { return modelId; } + public void setModelId(Long modelId) { this.modelId = modelId; } + + public String getModelName() { return modelName; } + public void setModelName(String modelName) { this.modelName = modelName; } + + public String getVersion() { return version; } + public void setVersion(String version) { this.version = version; } + + public String getFramework() { return framework; } + public void setFramework(String framework) { this.framework = framework; } + + public String getUrl() { return url; } + public void setUrl(String url) { this.url = url; } + + public Long getFileSize() { return fileSize; } + public void setFileSize(Long fileSize) { this.fileSize = fileSize; } + + public String getChecksum() { return checksum; } + public void setChecksum(String checksum) { this.checksum = checksum; } + + public Integer getEnabled() { return enabled; } + public void setEnabled(Integer enabled) { this.enabled = enabled; } + + public String getDelFlag() { return delFlag; } + public void setDelFlag(String delFlag) { this.delFlag = delFlag; } +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VMinioObjectMapper.java b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VMinioObjectMapper.java new file mode 100644 index 0000000..2263a14 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VMinioObjectMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.video.mapper; + +import com.ruoyi.video.domain.VMinioObject; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface VMinioObjectMapper { + int insertVMinioObject(VMinioObject obj); + VMinioObject selectVMinioObjectById(@Param("id") Long id); + int deleteVMinioObjectById(@Param("id") Long id); + + VMinioObject selectVMinioObjectByObjectName(@Param("objectName") String objectName); + int deleteVMinioObjectByObjectName(@Param("objectName") String objectName); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VModelMapper.java b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VModelMapper.java new file mode 100644 index 0000000..0b5e8de --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/VModelMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.video.mapper; + +import com.ruoyi.video.domain.VModel; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +public interface VModelMapper { + int insertModel(VModel model); + VModel selectModelById(@Param("id") Long id); + int deleteModelById(@Param("id") Long id); + int updateEnabled(@Param("id") Long id, @Param("enabled") Integer enabled); + + List selectModelList(Map params); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/IVMinioObjectService.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/IVMinioObjectService.java new file mode 100644 index 0000000..ce55ee9 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/IVMinioObjectService.java @@ -0,0 +1,13 @@ +package com.ruoyi.video.service; + + +import com.ruoyi.video.domain.VMinioObject; + +public interface IVMinioObjectService { + int insert(VMinioObject obj); + VMinioObject selectById(Long id); + int deleteById(Long id); + + VMinioObject selectByObjectName(String objectName); + int deleteByObjectName(String objectName); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/IVModelService.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/IVModelService.java new file mode 100644 index 0000000..8658a7d --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/IVModelService.java @@ -0,0 +1,14 @@ +package com.ruoyi.video.service; + +import com.ruoyi.video.domain.VModel; + +import java.util.List; +import java.util.Map; + +public interface IVModelService { + int insert(VModel model); + VModel selectById(Long id); + int deleteById(Long id); + int updateEnabled(Long id, Integer enabled); + List selectList(Map params); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VMinioObjectServiceImpl.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VMinioObjectServiceImpl.java new file mode 100644 index 0000000..fdbaa51 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VMinioObjectServiceImpl.java @@ -0,0 +1,43 @@ +package com.ruoyi.video.service.impl; + +import com.ruoyi.video.domain.VMinioObject; +import com.ruoyi.video.mapper.VMinioObjectMapper; +import com.ruoyi.video.service.IVMinioObjectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class VMinioObjectServiceImpl implements IVMinioObjectService { + + @Autowired + private VMinioObjectMapper mapper; + + + @Override + public int insert(VMinioObject obj) { + if (obj.getDelFlag() == null) { + obj.setDelFlag("0"); + } + return mapper.insertVMinioObject(obj); + } + + @Override + public VMinioObject selectById(Long id) { + return mapper.selectVMinioObjectById(id); + } + + @Override + public int deleteById(Long id) { + return mapper.deleteVMinioObjectById(id); + } + + @Override + public VMinioObject selectByObjectName(String objectName) { + return mapper.selectVMinioObjectByObjectName(objectName); + } + + @Override + public int deleteByObjectName(String objectName) { + return mapper.deleteVMinioObjectByObjectName(objectName); + } +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VModelServiceImpl.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VModelServiceImpl.java new file mode 100644 index 0000000..ff75f15 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/VModelServiceImpl.java @@ -0,0 +1,46 @@ +package com.ruoyi.video.service.impl; + +import com.ruoyi.video.domain.VModel; +import com.ruoyi.video.mapper.VModelMapper; +import com.ruoyi.video.service.IVModelService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class VModelServiceImpl implements IVModelService { + + private final VModelMapper mapper; + + public VModelServiceImpl(VModelMapper mapper) { + this.mapper = mapper; + } + + @Override + public int insert(VModel model) { + if (model.getEnabled() == null) model.setEnabled(1); + if (model.getDelFlag() == null) model.setDelFlag("0"); + return mapper.insertModel(model); + } + + @Override + public VModel selectById(Long id) { + return mapper.selectModelById(id); + } + + @Override + public int deleteById(Long id) { + return mapper.deleteModelById(id); + } + + @Override + public int updateEnabled(Long id, Integer enabled) { + return mapper.updateEnabled(id, enabled); + } + + @Override + public List selectList(Map params) { + return mapper.selectModelList(params); + } +} diff --git a/ruoyi-video/src/main/resources/mapper/video/VMinioObjectMapper.xml b/ruoyi-video/src/main/resources/mapper/video/VMinioObjectMapper.xml new file mode 100644 index 0000000..59601bc --- /dev/null +++ b/ruoyi-video/src/main/resources/mapper/video/VMinioObjectMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + INSERT INTO v_minio_object ( + object_name, + url, + original_name, + create_by, + create_time, + update_by, + update_time, + remark, + del_flag + ) VALUES ( + #{objectName}, + #{url}, + #{originalName}, + #{createBy}, + NOW(), + #{updateBy}, + NOW(), + #{remark}, + #{delFlag} + ) + + + + + + DELETE FROM v_minio_object WHERE object_id = #{id} + + + + + + DELETE FROM v_minio_object WHERE object_name = #{objectName} + + + diff --git a/ruoyi-video/src/main/resources/mapper/video/VModelMapper.xml b/ruoyi-video/src/main/resources/mapper/video/VModelMapper.xml new file mode 100644 index 0000000..8ae5793 --- /dev/null +++ b/ruoyi-video/src/main/resources/mapper/video/VModelMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO v_model ( + model_name, version, framework, url, file_size, checksum, enabled, + create_by, create_time, update_by, update_time, remark, del_flag + ) VALUES ( + #{modelName}, #{version}, #{framework}, #{url}, #{fileSize}, #{checksum}, #{enabled}, + #{createBy}, NOW(), #{updateBy}, NOW(), #{remark}, #{delFlag} + ) + + + + + + DELETE FROM v_model WHERE model_id = #{id} + + + + UPDATE v_model SET enabled = #{enabled}, update_time = NOW() WHERE model_id = #{id} + + + + +