Parcourir la source

feat: index number count

lihao16 il y a 6 mois
Parent
commit
565423a176

+ 5 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/iit/IitFileInfoController.java

@@ -70,6 +70,11 @@ public class IitFileInfoController extends BaseController {
         return success(iitFileInfoService.selectIitFileInfoById(id));
     }
 
+    @GetMapping(value = "/number/count")
+    public AjaxResult getNumberCount() {
+        return success(iitFileInfoService.getNumberCount());
+    }
+
     /**
      * 文件预览
      */

+ 49 - 0
ruoyi-system/src/main/java/com/ruoyi/iit/domain/vo/IndexNumberCountVo.java

@@ -0,0 +1,49 @@
+package com.ruoyi.iit.domain.vo;
+
+
+/**
+ * 首页统计数据
+ * @author lihao16
+ */
+public class IndexNumberCountVo {
+
+    private Integer fileNumber;
+
+    private Integer pushNumber;
+
+    private Integer receiveNumber;
+
+    private Integer unreadNumber;
+
+    public Integer getFileNumber() {
+        return fileNumber;
+    }
+
+    public void setFileNumber(Integer fileNumber) {
+        this.fileNumber = fileNumber;
+    }
+
+    public Integer getPushNumber() {
+        return pushNumber;
+    }
+
+    public void setPushNumber(Integer pushNumber) {
+        this.pushNumber = pushNumber;
+    }
+
+    public Integer getReceiveNumber() {
+        return receiveNumber;
+    }
+
+    public void setReceiveNumber(Integer receiveNumber) {
+        this.receiveNumber = receiveNumber;
+    }
+
+    public Integer getUnreadNumber() {
+        return unreadNumber;
+    }
+
+    public void setUnreadNumber(Integer unreadNumber) {
+        this.unreadNumber = unreadNumber;
+    }
+}

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/iit/mapper/IitFilePushMapper.java

@@ -58,4 +58,11 @@ public interface IitFilePushMapper
      * @return 结果
      */
     public int deleteIitFilePushByIds(Long[] ids);
+
+    /**
+     * 根据用户ID查询推送数量
+     * @param userId
+     * @return
+     */
+    public Integer selectCountByUserId(Long userId);
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/iit/mapper/IitMyselfFileMapper.java

@@ -58,4 +58,11 @@ public interface IitMyselfFileMapper {
      * @return 结果
      */
     public int deleteIitMyselfFileByIds(Long[] ids);
+
+    /**
+     * 根据用户id查询我的文件数量
+     * @param userId
+     * @return
+     */
+    public Integer selectCountByUserId(Long userId);
 }

+ 8 - 0
ruoyi-system/src/main/java/com/ruoyi/iit/mapper/IitPushUserRelMapper.java

@@ -81,4 +81,12 @@ public interface IitPushUserRelMapper {
      * @return
      */
     public IitPushUserRel getMessageInfo(@Param("id") Long id);
+
+    /**
+     * 查询用户已读未读消息数量
+     * @param userId
+     * @param isView
+     * @return
+     */
+    public Integer selectCountByUserIdAndView(@Param("userId") Long userId, @Param("isView") Integer isView);
 }

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/iit/service/IIitFileInfoService.java

@@ -2,6 +2,7 @@ package com.ruoyi.iit.service;
 
 import java.util.List;
 import com.ruoyi.iit.domain.IitFileInfo;
+import com.ruoyi.iit.domain.vo.IndexNumberCountVo;
 
 /**
  * 文件管理Service接口
@@ -72,4 +73,10 @@ public interface IIitFileInfoService
      * @return
      */
     public List<String> getFileImage(Long id);
+
+    /**
+     * 首页数据统计
+     * @return
+     */
+    public IndexNumberCountVo getNumberCount();
 }

+ 28 - 7
ruoyi-system/src/main/java/com/ruoyi/iit/service/impl/IitFileInfoServiceImpl.java

@@ -9,9 +9,8 @@ import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.iit.domain.IitFileImage;
 import com.ruoyi.iit.domain.IitFileInfo;
 import com.ruoyi.iit.domain.IitMyselfFile;
