From d9ef502c09aa305152c7949540753daedf99edd7 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 24 十一月 2022 15:33:30 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/controller/data/MetaController.java |   11 ++++++++++-
 src/main/java/com/lf/server/service/data/DownloadService.java   |   28 ++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/lf/server/controller/data/MetaController.java b/src/main/java/com/lf/server/controller/data/MetaController.java
index 1076f54..12985ef 100644
--- a/src/main/java/com/lf/server/controller/data/MetaController.java
+++ b/src/main/java/com/lf/server/controller/data/MetaController.java
@@ -8,6 +8,8 @@
 import com.lf.server.entity.data.DownloadEntity;
 import com.lf.server.entity.data.MetaEntity;
 import com.lf.server.entity.sys.UserEntity;
+import com.lf.server.helper.Md5Helper;
+import com.lf.server.helper.RsaHelper;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.helper.WebHelper;
 import com.lf.server.service.data.DownloadService;
@@ -238,6 +240,10 @@
             if (null == reqEntity.getIds() || reqEntity.getIds().isEmpty()) {
                 return fail("璇烽�夋嫨瑕佷笅杞界殑鏂囦欢");
             }
+            if (!downloadService.validatePwd(reqEntity)) {
+                return fail("瀵嗙爜涓嶇鍚堣姹�");
+            }
+
 
             return success(true);
         } catch (Exception ex) {
@@ -262,13 +268,16 @@
                 return;
             }
 
-            UserEntity ue = tokenService.getCurrentUser(req);
             DownloadEntity de = downloadService.selectByGuid(reqEntity.getGuid());
             if (null == de) {
                 WebHelper.writeInfo(HttpStatus.NOT_FOUND, "鏂囦欢涓嶅瓨鍦�", res);
                 return;
             }
+            if (!StringHelper.isNull(de.getPwd()) && !Md5Helper.validatePassword(reqEntity.getPwd(), de.getPwd())) {
+                WebHelper.writeInfo(HttpStatus.UNAUTHORIZED, "瀵嗙爜涓嶆纭�", res);
+            }
 
+            UserEntity ue = tokenService.getCurrentUser(req);
             de.setDcount(de.getDcount() + 1);
             de.setDownloadUser(ue.getId());
             int rows = downloadService.update(de);
diff --git a/src/main/java/com/lf/server/service/data/DownloadService.java b/src/main/java/com/lf/server/service/data/DownloadService.java
index 3872a74..10ec12b 100644
--- a/src/main/java/com/lf/server/service/data/DownloadService.java
+++ b/src/main/java/com/lf/server/service/data/DownloadService.java
@@ -1,9 +1,13 @@
 package com.lf.server.service.data;
 
+import com.lf.server.entity.ctrl.DownloadReqEntity;
 import com.lf.server.entity.data.DownloadEntity;
 import com.lf.server.helper.PathHelper;
+import com.lf.server.helper.RsaHelper;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.mapper.data.DownloadMapper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +25,8 @@
 
     @Autowired
     DownloadMapper downloadMapper;
+
+    private final static Log log = LogFactory.getLog(DownloadService.class);
 
     @Override
     public Integer selectCount(String name) {
@@ -104,4 +110,26 @@
     public String getDownloadFilePath(DownloadEntity de) {
         return pathHelper.getConfig().getDownloadPath() + File.separator + de.getUrl();
     }
+
+    /**
+     * 鏍¢獙瀵嗙爜鏈夋晥鎬�
+     *
+     * @param reqEntity 璇锋眰涓嬭浇瀹炰綋绫�
+     * @return 鏄�/鍚︽湁鏁�
+     */
+    public boolean validatePwd(DownloadReqEntity reqEntity) {
+        try {
+            String pwd = RsaHelper.decrypt(reqEntity.getPwd());
+            if (StringHelper.isEmpty(pwd) || !StringHelper.checkPwdValid(pwd)) {
+                return false;
+            }
+
+            reqEntity.setPwd(pwd);
+
+            return true;
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            return false;
+        }
+    }
 }

--
Gitblit v1.9.3