Browse Source

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

东方国信-蔡芳 6 months ago
parent
commit
50b6965e1c

+ 42 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceStatisticController.java

@@ -0,0 +1,42 @@
+package vip.xiaonuo.disk.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.service.ResourceStatisticService;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 资源统计分析
+ * @author pans
+ */
+@Api(tags = "资源统计分析")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@RequestMapping("/resourceStatistic")
+public class ResourceStatisticController {
+
+    @Resource
+    private ResourceStatisticService resourceStatisticService;
+
+    /**
+     * 资源统计分析总统计
+     *
+     * @author pans
+     * @date  2025/08/27 14:10
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("资源统计分析总统计")
+    @GetMapping("/totalStatistic")
+    public CommonResult<Map<String, Object>> totalStatistic() {
+        return CommonResult.data(resourceStatisticService.getResourceStatisticData());
+    }
+
+}

+ 21 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ResourceStatisticMapper.java

@@ -0,0 +1,21 @@
+package vip.xiaonuo.disk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.disk.domain.ResourceFile;
+
+import java.util.Map;
+
+/**
+ * 资源统计分析Mapper接口
+ * @author pans
+ */
+public interface ResourceStatisticMapper extends BaseMapper<Map<String, Object>> {
+
+    /**
+     * 资源统计分析总统计
+     * @param userId
+     * @return
+     */
+    Map<String, Object> getResourceStatisticData(@Param("userId")String userId);
+}

+ 48 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ResourceStatisticMapper.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.ResourceStatisticMapper">
+
+    <select id="getResourceStatisticData" resultType="java.util.Map">
+
+        SELECT
+            r1.RESOURCE_TOTAL,
+            IFNULL( r2.TOTAL_STORAGE_SIZE, 0 ) AS TOTAL_STORAGE_SIZE,
+            r3.WATCH_TOTAL,
+            r4.COLLECT_TOTAL
+        FROM
+            (
+                SELECT
+                    count( rr.ID ) resource_total
+                FROM RESOURCE_RECORD rr
+                WHERE
+                    rr.DELETE_FLAG = 'NOT_DELETE'
+                  AND rr.CREATE_USER = #{userId}
+            ) r1,
+            (
+                SELECT
+                    SUM(sr.TOTAL_STORAGE_SIZE) TOTAL_STORAGE_SIZE
+                FROM STORAGE_RE sr
+                WHERE
+                    sr.USER_ID = #{userId}
+            ) r2,
+            (
+                SELECT
+                    COUNT( rf.ID ) watch_total
+                FROM RESOURCE_FOOTPRINT rf
+                         LEFT JOIN RESOURCE_RECORD rr ON rf.RESOURCE_RECORD_ID = rr.ID
+                WHERE
+                    rr.CREATE_USER = #{userId}
+            ) r3,
+            (
+                SELECT
+                    COUNT( rc."id" ) collect_total
+                FROM
+                    "resource_collect" rc
+                        LEFT JOIN RESOURCE_RECORD rr ON rc."resource_id" = rr.ID
+                WHERE
+                    rr.CREATE_USER = #{userId}
+                  AND rc.DELETE_FLAG = 'NOT_DELETE'
+            ) r4
+
+    </select>
+</mapper>

+ 18 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ResourceStatisticService.java

@@ -0,0 +1,18 @@
+package vip.xiaonuo.disk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * 资源统计分析接口
+ * @author pans
+ */
+public interface ResourceStatisticService extends IService<Map<String, Object>> {
+
+    /**
+     * 获取资源统计分析数据
+     * @return Map<String, Object>
+     */
+    Map<String, Object> getResourceStatisticData();
+}

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

@@ -0,0 +1,51 @@
+package vip.xiaonuo.disk.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.disk.domain.ResourceFootprint;
+import vip.xiaonuo.disk.mapper.ResourceFootprintMapper;
+import vip.xiaonuo.disk.mapper.ResourceStatisticMapper;
+import vip.xiaonuo.disk.mapper.ResourceUserFileMapper;
+import vip.xiaonuo.disk.service.ResourceFootprintService;
+import vip.xiaonuo.disk.service.ResourceStatisticService;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 资源统计分析Service接口实现类
+ * @author pans
+ */
+@Slf4j
+@Service
+public class ResourceStatisticServiceImpl extends ServiceImpl<ResourceStatisticMapper, Map<String, Object>> implements ResourceStatisticService {
+
+    @Resource
+    private ResourceStatisticMapper resourceStatisticMapper;
+
+    @Resource
+    ResourceUserFileMapper resourceUserFileMapper;
+
+    @Override
+    public Map<String, Object> getResourceStatisticData() {
+
+        if (StpLoginUserUtil.getLoginUser().getId() == null) {
+            return new HashMap<>();
+        }
+
+        String userId = StpLoginUserUtil.getLoginUser().getId();
+        Map<String, Object> result = resourceStatisticMapper.getResourceStatisticData(userId);
+        result.put("storageSize", resourceUserFileMapper.selectStorageSizeByUserId(userId));
+        Object sizeObj = result.get("TOTAL_STORAGE_SIZE");
+        if (sizeObj instanceof Number) {
+            long sizeInBytes = ((Number) sizeObj).longValue() * 1024L * 1024L;
+            result.put("totalStorageSize", sizeInBytes);
+        } else {
+            result.put("totalStorageSize", 0L);
+        }
+        return result;
+    }
+}