-import com.ruoyi.iit.mapper.IitFileImageMapper;
-import com.ruoyi.iit.mapper.IitFileInfoMapper;
-import com.ruoyi.iit.mapper.IitMyselfFileMapper;
+import com.ruoyi.iit.domain.vo.IndexNumberCountVo;
+import com.ruoyi.iit.mapper.*;
 import com.ruoyi.iit.service.IIitFileInfoService;
 import org.jodconverter.office.OfficeManager;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,10 +19,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.TimerTask;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +39,12 @@ public class IitFileInfoServiceImpl implements IIitFileInfoService {
     @Autowired
     private IitFileImageMapper iitFileImageMapper;
 
+    @Autowired
+    private IitFilePushMapper iitFilePushMapper;
+
+    @Autowired
+    private IitPushUserRelMapper iitPushUserRelMapper;
+
     @Value("${ruoyi.profile}")
     private String profile;
 
@@ -94,6 +96,25 @@ public class IitFileInfoServiceImpl implements IIitFileInfoService {
         return fileImageList.stream().map(IitFileImage::getImageUrl).collect(Collectors.toList());
     }
 
+    @Override
+    public IndexNumberCountVo getNumberCount() {
+        IndexNumberCountVo result = new IndexNumberCountVo();
+        Long userId = SecurityUtils.getUserId();
+        // 我的文件
+        Integer fileNumber = iitMyselfFileMapper.selectCountByUserId(userId);
+        result.setFileNumber(fileNumber);
+        // 我的推送
+        Integer pushNumber = iitFilePushMapper.selectCountByUserId(userId);
+        result.setPushNumber(pushNumber);
+        // 我的接收
+        Integer receiveNumber = iitPushUserRelMapper.selectCountByUserIdAndView(userId,null);
+        result.setReceiveNumber(receiveNumber);
+        // 我的未读
+        Integer unreadNumber = iitPushUserRelMapper.selectCountByUserIdAndView(userId,0);
+        result.setUnreadNumber(unreadNumber);
+        return result;
+    }
+
     /**
      * 新增文件管理
      *

+ 4 - 0
ruoyi-system/src/main/resources/mapper/iit/IitFilePushMapper.xml

@@ -97,4 +97,8 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectCountByUserId" resultType="Integer" parameterType="Long">
+        select count(1) from iit_file_push where user_id = #{userId}
+    </select>
 </mapper>

+ 4 - 0
ruoyi-system/src/main/resources/mapper/iit/IitMyselfFileMapper.xml

@@ -60,4 +60,8 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectCountByUserId" parameterType="Long" resultType="Integer">
+        select count(*) from iit_myself_file where user_id = #{userId}
+    </select>
 </mapper>

+ 5 - 0
ruoyi-system/src/main/resources/mapper/iit/IitPushUserRelMapper.xml

@@ -74,6 +74,11 @@
         where u.id = #{id}
     </select>
 
+    <select id="selectCountByUserIdAndView" resultType="Integer">
+        select count(1) from iit_push_user_rel where user_id = #{userId}
+        <if test="isView != null "> and is_view = #{isView}</if>
+    </select>
+
     <select id="selectIitPushUserRelById" parameterType="Long" resultMap="IitPushUserRelResult">
         <include refid="selectIitPushUserRelVo"/>
         where id = #{id}

+ 6 - 0
ruoyi-ui/src/api/iit/file.js

@@ -57,3 +57,9 @@ export function delInfo(id) {
     method: 'delete'
   })
 }
+export function numberCount() {
+  return request({
+    url: '/iit/file/number/count',
+    method: 'get'
+  })
+}

+ 63 - 2
ruoyi-ui/src/views/index.vue

@@ -3,23 +3,84 @@
     <el-row :gutter="20" class="title">
       文件分发平台
     </el-row>
-    <el-divider />
+    <el-divider/>
+    <el-card shadow="hover" :style="{ height: '80px' }">
+      <el-row :gutter="20" align="middle">
+        <!-- 我的文件 -->
+        <el-col :span="6" style="display: flex; justify-content: center; align-items: center">
+          <el-statistic :value="fileNumber">
+            <template #title>
+              <div style="display: inline-flex; align-items: center">
+                <span style="font-weight: bold; font-size: 20px;">我的文件</span>
+              </div>
+            </template>
+          </el-statistic>
+        </el-col>
+        <!-- 我的推送 -->
+        <el-col :span="6" style="display: flex; justify-content: center; align-items: center">
+          <el-statistic :value="pushNumber">
+            <template #title>
+              <div style="display: inline-flex; align-items: center">
+                <span style="font-weight: bold; font-size: 20px;">我的推送</span>
+              </div>
+            </template>
+          </el-statistic>
+        </el-col>
+        <!-- 我的接收 -->
+        <el-col :span="6" style="display: flex; justify-content: center; align-items: center">
+          <el-statistic :value="receiveNumber">
+            <template #title>
+              <div style="display: inline-flex; align-items: center">
+                <span style="font-weight: bold; font-size: 20px;">我的接收</span>
+              </div>
+            </template>
+          </el-statistic>
+        </el-col>
+        <!-- 未读推送 -->
+        <el-col :span="6" style="display: flex; justify-content: center; align-items: center">
+          <el-statistic :value="unreadNumber">
+            <template #title>
+              <div style="display: inline-flex; align-items: center">
+                <span style="font-weight: bold; font-size: 20px;">未读接收</span>
+              </div>
+            </template>
+          </el-statistic>
+        </el-col>
+      </el-row>
+    </el-card>
   </div>
 </template>
 
 <script>
+import {listInfo, numberCount} from "@/api/iit/file";
+
 export default {
   name: "Index",
   data() {
     return {
       // 版本号
-      version: "3.8.9"
+      version: "3.8.9",
+      fileNumber: null,
+      pushNumber: null,
+      receiveNumber: null,
+      unreadNumber: null
     };
   },
   methods: {
+    getNumberCount() {
+      numberCount().then(response => {
+        this.fileNumber = response.data.fileNumber;
+        this.pushNumber = response.data.pushNumber;
+        this.receiveNumber = response.data.receiveNumber;
+        this.unreadNumber = response.data.unreadNumber;
+      });
+    },
     goTarget(href) {
       window.open(href, "_blank");
     }
+  },
+  created() {
+    this.getNumberCount();
   }
 };
 </script>

+ 2 - 2
ruoyi-ui/src/views/login.vue

@@ -55,9 +55,9 @@
       </el-form-item>
     </el-form>
     <!--  底部  -->
-    <div class="el-login-footer">
+<!--    <div class="el-login-footer">
       <span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
-    </div>
+    </div>-->
   </div>
 </template>
 

+ 2 - 2
ruoyi-ui/src/views/register.vue

@@ -60,9 +60,9 @@
       </el-form-item>
     </el-form>
     <!--  底部  -->
-    <div class="el-register-footer">
+<!--    <div class="el-register-footer">
       <span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
-    </div>
+    </div>-->
   </div>
 </template>