Sfoglia il codice sorgente

新增自动清除7天前的osszip数据

吴志根 4 anni fa
parent
commit
4f87de6a87

+ 1 - 1
src/dsb/com/cnd3b/common/parameter/parameter.java

@@ -25,7 +25,7 @@ public class parameter {
     public static HashMap<Long, Row> userIdList = new HashMap<>(16);
 
     public static String defaultsiteid = "JIUSHENG";
-    public static Boolean isMac = true;
+    public static Boolean isMac = false;
     //设置改部门下的为经销商
     public static String depname = "经销商";
     public static String tuserid = "";

+ 7 - 1
src/dsb/com/cnd3b/restcontroller/customer/wechatapplet/wechatapplet.java

@@ -12,6 +12,7 @@ import com.cnd3b.common.data.RowsMap;
 import com.cnd3b.common.data.SQLFactory;
 import com.cnd3b.common.parameter.parameter;
 import com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant;
+import com.huaweicloud.sdk.bms.v1.model.Address;
 import p2.common.parse.A;
 import p2.common.parse.J;
 import p2.util.P2Exception;
@@ -214,7 +215,12 @@ public class wechatapplet extends Controller {
         ArrayList<String> listFolders = new ArrayList<>();
         if (!rows.isEmpty()) {
             for (Row row : rows) {
-                listFolders.add(row.getString("fpath"));
+                if (row.getString("fpath") == null || row.getString("fpath").equals("")) {
+
+                } else {
+                    listFolders.add(row.getString("fpath"));
+                }
+
             }
 
         }

+ 3 - 0
src/dsb/com/cnd3b/restcontroller/enterprise/datacenter/SQL/删除文件夹.sql

@@ -0,0 +1,3 @@
+DELETE
+FROM tfolder
+WHERE fpath IN $fpath$

+ 19 - 13
src/dsb/com/cnd3b/restcontroller/enterprise/datacenter/datacenter.java

@@ -62,27 +62,33 @@ public class datacenter extends Controller {
         if (jsonArray == null || jsonArray.size() == 0) {
             return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString();
         }
-        List<String> keysList = new ArrayList<>();
+        ArrayList<String> keysList = new ArrayList<>();
         for (Object obj : jsonArray) {
             keysList.add(obj.toString());
         }
         DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
         request.setKeys(keysList);
         // 发起deleteObjects请求。
-        DeleteObjectsResult delObjResult = ossClient.deleteObjects(request);
-
-        // 查看删除结果。
-        for (String o : delObjResult.getDeletedObjects()) {
-            String keyName = null;
-            try {
-                keyName = URLDecoder.decode(o, "UTF-8");
-            } catch (UnsupportedEncodingException e) {
-                e.printStackTrace();
-            }
-            System.out.println("delete key name: " + keyName);
-        }
+        ossClient.deleteObjects(request);
+
+//        // 查看删除结果。
+//        for (String o : delObjResult.getDeletedObjects()) {
+//            String keyName = null;
+//            try {
+//                keyName = URLDecoder.decode(o, "UTF-8");
+//            } catch (UnsupportedEncodingException e) {
+//                e.printStackTrace();
+//            }
+//            System.out.println("delete key name: " + keyName);
+//        }
 
         ossClient.shutdown();
+
+        SQLFactory sqlFactory = new SQLFactory(this, "删除文件夹");
+        sqlFactory.addParameter_in("fpath", keysList);
+        String sql = sqlFactory.getSQL();
+        dbConnect.runSqlUpdate(sql);
+
         return getSucReturnObject().toString();
     }
 

+ 69 - 7
src/dsb/com/cnd3b/service/GetWechatData.java

@@ -2,6 +2,8 @@ package com.cnd3b.service;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.*;
 import com.cnd3b.common.BaseClass;
 import com.cnd3b.common.data.Rows;
 import com.cnd3b.common.data.SQLFactory;
@@ -9,6 +11,7 @@ import com.cnd3b.common.data.db.DBConnect;
 import com.cnd3b.common.data.db.SQLiteJDBC;
 import com.cnd3b.common.parameter.parameter;
 import com.cnd3b.utility.WebRequest;
+import com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant;
 import com.cnd3b.utility.wechatdock.WechatDock_Enterprise;
 import p2.common.parse.A;
 import p2.pao.PaoRemote;
@@ -16,25 +19,84 @@ import p2.pao.PaoSetRemote;
 import p2.util.P2Exception;
 
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
+import java.util.zip.ZipEntry;
 
-public class GetWechatData extends BaseClass implements Runnable {
+import static com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant.BUCKE_NAME_1;
 
+public class GetWechatData extends BaseClass implements Runnable {
 
 
     @Override
     public void run() {
 //        if (new SQLiteJDBC().checkServicesUsed("GetWechatData", false)) {
-            try {
-                System.err.println("GetWechatData Service start...");
-                getDepartmentList();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+        try {
+            System.err.println("GetWechatData Service start...");
+            getDepartmentList();
+            clearCache();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
 //        }
     }
 
+
+    public void clearCache() {
+        OSSClient client = new OSSClient(AliyunOSSConfigConstant.END_POINT, AliyunOSSConfigConstant.AccessKey_ID, AliyunOSSConfigConstant.AccessKey_Secret);
+        //下载文件夹
+//        String[] objectFolder = folder;
+        // 构造ListObjectsRequest请求。
+        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(AliyunOSSConfigConstant.BUCKE_NAME_1);
+
+        // 设置prefix参数来获取fun目录下的所有文件。
+        listObjectsRequest.setPrefix("cacheFiles/");
+        // 递归列举目录下的所有文件。
+        ObjectListing listing = client.listObjects(listObjectsRequest);
+        // 遍历所有文件。
+        List<String> keysList = new ArrayList<>();
+        for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
+            if (!objectSummary.getKey().endsWith("/")) {
+                String key = objectSummary.getKey();
+                if (!isLatestWeek(objectSummary.getLastModified(), new Date())) {
+                    keysList.add(key);
+                }
+
+
+            }
+        }
+        DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
+        request.setKeys(keysList);
+        // 发起deleteObjects请求。
+        client.deleteObjects(request);
+        client.shutdown();
+    }
+
+
+    /**
+     * 判断某个时间是否在当前时间的七天之内
+     * 如果是返回true,反之返回false
+     *
+     * @param addtime
+     * @param now
+     * @return
+     */
+    public boolean isLatestWeek(Date addtime, Date now) {
+        Calendar calendar = Calendar.getInstance();  //得到日历
+        calendar.setTime(now);//把当前时间赋给日历
+        calendar.add(Calendar.DAY_OF_MONTH, -7);  //设置为7天前
+        Date before7days = calendar.getTime();   //得到7天前的时间
+        if (before7days.getTime() < addtime.getTime()) {
+            return true;
+        } else {
+            return false;
+        }
+
+    }
+
+
     /**
      * 获取企业微信部门列表
      *