瀏覽代碼

Merge remote-tracking branch 'origin/dev' into dev

honorfire 8 月之前
父節點
當前提交
39483d3f9a
共有 23 個文件被更改,包括 1096 次插入33 次删除
  1. 1 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/component/FileDealComp.java
  2. 38 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/config/plus/MybatisPlusConfig.java
  3. 56 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ExamineController.java
  4. 3 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/FileStasticController.java
  5. 21 20
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/FiletransferController.java
  6. 3 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/OperationLogBeanController.java
  7. 88 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/StorageController.java
  8. 71 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CapacityAuditInfo.java
  9. 84 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/Examine.java
  10. 10 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/storage/GetUserStorageDTO.java
  11. 45 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CapacityAuditInfoMapper.java
  12. 32 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ExamineMapper.java
  13. 2 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StorageMapper.java
  14. 48 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CapacityAuditInfoMapper.xml
  15. 33 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ExamineMapper.xml
  16. 32 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ExamineService.java
  17. 59 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IStorageService.java
  18. 44 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ExamineServiceImpl.java
  19. 157 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/StorageService.java
  20. 51 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/PageQuery.java
  21. 79 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/TableDataInfo.java
  22. 49 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/examine/ExamineVo.java
  23. 90 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/storage/CapacityAuditInfoVo.java

+ 1 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/component/FileDealComp.java

