Переглянути джерело

添加文件记录日志接口

pans 8 місяців тому
батько
коміт
f10d2ae90f

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

@@ -563,7 +563,7 @@ public class FileController {
         userFileService.update(new UpdateWrapper<UserFile>().lambda().set(UserFile::getDeleteFlag, 1).in(UserFile::getUserFileId, Arrays.asList(userFileIdList)));
         for (String userFileId : userFileIdList) {
             executor.execute(()->{
-                    userFileService.deleteUserFile(userFileId, SessionUtil.getUserId());
+                    userFileService.deleteUserFile(userFileId, StpLoginUserUtil.getLoginUser().getId());
             });
 
             fileDealComp.deleteESByUserFileId(userFileId);
@@ -584,7 +584,7 @@ public class FileController {
         userFileService.update(new UpdateWrapper<UserFile>().lambda().set(UserFile::getDeleteFlag, 1).in(UserFile::getUserFileId, Arrays.asList(userFileIdList)));
         for (String userFileId : userFileIdList) {
             executor.execute(()->{
-                userFileService.deleteUserFile(userFileId, SessionUtil.getUserId());
+                userFileService.deleteUserFile(userFileId, commonUserId);
             });
 
             fileDealComp.deleteESByUserFileId(userFileId);
@@ -685,7 +685,7 @@ public class FileController {
                 }
             }
 
-            userFileService.userFileCopy(SessionUtil.getUserId(), userFileId, filePath);
+            userFileService.userFileCopy(userId, userFileId, filePath);
             fileDealComp.deleteRepeatSubDirFile(filePath, userId);
         }
 

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

@@ -0,0 +1,35 @@
+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;
+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.service.FileStasticService;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Tag(name = "operationLog", description = "资源概览接口")
+@RestController
+@Slf4j
+@RequestMapping("/fileStastic")
+public class FileStasticController {
+
+   @Resource
+   private FileStasticService fileStasticService;
+
+
+    @Operation(summary = "资源概览存储空间统计接口", description = "资源概览存储空间统计接口")
+    @RequestMapping(value = "/queryList", method = RequestMethod.GET)
+    @ResponseBody
+    public RestResult<Map<String, Object>> queryList() {
+        Map<String, Object> map= fileStasticService.queryList();
+        return RestResult.success().data(map);
+    }
+
+
+}

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

@@ -0,0 +1,33 @@
+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;
+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.service.IOperationLogService;
+import vip.xiaonuo.disk.vo.operationLog.OperationLogBeanVo;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Tag(name = "operationLog", description = "日志操作接口")
+@RestController
+@Slf4j
+@RequestMapping("/operationLog")
+public class OperationLogBeanController {
+
+    @Resource
+    private IOperationLogService iOperationLogService;
+    @Operation(summary = "获取操作日志列表", description = "获取操作日志列表", tags = {"file"})
+    @RequestMapping(value = "/getList", method = RequestMethod.GET)
+    @ResponseBody
+    public RestResult<OperationLogBeanVo> getList(String type){
+        List<OperationLogBeanVo> list =iOperationLogService.selectOperationLog(type);
+        return RestResult.success().dataList(list, list.size());
+    }
+
+}

+ 8 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/FileStasticMapper.java

@@ -0,0 +1,8 @@
+package vip.xiaonuo.disk.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+public interface FileStasticMapper {
+    List<Map<String, Object>> queryList(String userId);
+}

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/OperationLogMapper.java

@@ -2,8 +2,13 @@ package vip.xiaonuo.disk.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.disk.domain.OperationLogBean;
+import vip.xiaonuo.disk.vo.operationLog.OperationLogBeanVo;
+
+import java.util.List;
 
 public interface OperationLogMapper extends BaseMapper<OperationLogBean> {
 
+    List<OperationLogBeanVo> selectOperationLog(@Param("type") String  type, @Param("userId") String userId);
 }

+ 14 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/OperationLogMapper.xml

@@ -5,6 +5,19 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="vip.xiaonuo.disk.mapper.OperationLogMapper">
+     <select id="selectOperationLog" resultType="vip.xiaonuo.disk.vo.operationLog.OperationLogBeanVo">
+         SELECT
+             a.user_file_id AS userFileId,
+             b.file_name AS fileName,
+             a.time
+         FROM
+             operationlog a
+                 LEFT JOIN userfile b ON
+                 a.USER_FILE_ID = b.USER_FILE_ID
+         WHERE
+             a.TYPE = #{type} AND a.user_id=#{userId}
 
-
+          order by a.time desc
+         limit 10
+     </select>
 </mapper>

+ 7 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/FileStasticService.java

@@ -0,0 +1,7 @@
+package vip.xiaonuo.disk.service;
+
+import java.util.Map;
+
+public interface FileStasticService {
+    Map<String, Object> queryList();
+}

+ 3 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IOperationLogService.java

@@ -1,16 +1,16 @@
 package vip.xiaonuo.disk.service;
 
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.disk.domain.OperationLogBean;
+import vip.xiaonuo.disk.vo.operationLog.OperationLogBeanVo;
 
 import java.util.List;
 
 public interface IOperationLogService  extends IService<OperationLogBean> {
-    IPage<OperationLogBean> selectOperationLogPage(Integer current, Integer size);
 
-    List<OperationLogBean> selectOperationLog();
+
+    List<OperationLogBeanVo> selectOperationLog(String type);
 
     void insertOperationLog(OperationLogBean operationlogBean);
 }

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

@@ -0,0 +1,66 @@
+package vip.xiaonuo.disk.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.disk.domain.StorageBean;
+import vip.xiaonuo.disk.mapper.FileStasticMapper;
+import vip.xiaonuo.disk.mapper.StorageMapper;
+import vip.xiaonuo.disk.service.FileStasticService;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+@Transactional(rollbackFor=Exception.class)
+public class FileStasticServiceImpl implements FileStasticService {
+   @Resource
+   private  FileStasticMapper fileStasticMapper;
+    @Resource
+    private StorageMapper storageMapper;
+    @Override
+    public Map<String, Object> queryList() {
+        Map<String, Object> rsMap=new HashMap<>();
+        String userId = StpLoginUserUtil.getLoginUser().getId();
+        LambdaQueryWrapper<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(StorageBean::getUserId, userId);
+
+        StorageBean storageBean = storageMapper.selectOne(lambdaQueryWrapper);
+
+
+
+        List<Map<String,Object>> list=fileStasticMapper.queryList(userId);
+        int totalSize = list.stream()
+                .mapToInt(map -> Integer.parseInt(map.get("userFileId").toString()))
+                .sum();
+        Long totalFileSizeNum = list.stream()
+                .mapToLong(map -> Long.parseLong(map.get("fileSizeNum").toString()))
+                .sum();
+        double totalFileSizeInGB = (double) totalFileSizeNum / (1024 * 1024);
+        rsMap.put("list",list);
+        rsMap.put("totalSize",totalSize);
+        rsMap.put("totalFileSize",String.format("%.2f", totalFileSizeInGB));
+        rsMap.put("totalStorageSize",storageBean.getTotalStorageSize());
+        rsMap.put("remainStorageSize",subtractNumbers(String.valueOf(storageBean.getTotalStorageSize()),String.valueOf(totalFileSizeInGB)));
+        return rsMap;
+    }
+
+
+    public static String subtractNumbers(String num1, String num2) {
+        try {
+            BigDecimal number1 = new BigDecimal(num1);
+            BigDecimal number2 = new BigDecimal(num2);
+            BigDecimal result = number1.subtract(number2).setScale(2, RoundingMode.HALF_UP); // 保留两位小数
+            return result.toString();
+        } catch (Exception e) {
+            return "0.00"; // 出现异常时返回默认值
+        }
+    }
+}

+ 22 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/operationLog/OperationLogBeanVo.java

@@ -0,0 +1,22 @@
+package vip.xiaonuo.disk.vo.operationLog;
+
+import lombok.Data;
+
+import javax.persistence.Column;
+
+@Data
+public class OperationLogBeanVo {
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+    /**
+     * 时间
+     */
+    @Column(columnDefinition="varchar(25) comment '操作时间'")
+    private String time;
+
+    private String userFileId;
+
+}