pans 6 месяцев назад
Родитель
Сommit
a4ad0a93de
17 измененных файлов с 186 добавлено и 24 удалено
  1. 31 0
      snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/AuthUtil.java
  2. 3 3
      snowy-modules/snowy-web-app/src/main/java/vip/xiaonuo/web/core/config/GlobalConfigure.java
  3. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml
  4. 38 5
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceFileController.java
  5. 23 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceRecordController.java
  6. 2 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseAuditRecordMapper.java
  7. 1 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ResourceStatisticMapper.java
  8. 1 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StorageReMapper.java
  9. 15 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseAuditRecordMapper.xml
  10. 8 3
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ResourceStatisticMapper.xml
  11. 3 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/StorageReMapper.xml
  12. 1 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseAuditRecordService.java
  13. 2 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IStorageReService.java
  14. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseAuditRecordServiceImpl.java
  15. 40 6
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ResourceStatisticServiceImpl.java
  16. 5 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/StorageReService.java
  17. 3 3
      snowy-server/snowy-gateway-app/src/main/java/vip/xiaonuo/gateway/config/GatewayConfigure.java

+ 31 - 0
snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/AuthUtil.java

@@ -0,0 +1,31 @@
+package vip.xiaonuo.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Mono;
+import vip.xiaonuo.common.pojo.CommonResult;
+
+import javax.servlet.http.HttpServletRequest;
+import java.nio.charset.StandardCharsets;
+
+@Slf4j
+@Component
+public class AuthUtil {
+
+    @Value("${resource.account}")
+    private String resourceAccount;
+    public CommonResult<String> valid(HttpServletRequest req) {
+        String account = req.getHeader("account");
+        if (account == null) {
+            return CommonResult.error("账号信息为空!");
+        }
+        if(!resourceAccount.equals(account)){
+            return CommonResult.error("该账号没权限访问!");
+        }
+        return CommonResult.ok("该账号已通过认证!");
+    }
+}

+ 3 - 3
snowy-modules/snowy-web-app/src/main/java/vip/xiaonuo/web/core/config/GlobalConfigure.java

@@ -187,9 +187,9 @@ public class GlobalConfigure implements WebMvcConfigurer {
             /* 资源中心 */
             "/disk/resourcecentre/page",
             "/disk/resourcecentre/detail",
-            "/disk/courseauditrecord/addViewCount"
-
-
+            "/disk/courseauditrecord/addViewCount",
+            "/disk/resourcecentre/top5",
+            "/resourceFile/getResourceStorage"
     };
 
     /**

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml

@@ -77,6 +77,11 @@
             <artifactId>minio</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>vip.xiaonuo</groupId>
+            <artifactId>snowy-common</artifactId>
+        </dependency>
+
         <!-- 每个插件都要引入自己的对外接口 -->
         <dependency>
             <groupId>vip.xiaonuo</groupId>

+ 38 - 5
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceFileController.java

@@ -16,6 +16,8 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.util.AuthUtil;
 import vip.xiaonuo.disk.domain.ResourceFile;
 import vip.xiaonuo.disk.domain.ResourceUserFile;
 import vip.xiaonuo.disk.domain.StorageBean;
@@ -33,10 +35,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
@@ -58,7 +57,8 @@ public class ResourceFileController {
     @Resource
     UFOPFactory ufopFactory;
 
-
+    @Resource
+    private AuthUtil authUtil;
 
     @Resource
     private IStorageReService storageReService;
@@ -314,4 +314,37 @@ public class ResourceFileController {
 
     }
 
+
+    @Operation(summary = "获取存储信息", description = "获取存储信息", tags = {"filetransfer"})
+    @RequestMapping(value = "/getResourceStorage", method = RequestMethod.GET)
+    @ResponseBody
+    public CommonResult<StorageBean> getResourceStorage(HttpServletRequest httpServletRequest) {
+
+        CommonResult<String> rs=authUtil.valid(httpServletRequest);
+
+        if(rs.getCode().equals(200)){
+
+            String userAccount=httpServletRequest.getParameter("userAccount");
+
+            //根据用户账号获取用户id
+            String userId=storageReService.selectUserId(userAccount);
+            if(StringUtils.isBlank(userId)){
+                return CommonResult.error("该用户不存在!");
+            }
+
+            StorageBean storageBean = new StorageBean();
+
+            storageBean.setUserId(userId);
+
+            Long storageSize = resourceFileService.selectStorageSizeByUserId(userId);
+            StorageBean storage = new StorageBean();
+            storage.setUserId(userId);
+            storage.setStorageSize(storageSize);
+            Long totalStorageSize = storageReService.getTotalStorageSize(userId);
+            storage.setTotalStorageSize(totalStorageSize);
+            return CommonResult.data(storage);
+        }
+        return CommonResult.error(rs.getMsg());
+    }
+
 }

+ 23 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceRecordController.java

@@ -34,6 +34,7 @@ import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.common.util.AuthUtil;
 import vip.xiaonuo.common.util.PinyinUtils;
 import vip.xiaonuo.disk.domain.CourseAuditRecord;
 import vip.xiaonuo.disk.domain.KeyWord;
@@ -95,8 +96,8 @@ public class ResourceRecordController {
 
     @Value("${resource.sharelink.tea}")
     private String teaResourceShareLink;
-
-
+    @Resource
+    private AuthUtil authUtil;
     /**
      * 资源管理-课程下拉列表
      *
@@ -220,6 +221,26 @@ public class ResourceRecordController {
         return CommonResult.data(list);
     }
 
+
+
+
+
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("资源进行top5排行")
+    @GetMapping("/disk/resourcecentre/top5")
+    public CommonResult<List<Map<String,Object>>> selectTop5(HttpServletRequest req){
+        CommonResult<String> rs=authUtil.valid(req);
+        if(rs.getCode().equals(200)){
+            List<Map<String,Object>> list=courseAuditRecordService.selectTop5();
+            return CommonResult.data(list);
+        }
+       return CommonResult.error(rs.getMsg());
+    }
+
+
+
+
+
     /**
      * 资源管理-添加
      *

+ 2 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseAuditRecordMapper.java

@@ -52,4 +52,6 @@ public interface CourseAuditRecordMapper extends BaseMapper<CourseAuditRecord> {
      * 课程审核-查询最近一次信息
      */
     Map<String,Object> queryRecentlyRecord(Map param);
