From 1ec3950d5241974b913d042d6eacbcc15fa1a248 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 5 Nov 2025 14:42:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8=E5=88=86?= =?UTF-8?q?=E6=9E=90=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sdm/data/dao/FileStorageMapper.java | 33 +++++++ .../sdm/data/dao/FileStorageQuotaMapper.java | 16 +++ .../sdm/data/model/entity/FileStorage.java | 81 +++++++++++++++ .../data/model/entity/FileStorageQuota.java | 56 +++++++++++ .../service/IFileStorageQuotaService.java | 16 +++ .../sdm/data/service/IFileStorageService.java | 28 ++++++ .../impl/FileStorageQuotaServiceImpl.java | 20 ++++ .../service/impl/FileStorageServiceImpl.java | 43 ++++++++ .../resources/mapper/FileStorageMapper.xml | 99 +++++++++++++++++++ .../mapper/FileStorageQuotaMapper.xml | 5 + 10 files changed, 397 insertions(+) create mode 100644 data/src/main/java/com/sdm/data/dao/FileStorageMapper.java create mode 100644 data/src/main/java/com/sdm/data/dao/FileStorageQuotaMapper.java create mode 100644 data/src/main/java/com/sdm/data/model/entity/FileStorage.java create mode 100644 data/src/main/java/com/sdm/data/model/entity/FileStorageQuota.java create mode 100644 data/src/main/java/com/sdm/data/service/IFileStorageQuotaService.java create mode 100644 data/src/main/java/com/sdm/data/service/IFileStorageService.java create mode 100644 data/src/main/java/com/sdm/data/service/impl/FileStorageQuotaServiceImpl.java create mode 100644 data/src/main/java/com/sdm/data/service/impl/FileStorageServiceImpl.java create mode 100644 data/src/main/resources/mapper/FileStorageMapper.xml create mode 100644 data/src/main/resources/mapper/FileStorageQuotaMapper.xml diff --git a/data/src/main/java/com/sdm/data/dao/FileStorageMapper.java b/data/src/main/java/com/sdm/data/dao/FileStorageMapper.java new file mode 100644 index 00000000..d58d3d4f --- /dev/null +++ b/data/src/main/java/com/sdm/data/dao/FileStorageMapper.java @@ -0,0 +1,33 @@ +package com.sdm.data.dao; + +import com.sdm.data.model.dto.NodeSizeDTO; +import com.sdm.data.model.dto.UserTotalFileSizeDTO; +import com.sdm.data.model.entity.FileStorage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *
+ * 文件存储统计主表(支持项目/学科/用户维度的存储占用统计) Mapper 接口 + *
+ * + * @author author + * @since 2025-11-04 + */ +public interface FileStorageMapper extends BaseMapper+ * 文件存储-用户存储配额表(支持TB/GB/MB/KB多单位) Mapper 接口 + *
+ * + * @author author + * @since 2025-11-05 + */ +public interface FileStorageQuotaMapper extends BaseMapper+ * 文件存储统计主表(支持项目/学科/用户维度的存储占用统计) + *
+ * + * @author author + * @since 2025-11-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("file_storage") +@ApiModel(value="FileStorage对象", description="文件存储统计主表(支持项目/学科/用户维度的存储占用统计)") +public class FileStorage implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID(自增)") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "文件名(含后缀)") + @TableField("fileName") + private String fileName; + + @ApiModelProperty(value = "文件唯一标识ID(关联文件元数据表)") + @TableField("fileId") + private Long fileId; + + @ApiModelProperty(value = "用户组ID") + @TableField("userGroupId") + private Long userGroupId; + + @ApiModelProperty(value = "文件所属用户ID") + @TableField("userId") + private Long userId; + + @ApiModelProperty(value = "目录ID(项目/学科等目录的唯一标识)") + @TableField("dirId") + private Long dirId; + + @ApiModelProperty(value = "文件类型(如txt、jpg、pdf)") + @TableField("fileType") + private String fileType; + + @ApiModelProperty(value = "文件大小(字节数,存储占用计算依据)") + @TableField("fileSize") + private Long fileSize; + + @ApiModelProperty(value = "文件创建时间(精确到秒,自动填充当前时间)") + @TableField("createTime") + private LocalDateTime createTime; + + @ApiModelProperty(value = "记录更新时间(自动更新)") + @TableField("updateTime") + private LocalDateTime updateTime; + + @ApiModelProperty(value = "文件完整路径(冗余字段,优化查询)") + @TableField("fullPath") + private String fullPath; + + @ApiModelProperty(value = "创建时间年月(冗余列,格式YYYY-MM,用于分组统计)") + @TableField("createYearMonth") + private String createYearMonth; + + +} diff --git a/data/src/main/java/com/sdm/data/model/entity/FileStorageQuota.java b/data/src/main/java/com/sdm/data/model/entity/FileStorageQuota.java new file mode 100644 index 00000000..3b36cc08 --- /dev/null +++ b/data/src/main/java/com/sdm/data/model/entity/FileStorageQuota.java @@ -0,0 +1,56 @@ +package com.sdm.data.model.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *+ * 文件存储-用户存储配额表(支持TB/GB/MB/KB多单位) + *
+ * + * @author author + * @since 2025-11-05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("file_storage_quota") +@ApiModel(value="FileStorageQuota对象", description="文件存储-用户存储配额表(支持TB/GB/MB/KB多单位)") +public class FileStorageQuota implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID(自增)") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "关联用户表sys_user的id(唯一标识用户)") + @TableField("userId") + private Long userId; + + @ApiModelProperty(value = "存储阈值(单位:字节)") + @TableField("quotaValue") + private Long quotaValue; + + @ApiModelProperty(value = "阈值显示单位(枚举:TB/GB/MB/KB)") + @TableField("quotaUnit") + private String quotaUnit; + + @ApiModelProperty(value = "已使用存储(单位:字节)") + @TableField("usedValue") + private Long usedValue; + + @ApiModelProperty(value = "配额状态(枚举:NORMAL-正常/WARNING-临界/EXCEED-超限)") + @TableField("status") + private String status; + + +} diff --git a/data/src/main/java/com/sdm/data/service/IFileStorageQuotaService.java b/data/src/main/java/com/sdm/data/service/IFileStorageQuotaService.java new file mode 100644 index 00000000..7955e2ab --- /dev/null +++ b/data/src/main/java/com/sdm/data/service/IFileStorageQuotaService.java @@ -0,0 +1,16 @@ +package com.sdm.data.service; + +import com.sdm.data.model.entity.FileStorageQuota; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *+ * 文件存储-用户存储配额表(支持TB/GB/MB/KB多单位) 服务类 + *
+ * + * @author author + * @since 2025-11-05 + */ +public interface IFileStorageQuotaService extends IService+ * 文件存储统计主表(支持项目/学科/用户维度的存储占用统计) 服务类 + *
+ * + * @author author + * @since 2025-11-04 + */ +public interface IFileStorageService extends IService+ * 文件存储-用户存储配额表(支持TB/GB/MB/KB多单位) 服务实现类 + *
+ * + * @author author + * @since 2025-11-05 + */ +@Service +public class FileStorageQuotaServiceImpl extends ServiceImpl+ * 文件存储统计主表(支持项目/学科/用户维度的存储占用统计) 服务实现类 + *
+ * + * @author author + * @since 2025-11-04 + */ +@Service +public class FileStorageServiceImpl extends ServiceImpl