@@ -346,7 +346,7 @@ public class FileDealComp {
             log.debug(JSON.toJSONString(userFile));
             if ("undefined".equals(shareBatchNum) || StringUtils.isEmpty(shareBatchNum)) {
 
-//                String userId = userService.getUserIdByToken(token);
+               // String userId = userService.getUserIdByToken(token);
                 String userId = StpLoginUserUtil.getLoginUser().getId();
 //                log.debug(JSON.toJSONString("当前登录session用户id:" + userId));
                 if (userId == null) {

+ 38 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/config/plus/MybatisPlusConfig.java

@@ -0,0 +1,38 @@
+package vip.xiaonuo.disk.config.plus;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/*******************************************************
+ * mybatis-plus分页拦截插件
+ * @ClassName : MybatisPlusConfig
+ * @author: lin xue peng
+ * @time: 2023-06-09 13:23:24
+  * *****************************************************/
+@Configuration
+@MapperScan("vip.xiaonuo.disk.mapper")
+public class MybatisPlusConfig {
+
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
+        interceptor.addInnerInterceptor(paginationInnerInterceptor);
+        return interceptor;
+    }
+
+
+    /**
+     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
+     */
+//    @Bean
+//    public ConfigurationCustomizer configurationCustomizer() {
+//        return configuration -> configuration.setUseDeprecatedExecutor(false);
+//    }
+
+}

+ 56 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ExamineController.java

@@ -0,0 +1,56 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.disk.domain.Examine;
+import vip.xiaonuo.disk.service.ExamineService;
+import vip.xiaonuo.disk.util.PageQuery;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.examine.ExamineVo;
+
+import javax.annotation.Resource;
+
+/**
+ * examine控制器
+ *
+ * @author pans
+ * @date  2025/06/19 11:21
+ */
+@Api(tags = "examine控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+@RequestMapping("/examine")
+public class ExamineController {
+
+    @Resource
+    private ExamineService examineService;
+
+    @Operation(summary = "资源概览存储空间统计接口", description = "资源概览存储空间统计接口")
+    @RequestMapping(value = "/queryList", method = RequestMethod.GET)
+    @ResponseBody
+    public TableDataInfo<ExamineVo> queryList(Examine examine, PageQuery pageQuery) {
+        return examineService.queryList(examine,pageQuery);
+    }
+
+
+
+}

+ 3 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/FileStasticController.java

@@ -1,6 +1,5 @@
 package vip.xiaonuo.disk.controller;
 
-import com.qiwenshare.common.result.RestResult;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -8,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.service.FileStasticService;
 
 import javax.annotation.Resource;
@@ -26,9 +26,9 @@ public class FileStasticController {
     @Operation(summary = "资源概览存储空间统计接口", description = "资源概览存储空间统计接口")
     @RequestMapping(value = "/queryList", method = RequestMethod.GET)
     @ResponseBody
-    public RestResult<Map<String, Object>> queryList() {
+    public CommonResult<Map<String, Object>> queryList() {
         Map<String, Object> map= fileStasticService.queryList();
-        return RestResult.success().data(map);
+        return CommonResult.data(map);
     }
 
 

+ 21 - 20
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/FiletransferController.java

@@ -344,18 +344,19 @@ public class FiletransferController {
         }
         // token逻辑去掉
         String token = "";
+     //   token=httpServletRequest.getHeader("token");
 
         UserFile userFile = userFileService.getById(previewDTO.getUserFileId());
-        boolean authResult = fileDealComp.checkAuthDownloadAndPreview(previewDTO.getShareBatchNum(),
-                previewDTO.getExtractionCode(),
-                token,
-                previewDTO.getUserFileId(),
-                previewDTO.getPlatform());
-
-        if (!authResult) {
-            log.error("没有权限预览!!!");
-            return;
-        }
+//        boolean authResult = fileDealComp.checkAuthDownloadAndPreview(previewDTO.getShareBatchNum(),
+//                previewDTO.getExtractionCode(),
+//                token,
+//                previewDTO.getUserFileId(),
+//                previewDTO.getPlatform());
+//
+//        if (!authResult) {
+//            log.error("没有权限预览!!!");
+//            return;
+//        }
 
         String fileName = userFile.getFileName() + "." + userFile.getExtendName();
         try {
@@ -449,16 +450,16 @@ public class FiletransferController {
         String token = "";
 
         UserFile userFile = userFileService.getById(previewDTO.getUserFileId());
-        boolean authResult = fileDealComp.checkAuthDownloadAndPreview(previewDTO.getShareBatchNum(),
-                previewDTO.getExtractionCode(),
-                token,
-                previewDTO.getUserFileId(),
-                previewDTO.getPlatform());
-
-        if (!authResult) {
-            log.error("没有权限预览!!!");
-            return;
-        }
+//        boolean authResult = fileDealComp.checkAuthDownloadAndPreview(previewDTO.getShareBatchNum(),
+//                previewDTO.getExtractionCode(),
+//                token,
+//                previewDTO.getUserFileId(),
+//                previewDTO.getPlatform());
+//
+//        if (!authResult) {
+//            log.error("没有权限预览!!!");
+//            return;
+//        }
 
         String fileName = userFile.getFileName() + "." + userFile.getExtendName();
         try {

+ 3 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/OperationLogBeanController.java

@@ -1,6 +1,5 @@
 package vip.xiaonuo.disk.controller;
 
-import com.qiwenshare.common.result.RestResult;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -8,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.service.IOperationLogService;
 import vip.xiaonuo.disk.vo.operationLog.OperationLogBeanVo;
 
@@ -25,9 +25,9 @@ public class OperationLogBeanController {
     @Operation(summary = "获取操作日志列表", description = "获取操作日志列表", tags = {"file"})
     @RequestMapping(value = "/getList", method = RequestMethod.GET)
     @ResponseBody
-    public RestResult<OperationLogBeanVo> getList(String type){
+    public CommonResult<List<OperationLogBeanVo>> getList(String type){
         List<OperationLogBeanVo> list =iOperationLogService.selectOperationLog(type);
-        return RestResult.success().dataList(list, list.size());
+        return CommonResult.data(list);
     }
 
 }

+ 88 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/StorageController.java

@@ -1,13 +1,17 @@
 package vip.xiaonuo.disk.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qiwenshare.common.result.RestResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.domain.CapacityAuditInfo;
 import vip.xiaonuo.disk.domain.StorageBean;
 import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
 import vip.xiaonuo.disk.service.IStorageService;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo;
 import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
 
 import javax.annotation.Resource;
@@ -55,7 +59,7 @@ public class StorageController {
      * @return 所有用户的存储空间大小
      */
     @PostMapping("/storage/getUserStorageList")
-    public CommonResult<Page<StorageBeanVO>> getUserStorageList(@RequestBody GetUserStorageDTO getUserStorageDTO) {
+    public CommonResult<TableDataInfo<StorageBeanVO>> getUserStorageList(@RequestBody GetUserStorageDTO getUserStorageDTO) {
         return storageService.getUserStorageList(getUserStorageDTO);
     }
 
@@ -72,7 +76,90 @@ public class StorageController {
     }
 
 
+    /**
+     * 用户查看自己的存储空间大小 单位MB
+     *
+     * @return 用户存储空间大小
+     */
+    @GetMapping("/storage/getUserStorage")
+    public CommonResult<Long> getUserStorage() {
+        return storageService.getUserStorage();
+    }
+
+
+    /**
+     * 提交改变存储空间大小的申请
+     *
+     * @param capacityAuditInfo 申请信息
+     *
+     * @return 提交结果
+     */
+    @PostMapping("/storage/applyChangeStorage")
+    public CommonResult<String> applyChangeStorage(@RequestBody CapacityAuditInfo capacityAuditInfo) {
+        return storageService.applyChangeStorage(capacityAuditInfo);
+    }
+
+    /**
+     * 查询存储空间大小变更申请列表
+     *
+     * @param auditState 申请状态 0待审核 1审核通过 2拒绝
+     * @param pageNum 页码
+     * @param pageSize 页大小
+     * @param usernameOrNickname 用户名或昵称
+     *
+     * @return 存储空间大小变更申请列表
+     */
+    @GetMapping("/storage/getCapacityAuditList")
+    public CommonResult<TableDataInfo<CapacityAuditInfoVo>> getCapacityAuditList(@RequestParam(value = "pageNum") Integer pageNum,
+                                                                         @RequestParam(value = "pageSize") Integer pageSize,
+                                                                         @RequestParam(value = "auditState", required = false) Integer auditState,
+                                                                         @RequestParam(value = "usernameOrNickname", required = false) String usernameOrNickname) {
+        return storageService.getCapacityAuditList(pageNum, pageSize, auditState, usernameOrNickname);
+    }
 
+    /**
+     * 查询存储空间大小变更申请详情
+     *
+     * @param id 申请ID
+     * @return 申请详情
+     */
+    @GetMapping("/storage/getCapacityAuditDetail")
+    public CommonResult<CapacityAuditInfoVo> getCapacityAuditDetail(@RequestParam(value = "id") String id) {
+        return storageService.getCapacityAuditDetail(id);
+    }
+
+
+    /**
+     * 审核扩容申请
+     *
+     * @param id 申请ID
+     * @param auditState 审核状态
+     * @param rejectReason 拒绝原因
+     * @return 审核结果
+     */
+    @GetMapping("/storage/auditCapacityAudit")
+    public CommonResult<String> auditCapacityAudit(@RequestParam(value = "id") String id,
+                                                   @RequestParam(value = "auditState") Integer auditState,
+                                                   @RequestParam(value = "rejectReason", required = false) String rejectReason) {
+        return storageService.auditCapacityAudit(id, auditState, rejectReason);
+    }
+
+
+    /**
+     * 用户查看自己申请记录列表
+     *
+     * @param pageNum 页码
+     * @param pageSize 页大小
+     * @param auditState 申请状态 0待审核 1审核通过 2拒绝
+     *
+     * @return 申请记录列表
+     */
+    @GetMapping("/storage/getUserCapacityAuditList")
+    public CommonResult<TableDataInfo<CapacityAuditInfoVo>> getUserCapacityAuditList(@RequestParam(value = "pageNum") Integer pageNum,
+                                                                             @RequestParam(value = "pageSize") Integer pageSize,
+                                                                             @RequestParam(value = "auditState", required = false) Integer auditState) {
+        return storageService.getUserCapacityAuditList(pageNum, pageSize, auditState);
+    }
 
 
 

+ 71 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/CapacityAuditInfo.java

@@ -0,0 +1,71 @@
+package vip.xiaonuo.disk.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import vip.xiaonuo.common.pojo.CommonEntity;
+
+import java.util.Date;
+
+/**
+ * 容量审核信息表
+ *
+ * @author jinjilong
+ */
+@Data
+@TableName(value = "CAPACITY_AUDIT_INFO", autoResultMap = true)
+public class CapacityAuditInfo extends CommonEntity {
+
+    /** id */
+    @TableId
+    @ApiModelProperty(value = "id", position = 1)
+    private String id;
+
+    /**
+     * 申请人用户ID
+     */
+    private String applicantUserId;
+
+    /**
+     * 审核状态 0待审核 1审核通过 2审核拒绝
+     */
+    private Integer auditState;
+
+    /**
+     * 审核拒绝原因
+     */
+    private String rejectReason;
+
+    /**
+     * 申请后容量 单位MB
+     */
+    private Long applicantAfterCapacity;
+
+    /**
+     * 申请时间
+     */
+    private Date applicantTime;
+
+    /**
+     * 审核时间
+     */
+    private Date auditTime;
+
+    /**
+     * 审核人用户ID
+     */
+    private String auditUserId;
+
+    /**
+     * 扩容申请事由
+     */
+    private String applicantReason;
+
+    /**
+     * 申请前容量 单位MB
+     */
+    private Long applicantBeforeCapacity;
+
+
+}

+ 84 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/domain/Examine.java

@@ -0,0 +1,84 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * examine实体
+ *
+ * @author pans
+ * @date  2025/06/19 11:21
+ **/
+@Getter
+@Setter
+@TableName("examine")
+public class Examine {
+
+    /** 主键id */
+    @TableId
+    @ApiModelProperty(value = "主键id", position = 1)
+    private Long id;
+
+    /** 资源id */
+    @ApiModelProperty(value = "资源id", position = 2)
+    private String targetId;
+
+    /** 审核状态 (0未审核  1已审核) */
+    @ApiModelProperty(value = "审核状态 (0未审核  1已审核)", position = 3)
+    private String examineStatus;
+
+    /** 删除标志 0未删除  1已删除 */
+    @ApiModelProperty(value = "删除标志 0未删除  1已删除", position = 4)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private Integer deleteFlag;
+
+    /** 创建者 */
+    @ApiModelProperty(value = "创建者", position = 5)
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 6)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 修改者 */
+    @ApiModelProperty(value = "修改者", position = 7)
+    @TableField(fill = FieldFill.UPDATE)
+    private Integer updateUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 8)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 审批人 */
+    @ApiModelProperty(value = "审批人", position = 9)
+    private String examineUser;
+
+    /** 审批时间 */
+    @ApiModelProperty(value = "审批时间", position = 10)
+    private Date examineTime;
+
+    private String orgName;
+
+    private String fileName;
+
+}

+ 10 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/storage/GetUserStorageDTO.java

@@ -56,6 +56,16 @@ public class GetUserStorageDTO {
     @ApiModelProperty(value = "每页条数")
     private Integer size;
 
+    /**
+     * 分页大小
+     */
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    private Integer pageNum;
+
     /** 排序字段 */
     @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
     private String sortField;

+ 45 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CapacityAuditInfoMapper.java

@@ -0,0 +1,45 @@
+package vip.xiaonuo.disk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.disk.domain.CapacityAuditInfo;
+import vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo;
+
+/**
+ * 容量审核信息表 mapper
+ *
+ * @author jinjilong
+ */
+public interface CapacityAuditInfoMapper extends BaseMapper<CapacityAuditInfo> {
+
+    /**
+     * 获取容量审核信息列表
+     *
+     * @param page 分页对象
+     * @param auditState 审核状态
+     * @param usernameOrNickname 用户名或昵称
+     * @return 容量审核信息列表
+     */
+    Page<CapacityAuditInfoVo> getCapacityAuditList(@Param("page") Page<?> page, @Param("auditState") Integer auditState, @Param("usernameOrNickname") String usernameOrNickname);
+
+    /**
+     * 查询存储空间大小变更申请详情
+     *
+     * @param id 申请ID
+     * @return 申请详情
+     */
+    CapacityAuditInfoVo getCapacityAuditById(@Param("id") String id);
+
+    /**
+     * 查询用户的申请记录列表
+     *
+     * @param page 分页对象
+     * @param auditState 审核状态
+     * @param id 用户ID
+     *
+     * @return 申请记录列表
+     */
+    Page<CapacityAuditInfoVo> getUserCapacityAuditList(@Param("page") Page<?> page, @Param("auditState") Integer auditState, @Param("id") String id);
+
+}

+ 32 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ExamineMapper.java

@@ -0,0 +1,32 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.disk.domain.Examine;
+import vip.xiaonuo.disk.vo.examine.ExamineVo;
+
+
+/**
+ * examineMapper接口
+ *
+ * @author pans
+ * @date  2025/06/19 11:21
+ **/
+@Mapper
+public interface ExamineMapper extends BaseMapper<Examine> {
+    Page<ExamineVo> queryList(@Param("examine") Examine examine,@Param("page")  Page<Object> build);
+}

+ 2 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StorageMapper.java

@@ -2,6 +2,7 @@ package vip.xiaonuo.disk.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.apache.poi.ss.formula.functions.T;
@@ -19,7 +20,7 @@ public interface StorageMapper  extends BaseMapper<StorageBean> {
      * @param getUserStorageDTO 查询条件
      * @return 用户存储列表
      */
-    Page<StorageBeanVO> getUserStorageList(@Param("page") Page<Object> page, @Param("getUserStorageDTO") GetUserStorageDTO getUserStorageDTO);
+    Page<StorageBeanVO> getUserStorageList(@Param("page") Page<?> page, @Param("getUserStorageDTO") GetUserStorageDTO getUserStorageDTO);
 
     /**
      * 根据用户ID获取角色名称列表

+ 48 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CapacityAuditInfoMapper.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="vip.xiaonuo.disk.mapper.CapacityAuditInfoMapper">
+
+
+    <select id="getCapacityAuditList" resultType="vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo">
+        select ca.*,
+               us.ACCOUNT as username,
+               us.NAME as nickName
+        from CAPACITY_AUDIT_INFO as ca left join SYS_USER as us on ca.APPLICANT_USER_ID = us.ID
+        <where>
+            us.DELETE_FLAG = 'NOT_DELETE'
+            <if test="auditState != null">
+                AND ca.AUDIT_STATE = #{auditState}
+            </if>
+            <if test="usernameOrNickname != null and usernameOrNickname != ''">
+                and (us.NAME LIKE CONCAT('%', #{usernameOrNickname}, '%') OR us.ACCOUNT LIKE CONCAT('%', #{usernameOrNickname}, '%'))
+            </if>
+        </where>
+        order by ca.CREATE_TIME desc
+    </select>
+
+    <select id="getCapacityAuditById" resultType="vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo">
+        select ca.*,
+               us.ACCOUNT as username,
+               us.NAME as nickName
+        from CAPACITY_AUDIT_INFO as ca left join SYS_USER as us on ca.APPLICANT_USER_ID = us.ID
+        where us.DELETE_FLAG = 'NOT_DELETE' and ca.ID = #{id}
+    </select>
+
+    <select id="getUserCapacityAuditList" resultType="vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo">
+        select ca.*,
+               us.ACCOUNT as username,
+               us.NAME as nickName
+        from CAPACITY_AUDIT_INFO as ca left join SYS_USER as us on ca.APPLICANT_USER_ID = us.ID
+        <where>
+            us.DELETE_FLAG = 'NOT_DELETE' and us.ID = #{id}
+            <if test="auditState != null">
+                AND ca.AUDIT_STATE = #{auditState}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 33 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ExamineMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="vip.xiaonuo.disk.mapper.ExamineMapper">
+  <select id="queryList" resultType="vip.xiaonuo.disk.vo.examine.ExamineVo">
+      SELECT
+          a.user_file_id userFileId,
+          a.file_id fileId,
+          a.file_name fileName,
+          a.examine_user examineUser,
+          a.examine_status examineStatus,
+          a.examine_reason examineReason,
+          a.create_time createTime,
+          b.file_size fileSize,
+          o.name orgName
+      FROM
+          userfile a
+      LEFT JOIN FILE b ON
+      a.file_id = b.file_id
+      LEFT JOIN sys_user su ON a.CREATE_USER_ID=su.id
+      LEFT JOIN sys_org o ON su.ORG_ID =o.id
+      <where>
+          <if test="examine.examineStatus!=null">
+              a.examine_status = #{examine.examineStatus}
+          </if>
+          <if test="examine.fileName!=null">
+              and a.file_name like concat('%',#{examine.fileName},'%')
+          </if>
+          <if test="examine.orgName!=null">
+             and o.name like concat('%',#{examine.orgName},'%')
+          </if>
+      </where>
+  </select>
+</mapper>

+ 32 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ExamineService.java

@@ -0,0 +1,32 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.disk.domain.Examine;
+import vip.xiaonuo.disk.util.PageQuery;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.examine.ExamineVo;
+
+/**
+ * examineService接口
+ *
+ * @author pans
+ * @date  2025/06/19 11:21
+ **/
+public interface ExamineService extends IService<Examine> {
+
+
+    TableDataInfo<ExamineVo> queryList(Examine examine, PageQuery pageQuery);
+}

+ 59 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IStorageService.java

@@ -1,11 +1,15 @@
 package vip.xiaonuo.disk.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qiwenshare.common.result.RestResult;
 import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.domain.CapacityAuditInfo;
 import vip.xiaonuo.disk.domain.StorageBean;
 import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo;
 import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
 
 import java.util.List;
@@ -33,7 +37,7 @@ public interface IStorageService extends IService<StorageBean> {
      *
      * @return 所有用户的存储空间大小
      */
-    CommonResult<Page<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO);
+    CommonResult<TableDataInfo<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO);
 
     /**
      * 更改用户的存储空间大小 单位MB
@@ -43,4 +47,58 @@ public interface IStorageService extends IService<StorageBean> {
      * @return 更改结果
      */
     CommonResult<String> updateUserStorage(GetUserStorageDTO getUserStorageDTO);
+
+    /**
+     * 用户查看自己的存储空间大小 单位MB
+     *
+     * @return 用户存储空间大小
+     */
+    CommonResult<Long> getUserStorage();
+
+    /**
+     * 提交改变存储空间大小的申请
+     *
+     * @param capacityAuditInfo 申请信息
+     *
+     * @return 提交结果
+     */
+    CommonResult<String> applyChangeStorage(CapacityAuditInfo capacityAuditInfo);
+
+    /**
+     * 查看申请扩容审核列表
+     *
+     * @param objectPage 分页参数
+     * @param auditState 审核状态
+     * @param usernameOrNickname 用户名或昵称
+     * @return 审核列表信息
+     */
+    CommonResult<TableDataInfo<CapacityAuditInfoVo>> getCapacityAuditList(Integer pageNum, Integer pageSize, Integer auditState, String usernameOrNickname);
+
+    /**
+     * 查询存储空间大小变更申请详情
+     *
+     * @param id 申请ID
+     * @return 申请详情
+     */
+    CommonResult<CapacityAuditInfoVo> getCapacityAuditDetail(String id);
+
+    /**
+     * 审核扩容申请
+     *
+     * @param id 申请ID
+     * @param auditState 审核状态
+     * @param rejectReason 拒绝原因
+     * @return 审核结果
+     */
+    CommonResult<String> auditCapacityAudit(String id, Integer auditState, String rejectReason);
+
+    /**
+     * 用户查看自己申请记录列表
+     *
+     * @param objectPage 分页参数
+     * @param auditState 申请状态 0待审核 1审核通过 2拒绝
+     *
+     * @return 申请记录列表
+     */
+    CommonResult<TableDataInfo<CapacityAuditInfoVo>> getUserCapacityAuditList(Integer pageNum, Integer pageSize, Integer auditState);
 }

+ 44 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ExamineServiceImpl.java

@@ -0,0 +1,44 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.disk.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import vip.xiaonuo.disk.domain.Examine;
+import vip.xiaonuo.disk.mapper.ExamineMapper;
+import vip.xiaonuo.disk.service.ExamineService;
+import vip.xiaonuo.disk.util.PageQuery;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.examine.ExamineVo;
+
+import javax.annotation.Resource;
+
+/**
+ * examineService接口实现类
+ *
+ * @author pans
+ * @date  2025/06/19 11:21
+ **/
+@Service
+public class ExamineServiceImpl extends ServiceImpl<ExamineMapper, Examine> implements ExamineService {
+    @Resource
+    private ExamineMapper examineMapper;
+
+    @Override
+    public TableDataInfo<ExamineVo> queryList(Examine examine, PageQuery pageQuery) {
+        Page<ExamineVo> sclist=examineMapper.queryList(examine,pageQuery.build());
+        return TableDataInfo.build(sclist);
+    }
+}

+ 157 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/StorageService.java

@@ -1,13 +1,19 @@
 package vip.xiaonuo.disk.service.impl;
 
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qiwenshare.common.result.RestResult;
+import org.apache.commons.lang3.StringUtils;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.domain.CapacityAuditInfo;
 import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
+import vip.xiaonuo.disk.mapper.CapacityAuditInfoMapper;
 import vip.xiaonuo.disk.service.IStorageService;
 import vip.xiaonuo.disk.domain.StorageBean;
 import vip.xiaonuo.disk.domain.SysParam;
@@ -17,9 +23,13 @@ import vip.xiaonuo.disk.mapper.UserFileMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.disk.util.PageQuery;
+import vip.xiaonuo.disk.util.TableDataInfo;
+import vip.xiaonuo.disk.vo.storage.CapacityAuditInfoVo;
 import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -33,6 +43,9 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
     @Resource
     UserFileMapper userFileMapper;
 
+    @Resource
+    private CapacityAuditInfoMapper capacityAuditInfoMapper;
+
 
     public Long getTotalStorageSize(String userId) {
         LambdaQueryWrapper<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -118,8 +131,11 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
     }
 
     @Override
-    public CommonResult<Page<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO) {
-        Page<StorageBeanVO> storageBeanList = storageMapper.getUserStorageList(CommonPageRequest.defaultPage(), getUserStorageDTO);
+    public CommonResult<TableDataInfo<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO) {
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageNum(getUserStorageDTO.getPageNum());
+        pageQuery.setPageSize(getUserStorageDTO.getPageSize());
+        Page<StorageBeanVO> storageBeanList = storageMapper.getUserStorageList(pageQuery.build(), getUserStorageDTO);
         if (storageBeanList.getRecords() != null && storageBeanList.getSize() > 0) {
             // 如果查出的数据不为空,关联用户的角色
             for (StorageBeanVO storageBean : storageBeanList.getRecords()) {
@@ -130,7 +146,7 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
                 }
             }
         }
-        return CommonResult.data(storageBeanList);
+        return CommonResult.data(TableDataInfo.build(storageBeanList));
     }
 
     @Override
@@ -157,5 +173,143 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
         return CommonResult.ok("更新成功");
     }
 
+    @Override
+    public CommonResult<Long> getUserStorage() {
+        // 获取当前用户id
+        String userId = StpLoginUserUtil.getLoginUser().getId();
+        QueryWrapper<StorageBean> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StorageBean::getUserId, userId);
+        StorageBean storageBean = storageMapper.selectOne(queryWrapper);
+        if (storageBean != null) {
+            return CommonResult.data(storageBean.getTotalStorageSize());
+        } else {
+            return CommonResult.error("未查询到用户存储空间");
+        }
+    }
+
+    @Override
+    public CommonResult<String> applyChangeStorage(CapacityAuditInfo capacityAuditInfo) {
+        String userId = StpLoginUserUtil.getLoginUser().getId();
+        // 校验是否有此用户的存储空间
+        QueryWrapper<StorageBean> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StorageBean::getUserId, userId);
+        StorageBean storageBean = storageMapper.selectOne(queryWrapper);
+        if (storageBean == null) {
+            return CommonResult.error("未查询到用户存储空间");
+        }
+        // 校验是否已经提交过扩容申请
+        QueryWrapper<CapacityAuditInfo> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.lambda().eq(CapacityAuditInfo::getApplicantUserId, userId).eq(CapacityAuditInfo::getAuditState, 0);
+        List<CapacityAuditInfo> capacityAuditInfos = capacityAuditInfoMapper.selectList(queryWrapper1);
+        if (capacityAuditInfos != null && capacityAuditInfos.size() > 0) {
+            return CommonResult.error("您已经提交过扩容申请,请耐心等待审核");
+        }
+        // 保存扩容申请信息
+        capacityAuditInfo.setId(IdUtil.simpleUUID()); // 主键id
+        capacityAuditInfo.setApplicantBeforeCapacity(storageBean.getTotalStorageSize()); // 扩容前容量
+        capacityAuditInfo.setApplicantUserId(userId); // 申请人id
+        capacityAuditInfo.setApplicantTime(new Date()); // 申请时间
+        int insert = capacityAuditInfoMapper.insert(capacityAuditInfo);
+        if (insert > 0) {
+            return CommonResult.ok("扩容申请提交成功,请耐心等待审核");
+        } else {
+            return CommonResult.error("扩容申请提交失败");
+        }
+    }
+
+    @Override
+    public CommonResult<TableDataInfo<CapacityAuditInfoVo>> getCapacityAuditList(Integer pageNum, Integer pageSize, Integer auditState, String usernameOrNickname) {
+        // 查询审核列表
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageNum(pageNum);
+        pageQuery.setPageSize(pageSize);
+        Page<CapacityAuditInfoVo> capacityAuditInfos = capacityAuditInfoMapper.getCapacityAuditList(pageQuery.build(), auditState, usernameOrNickname);
+        // 关联申请人的角色
+        if (capacityAuditInfos.getRecords().size() > 0) {
+            for (CapacityAuditInfoVo record : capacityAuditInfos.getRecords()) {
+                String userId = record.getApplicantUserId();
+                List<String> roleNameList = storageMapper.getUserRoleNameListById(userId);
+                if (roleNameList != null && roleNameList.size() > 0) {
+                    record.setRoles(roleNameList);
+                }
+            }
+        }
+        return CommonResult.data(TableDataInfo.build(capacityAuditInfos));
+    }
+
+    @Override
+    public CommonResult<CapacityAuditInfoVo> getCapacityAuditDetail(String id) {
+        // 查询审核详情
+        CapacityAuditInfoVo capacityAuditInfo = capacityAuditInfoMapper.getCapacityAuditById(id);
+        if (capacityAuditInfo != null) {
+            String userId = capacityAuditInfo.getApplicantUserId();
+            List<String> roleNameList = storageMapper.getUserRoleNameListById(userId);
+            if (roleNameList != null && roleNameList.size() > 0) {
+                capacityAuditInfo.setRoles(roleNameList);
+            }
+            return CommonResult.data(capacityAuditInfo);
+        }
+        return null;
+    }
+
+    @Override
+    public CommonResult<String> auditCapacityAudit(String id, Integer auditState, String rejectReason) {
+        // 校验申请单
+        CapacityAuditInfo capacityAuditInfo = capacityAuditInfoMapper.selectById(id);
+        if (capacityAuditInfo == null) {
+            return CommonResult.error("扩容申请单不存在");
+        }
+        // 审核扩容申请
+        capacityAuditInfo.setAuditState(auditState);
+        if (auditState == 1) { // 通过审核
+            // 更新用户存储空间
+            QueryWrapper<StorageBean> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(StorageBean::getUserId, capacityAuditInfo.getApplicantUserId());
+            StorageBean storageBean = storageMapper.selectOne(queryWrapper);
+            storageBean.setTotalStorageSize(capacityAuditInfo.getApplicantAfterCapacity());
+            int update = storageMapper.updateById(storageBean);
+            if (update > 0) {
+                // 修改审核状态
+                capacityAuditInfo.setAuditTime(new Date());
+                capacityAuditInfo.setAuditUserId(StpLoginUserUtil.getLoginUser().getId());
+                capacityAuditInfoMapper.updateById(capacityAuditInfo);
+                return CommonResult.ok("扩容申请通过,已更新用户存储空间");
+            } else {
+                return CommonResult.error("扩容申请通过失败");
+            }
+        } else if (auditState == 2) { // 拒绝审核
+            capacityAuditInfo.setRejectReason(rejectReason); // 拒绝原因
+            int update = capacityAuditInfoMapper.updateById(capacityAuditInfo);
+            if (update > 0) {
+                return CommonResult.ok("扩容申请驳回成功");
+            } else {
+                return CommonResult.error("扩容申请驳回失败");
+            }
+        } else {
+            return CommonResult.error("审核状态不正确,请重新选择");
+        }
+    }
+
+    @Override
+    public CommonResult<TableDataInfo<CapacityAuditInfoVo>> getUserCapacityAuditList(Integer pageNum, Integer pageSize, Integer auditState) {
+        // 查询审核列表
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageNum(pageNum);
+        pageQuery.setPageSize(pageSize);
+        String id = StpLoginUserUtil.getLoginUser().getId();
+        Page<CapacityAuditInfoVo> capacityAuditInfos = capacityAuditInfoMapper.getUserCapacityAuditList(pageQuery.build(), auditState, id);
+        // 关联申请人的角色
+        if (capacityAuditInfos.getRecords().size() > 0) {
+            for (CapacityAuditInfoVo record : capacityAuditInfos.getRecords()) {
+                String userId = record.getApplicantUserId();
+                List<String> roleNameList = storageMapper.getUserRoleNameListById(userId);
+                if (roleNameList != null && roleNameList.size() > 0) {
+                    record.setRoles(roleNameList);
+                }
+            }
+        }
+        return CommonResult.data(TableDataInfo.build(capacityAuditInfos));
+    }
+
 
 }

+ 51 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/PageQuery.java

@@ -0,0 +1,51 @@
+package vip.xiaonuo.disk.util;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 分页查询实体类
+ *
+ * @author Lion Li
+ */
+
+@Data
+public class PageQuery implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 分页大小
+     */
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    private Integer pageNum;
+
+
+    /**
+     * 当前记录起始索引 默认值
+     */
+    public static final int DEFAULT_PAGE_NUM = 1;
+
+    /**
+     * 每页显示记录数 默认值 默认查全部
+     */
+    public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
+
+    public <T> Page<T> build() {
+        Integer pageNum = ObjectUtil.defaultIfNull(getPageNum(), DEFAULT_PAGE_NUM);
+        Integer pageSize = ObjectUtil.defaultIfNull(getPageSize(), DEFAULT_PAGE_SIZE);
+        if (pageNum <= 0) {
+            pageNum = DEFAULT_PAGE_NUM;
+        }
+        Page<T> page = new Page<>(pageNum, pageSize);
+        return page;
+    }
+
+}

+ 79 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/TableDataInfo.java

@@ -0,0 +1,79 @@
+package vip.xiaonuo.disk.util;
+
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 表格分页数据对象
+ *
+ * @author Lion Li
+ */
+
+@Data
+@NoArgsConstructor
+public class TableDataInfo<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 总记录数
+     */
+    private long total;
+
+    /**
+     * 列表数据
+     */
+    private List<T> rows;
+
+    /**
+     * 消息状态码
+     */
+    private int code;
+
+    /**
+     * 消息内容
+     */
+    private String msg;
+
+    /**
+     * 分页
+     *
+     * @param list  列表数据
+     * @param total 总记录数
+     */
+    public TableDataInfo(List<T> list, long total) {
+        this.rows = list;
+        this.total = total;
+    }
+
+    public static <T> TableDataInfo<T> build(IPage<T> page) {
+        TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setCode(200);
+        rspData.setMsg("查询成功");
+        rspData.setRows(page.getRecords());
+        rspData.setTotal(page.getTotal());
+        return rspData;
+    }
+
+    public static <T> TableDataInfo<T> build(List<T> list) {
+        TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setCode(200);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(list.size());
+        return rspData;
+    }
+
+    public static <T> TableDataInfo<T> build() {
+        TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setCode(200);
+        rspData.setMsg("查询成功");
+        return rspData;
+    }
+
+}

+ 49 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/examine/ExamineVo.java

@@ -0,0 +1,49 @@
+package vip.xiaonuo.disk.vo.examine;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+@Data
+public class ExamineVo {
+    /**
+     * 主键id
+     */
+    private String userFileId;
+    /**
+     * 文件id
+     */
+    private String fileId;
+    /**
+     * 文件名称
+     */
+    private String fileName;
+    /**
+     * 审核人
+     */
+    private String examineUser;
+    /**
+     * 审核状态
+     */
+    private String examineStatus;
+    /**
+     * 审核原因
+     */
+    private String examineReason;
+    /**
+     * 申请时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private String createTime;
+
+    /**
+     * 文件大小
+     */
+    private String fileSize;
+    /**
+     * 组织名称
+     */
+    private String orgName;
+
+
+
+}

+ 90 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/storage/CapacityAuditInfoVo.java

@@ -0,0 +1,90 @@
+package vip.xiaonuo.disk.vo.storage;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 容量审核信息VO类
+ *
+ * @author jinjilong
+ */
+@Data
+public class CapacityAuditInfoVo {
+
+    /** id */
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    /**
+     * 申请人用户ID
+     */
+    @ApiModelProperty(value = "申请人用户ID")
+    private String applicantUserId;
+
+    /**
+     * 审核状态 0待审核 1审核通过 2审核拒绝
+     */
+    @ApiModelProperty(value = "审核状态")
+    private Integer auditState;
+
+    /**
+     * 审核拒绝原因
+     */
+    @ApiModelProperty(value = "审核拒绝原因")
+    private String rejectReason;
+
+    /**
+     * 申请后容量 单位MB
+     */
+    @ApiModelProperty(value = "申请后容量")
+    private Long applicantAfterCapacity;
+
+    /**
+     * 申请时间
+     */
+    @ApiModelProperty(value = "申请时间")
+    private Date applicantTime;
+
+    /**
+     * 审核时间
+     */
+    @ApiModelProperty(value = "审核时间")
+    private Date auditTime;
+
+    /**
+     * 审核人用户ID
+     */
+    @ApiModelProperty(value = "审核人用户ID")
+    private String auditUserId;
+
+    /**
+     * 扩容申请事由
+     */
+    @ApiModelProperty(value = "扩容申请事由")
+    private String applicantReason;
+
+    /**
+     * 申请前容量 单位MB
+     */
+    @ApiModelProperty(value = "申请前容量")
+    private Long applicantBeforeCapacity;
+
+    /**
+     * 申请人账号
+     */
+    private String username;
+
+    /**
+     * 申请人昵称
+     */
+    private String nickName;
+
+    /**
+     * 申请人角色
+     */
+    private List<String> roles;
+
+}