+
+    List<Map<String, Object>> selectTop5();
 }

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

@@ -42,5 +42,5 @@ public interface ResourceStatisticMapper extends BaseMapper<Map<String, Object>>
 
     Integer selectResourceShare(@Param("collegeId") String collegeId, @Param("map") Map<String, Object> map);
 
-    Map<String, Object> selectResourceUpload(@Param("collegeId") String collegeId, @Param("map") Map<String, Object> map);
+    List<Map<String, Object>> selectResourceUpload(@Param("collegeId") String collegeId, @Param("map") Map<String, Object> map);
 }

+ 1 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StorageReMapper.java

@@ -27,4 +27,5 @@ public interface StorageReMapper extends BaseMapper<StorageReBean> {
     List<String> getUserRoleNameListById(@Param("userId") String userId);
 
 
+    String selectUserId(String userAccount);
 }

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

@@ -299,4 +299,19 @@
             </foreach>
         </if>
     </select>
+
+
+    <select id="selectTop5" resultType="map">
+        SELECT
+            t1.id as id,
+            IFNULL (t1.USERFILE_ID,'') AS fileId,
+            IFNULL (t2.FILE_NAME,'') AS fileName,
+            t1.VIEW_COUNT viewCount,
+            IFNULL (CAST(t6.DOWNLOAD_PATH AS VARCHAR),'') AS filePath
+        FROM RESOURCE_RECORD t1
+                 LEFT JOIN RESOURCE_USERFILE t2 ON t2.USER_FILE_ID = t1.USERFILE_ID AND t2.DELETE_FLAG ='NOT_DELETE'
+                 LEFT JOIN DEV_FILE t6 ON t1.COVER_IMAGE=t6.ID AND t6.DELETE_FLAG ='NOT_DELETE'
+        ORDER BY t1.IS_HOT=1 DESC, t1.VIEW_COUNT DESC
+        LIMIT 5
+    </select>
 </mapper>

+ 8 - 3
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ResourceStatisticMapper.xml

@@ -276,10 +276,11 @@
     <select id="selectResourceUpload" resultType="map">
 
         SELECT
-            count(distinct a.id) uploadNum,
-            count(distinct b."user_id") seeNum
+            TO_CHAR(a.create_time, 'MM') AS createMonth,
+            COUNT(DISTINCT a.id) AS uploadNum,
+            COUNT(DISTINCT b."user_id") AS seeNum
         FROM
-            RESOURCE_RECORD a
+        RESOURCE_RECORD a
         LEFT JOIN RESOURCE_FOOTPRINT b ON a.id = b.RESOURCE_RECORD_ID
         <where>
             <if test="collegeId != null">
@@ -293,6 +294,10 @@
             </if>
             and  a.DELETE_FLAG = 'NOT_DELETE'
         </where>
+        GROUP BY
+        TO_CHAR(a.create_time, 'MM')
+        ORDER BY
+        createMonth
     </select>
 
 

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

@@ -24,5 +24,7 @@
         select ro.NAME from SYS_ROLE as ro left join  SYS_RELATION as re on ro.ID = re.TARGET_ID where re.OBJECT_ID = #{userId}
     </select>
 
-
+    <select id="selectUserId" resultType="string">
+        SELECT id FROM sys_user WHERE account=#{userAccount}
+    </select>
 </mapper>

+ 1 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseAuditRecordService.java

@@ -147,4 +147,5 @@ public interface CourseAuditRecordService extends IService<CourseAuditRecord> {
      */
     Map<String,Object> queryRecentlyRecord(Map param);
 
+    List<Map<String, Object>> selectTop5();
 }

+ 2 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IStorageReService.java

@@ -95,4 +95,6 @@ public interface IStorageReService {
      * @return 申请记录列表
      */
     CommonResult<TableDataInfo<CapacityReAuditInfoVo>> getUserCapacityAuditList(Integer pageNum, Integer pageSize, Integer auditState);
+
+    String selectUserId(String userAccount);
 }

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

@@ -187,4 +187,9 @@ public class CourseAuditRecordServiceImpl extends ServiceImpl<CourseAuditRecordM
         return courseAuditRecordMapper.queryRecentlyRecord(param);
     }
 
+    @Override
+    public List<Map<String, Object>> selectTop5() {
+        return courseAuditRecordMapper.selectTop5();
+    }
+
 }

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

@@ -15,7 +15,9 @@ import vip.xiaonuo.disk.service.ResourceStatisticService;
 import vip.xiaonuo.disk.util.AppUseAggregationUtil;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 资源统计分析Service接口实现类
@@ -170,13 +172,45 @@ public class ResourceStatisticServiceImpl extends ServiceImpl<ResourceStatisticM
     @Override
     public List<Map<String, Object>> selectResourceUpload(String collegeId, String type) {
         Map<String, Object> map = getTime(type);
-        Map<String,Object>  rs=resourceStatisticMapper.selectResourceUpload(collegeId,map);
-        List<Map<String, Object>> newList = new ArrayList<>();
-        newList.add(createStatisticMap(1, MapUtils.getInteger(rs, "uploadNum", 0)));
-        newList.add(createStatisticMap(2, MapUtils.getInteger(rs, "seeNum", 0)));
-        return newList;
+
+        List<String> months =getMonthsUntilNow();
+
+
+        List<Map<String, Object>> rs=resourceStatisticMapper.selectResourceUpload(collegeId,map);
+        List<String>  validCrateMonths = rs.stream()
+                .map(item -> item.get("createMonth"))
+                .filter(Objects::nonNull)
+                .map(Object::toString)
+                .filter(months::contains)
+                .collect(Collectors.toList());
+
+        List<String> months1=months.stream().filter(month->!validCrateMonths.contains(month)).collect(Collectors.toList());
+
+        months1.stream().forEach(month->{
+            Map<String, Object> monthMap=new HashMap<>(3);
+            monthMap.put("createMonth",month);
+            monthMap.put("uploadNum",0);
+            monthMap.put("seeNum",0);
+            rs.add(monthMap);
+        });
+
+        // 使用 Comparator.comparing 进行排序
+        return rs.stream()
+                .sorted(Comparator.comparing(
+                        map1 -> (String) map1.get("createMonth"),
+                        Comparator.nullsLast(Comparator.naturalOrder())
+                ))
+                .collect(Collectors.toList());
     }
+    public List<String> getMonthsUntilNow() {
+        int currentMonth = LocalDate.now().getMonthValue();
+        List<String> months = new ArrayList<>();
 
+        for (int month = 1; month <= currentMonth; month++) {
+            months.add(String.format("%02d", month));
+        }
+        return months;
+    }
 
     /**
      * 创建统计信息Map
@@ -185,7 +219,7 @@ public class ResourceStatisticServiceImpl extends ServiceImpl<ResourceStatisticM
      * @return 统计信息Map
      */
     private Map<String, Object> createStatisticMap(int type, int num) {
-        Map<String, Object> map = new HashMap<>(2);
+        Map<String, Object> map = new HashMap<>(3);
         map.put("type", type);
         map.put("num", num);
         return map;

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

@@ -305,4 +305,9 @@ public class StorageReService implements IStorageReService {
         return CommonResult.data(TableDataInfo.build(capacityAuditInfos));
     }
 
+    @Override
+    public String selectUserId(String userAccount) {
+        return storageReMapper.selectUserId(userAccount);
+    }
+
 }

+ 3 - 3
snowy-server/snowy-gateway-app/src/main/java/vip/xiaonuo/gateway/config/GatewayConfigure.java

@@ -154,9 +154,9 @@ public class GatewayConfigure {
             "/api/webapp/disk/resourcecentre/page",
             "/api/webapp/disk/resourcecentre/detail",
             "/api/webapp/disk/courseauditrecord/addViewCount",
-            "/webSocket/**"
-
-
+            "/webSocket/**",
+            "/api/webapp/disk/resourcecentre/top5",
+            "/api/webapp/resourceFile/getResourceStorage"
     };
 
     /**