吴志根 4 rokov pred
rodič
commit
4e278dd2d2

+ 329 - 175
src/dsb/com/cnd3b/restcontroller/customer/wechatapplet/wechatapplet.java

@@ -17,6 +17,7 @@ import com.cnd3b.common.parameter.parameter;
 import p2.common.parse.A;
 import p2.pao.PaoRemote;
 import p2.pao.PaoSetRemote;
+import p2.pao.R;
 import p2.util.P2Exception;
 
 import java.net.URI;
@@ -200,205 +201,102 @@ public class wechatapplet extends Controller {
      */
     public String getFilesOfPath() {
         String folderPath = content.getString("folderPath");
-        // 构造ListObjectsRequest请求。
-        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1).withMaxKeys(1000);
-        // 设置正斜线(/)为文件夹的分隔符。
-        listObjectsRequest.setDelimiter("/");
-        // 列出fun目录下的所有文件和文件夹。
-        listObjectsRequest.setPrefix(folderPath);
-        ObjectListing listing = ossClient.listObjects(listObjectsRequest);
-        // 遍历所有文件。
-        System.out.println("Objects:");
-        List<JSONObject> objectSummaryList = new ArrayList<>();
-        List<OSSObjectSummary> sums = listing.getObjectSummaries();
-        //按照时间排序
-        Collections.sort(sums, (o1, o2) -> {
-            // TODO Auto-generated method stub
-            long dateTime1 = o1.getLastModified().getTime();
-            long dateTime2 = o2.getLastModified().getTime();
-            if (dateTime1 == dateTime2) {
-                return 0;
-            } else {
-                //时间正序
-//					return dateTime1 > dateTime2 ? 1 : -1;
-                //时间倒序
-                return dateTime1 > dateTime2 ? -1 : 1;
-            }
-
-        });
-
-        for (OSSObjectSummary objectSummary : sums) {
-            if (!objectSummary.getKey().equals(folderPath)) {
-                JSONObject object = new JSONObject();
-                object.put("key", objectSummary.getKey());
-                object.put("name", objectSummary.getKey().replace(folderPath, ""));
-                object.put("size", objectSummary.getSize() / 1024);
-                object.put("time", getDateTime_Str(objectSummary.getLastModified()));
-                object.put("url", file_url + "/" + objectSummary.getKey());
-                objectSummaryList.add(object);
-            }
-        }
-
-        //查询对应用户的角色
-        String sqlRoles = "SELECT wechat_position ,fusertype FROM tuser WHERE tuserid = '" + parameter.tuserid + "'";
-        Rows rowsRoles = dbConnect.runSqlQuery(sqlRoles);
-        ArrayList<String> listRole = rowsRoles.toArrayList("wechat_position");
-        String fusertype = "经销商";
-        if (!rowsRoles.isEmpty()) {
-            fusertype = rowsRoles.get(0).getString("fusertype");
-        }
-
+        //获取经销商类型
+        String fusertype = getUserFusertype();
+        //获取用户角色列表
+        ArrayList<String> listUserRole = getUserRolesList();
         //查询对应用户的体系
-        String sqlFauthtype = "SELECT fauthtype FROM tagentauth WHERE tagentsid=( SELECT tagentsid FROM tagents WHERE wechat_depid=(SELECT wechat_depid FROM tuser WHERE tuserid= '" + parameter.tuserid + "'))";
-        Rows rowsFauthtype = dbConnect.runSqlQuery(sqlFauthtype);
-        ArrayList<String> listfauthtype = rowsFauthtype.toArrayList("fauthtype");
+        ArrayList<String> listUserfauthtype = getUserFauthtypeList();
         //查询对应账号下有哪些有权限的目录
-        SQLFactory sqlFactory = new SQLFactory(this, "查询账号目录");
-        sqlFactory.addParameter("tuserid", parameter.tuserid);
-        sqlFactory.addParameter_in("frole", listRole);
-        sqlFactory.addParameter_in("fauthtype", listfauthtype);
-
-        String sql = sqlFactory.getSQL();
-        Rows rows = dbConnect.runSqlQuery(sql);
-        ArrayList<String> listFolders = new ArrayList<>();
-        if (!rows.isEmpty()) {
-            for (Row row : rows) {
-                if (row.getString("fpath") == null || row.getString("fpath").equals("")) {
-
-                } else {
-                    listFolders.add(row.getString("fpath"));
-                }
-
-            }
-
-        }
-        //查询体系
-
+        ArrayList<String> listUserFolders = getUserFolderList(listUserRole, listUserfauthtype);
 
+        ObjectListing listing = getObjectListing(folderPath);
+        // 遍历所有文件。
+        List<JSONObject> listFiles = getFiles(listing, folderPath);
         // 遍历所有commonPrefix。
-        ArrayList<JSONObject> commonPrefixList = new ArrayList<>();
-        ArrayList<JSONObject> commonPrefixList_temp = new ArrayList<>();
-        for (String commonPrefix : listing.getCommonPrefixes()) {
-            System.err.println(commonPrefix);
-
-            JSONObject object = new JSONObject();
-            object.put("folderpath", commonPrefix);
-            commonPrefixList_temp.add(object);
-
-            if (listFolders.size() == 0) {
-
-                commonPrefixList.add(object);
-            } else {
-                for (String str : listFolders) {
-                    if (str.equals(commonPrefix)) {
-                        commonPrefixList.add(object);
-                    }
-                }
+        List<JSONObject> listFolder = getListFolder(listing, listUserFolders, listUserRole, listUserfauthtype);
 
 
-            }
+        ArrayList<String> keyStr = new ArrayList<>();
+        for (JSONObject object : listFolder) {
+            keyStr.add(object.getString("folderpath"));
         }
+        SQLFactory sqlNameFac = new SQLFactory(this, "查询文件名称");
+        sqlNameFac.addParameter_in("fpath", keyStr);
+        String sqlName = sqlNameFac.getSQL();
+        Rows rowsName = dbConnect.runSqlQuery(sqlName);
+        JSONObject object = new JSONObject();
+        object.put("files", listFiles);
+        object.put("folder", rowsName);
 
         // 关闭OSSClient。
         ossClient.shutdown();
+        createRequestLog("资料中心");
+        return getSucReturnObject().setData(object).toString();
+    }
 
+    List<JSONObject> listFiles = new ArrayList<>();
+    List<JSONObject> listFolder = new ArrayList<>();
 
-        if (commonPrefixList.size() == 0) {
-            commonPrefixList = commonPrefixList_temp;
-        } else {
-            if (fusertype.equals("经销商")) {
-                ArrayList<JSONObject> commonPrefixList2 = new ArrayList<>();
-                for (JSONObject obj : commonPrefixList) {
-                    String fpath = obj.getString("folderpath");
-                    //开启双向验证
-                    boolean isFrole = false;
-                    boolean isFauthtype = false;
-                    boolean isTuserid = false;
-
-                    String sqlTemp = "SELECT frole,fauthtype,tuserid FROM tfolderauth t1 LEFT JOIN tfolder t2 ON t1.tfolderid =t2.tfolderid WHERE t2.fpath ='" + fpath + "'";
-                    Rows rowsTemp = dbConnect.runSqlQuery(sqlTemp);
-                    ArrayList<String> list_Roles = new ArrayList<>();
-                    ArrayList<String> list_fauthtype = new ArrayList<>();
-                    ArrayList<String> list_tuserid = new ArrayList<>();
-                    for (Row row : rowsTemp) {
-                        String frole = row.getString("frole");
-                        String fauthtype = row.getString("fauthtype");
-                        String tuserid = row.getString("tuserid");
-                        if (!frole.equals("")) {
-                            list_Roles.add(frole);
-                        }
-                        if (!fauthtype.equals("")) {
-                            list_fauthtype.add(fauthtype);
-                        }
-                        if (!tuserid.equals("0")) {
-                            list_tuserid.add(tuserid);
-                        }
-                    }
-
-                    //验证角色
-                    if (list_Roles.size() == 0) {
-                        isFrole = true;
-                    } else {
-                        for (String str : list_Roles) {
-                            if (listRole.contains(str)) {
-                                isFrole = true;
-                            }
-                        }
-                    }
-                    //验证体系
-                    if (list_fauthtype.size() == 0) {
-                        isFauthtype = true;
-                    } else {
-
-                        for (String str : list_fauthtype) {
-                            if (listfauthtype.contains(str)) {
-                                isFauthtype = true;
-                            }
-                        }
-
-                    }
-                    //验证用户
-                    if (list_tuserid.size() == 0) {
-                        isTuserid = true;
-                    } else {
-                        for (String str : list_tuserid) {
-                            if (parameter.tuserid == str) {
-                                isTuserid = true;
-                            }
-                        }
-                    }
-
-                    if (isFrole && isFauthtype && isTuserid) {
-                        commonPrefixList2.add(obj);
-                    }
-
-
-                    System.err.println(list_Roles.size());
-                    System.err.println(list_fauthtype.size());
-                    System.err.println(list_tuserid.size());
-
-
-                }
-
-                commonPrefixList = commonPrefixList2;
-            }
+    /**
+     * 搜索
+     *
+     * @return
+     */
+    public String searchFile() {
+        String keyword = "";
+        if (content.containsKey("keyword")) {
+            keyword = content.getString("keyword");
         }
+        String folderPath = "资料中心/";
+        //获取经销商类型
+        String fusertype = getUserFusertype();
+        //获取用户角色列表
+        ArrayList<String> listUserRole = getUserRolesList();
+        //查询对应用户的体系
+        ArrayList<String> listUserfauthtype = getUserFauthtypeList();
+        //查询对应账号下有哪些有权限的目录
+        ArrayList<String> listUserFolders = getUserFolderList(listUserRole, listUserfauthtype);
+        listFolder.clear();
+        listFiles.clear();
+        get(folderPath, listUserFolders, listUserRole, listUserfauthtype);
+//        ObjectListing listing = getObjectListing(folderPath);
+//        // 遍历所有文件。
+//        List<JSONObject> listFiles = getFiles(listing, folderPath);
+//        // 遍历所有commonPrefix。
+//        List<JSONObject> listFolder = getListFolder(listing, listUserFolders, listUserRole, listUserfauthtype);
+
 
         ArrayList<String> keyStr = new ArrayList<>();
-        for (JSONObject object : commonPrefixList) {
+        for (JSONObject object : listFolder) {
             keyStr.add(object.getString("folderpath"));
         }
-
         SQLFactory sqlNameFac = new SQLFactory(this, "查询文件名称");
         sqlNameFac.addParameter_in("fpath", keyStr);
         String sqlName = sqlNameFac.getSQL();
-
         Rows rowsName = dbConnect.runSqlQuery(sqlName);
 
+        List<JSONObject> listFiles_tmp = new ArrayList<>();
+        for (JSONObject jsonObject : listFiles) {
+            String name = jsonObject.getString("name");
+            System.err.println();
+            if (name.contains(keyword)) {
+                listFiles_tmp.add(jsonObject);
+            }
+        }
+        Rows rows_tmp = new Rows();
+        for (Row row : rowsName) {
+            if (row.getString("tfilename").contains(keyword)) {
+                rows_tmp.add(row);
+            }
+
+        }
         JSONObject object = new JSONObject();
-        object.put("files", objectSummaryList);
-        object.put("folder", rowsName);
+        object.put("files", listFiles_tmp);
+        object.put("folder", rows_tmp);
 
+        // 关闭OSSClient。
+        ossClient.shutdown();
         createRequestLog("资料中心");
         return getSucReturnObject().setData(object).toString();
     }
@@ -482,6 +380,12 @@ public class wechatapplet extends Controller {
     }
 
 
+    /**
+     * 添加视频播放记录
+     *
+     * @return
+     * @throws P2Exception
+     */
     public String addViewlog() throws P2Exception {
         Long tarchives_scid = content.getLong("tarchives_scid");
         Long tattachmentid = content.getLong("tattachmentid");
@@ -507,6 +411,13 @@ public class wechatapplet extends Controller {
         return getSucReturnObject().toString();
     }
 
+
+    /**
+     * 返回视频播放记录
+     *
+     * @return
+     * @throws P2Exception
+     */
     public String selectViewlog() throws P2Exception {
         Long tarchives_scid = content.getLong("tarchives_scid");
         SQLFactory sqlFactory = new SQLFactory(this, "查询视频播放记录");
@@ -517,4 +428,247 @@ public class wechatapplet extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    /**
+     * 获取用户角色
+     *
+     * @return
+     */
+    public Rows getUserRoles() {
+        //查询对应用户的角色
+        String sqlRoles = "SELECT wechat_position ,fusertype FROM tuser WHERE tuserid = '" + parameter.tuserid + "'";
+        return dbConnect.runSqlQuery(sqlRoles);
+    }
+
+    public ArrayList<String> getUserRolesList() {
+        return getUserRoles().toArrayList("wechat_position");
+    }
+
+    /**
+     * 查询用户类型
+     *
+     * @return
+     */
+    public String getUserFusertype() {
+        String fusertype = "经销商";
+        Rows rows = getUserRoles();
+        if (!rows.isEmpty()) {
+            fusertype = rows.get(0).getString("fusertype");
+        }
+        return fusertype;
+    }
+
+    /**
+     * 获取用户体系
+     *
+     * @return
+     */
+    public ArrayList<String> getUserFauthtypeList() {
+        String sqlFauthtype = "SELECT fauthtype FROM tagentauth WHERE tagentsid=( SELECT tagentsid FROM tagents WHERE wechat_depid=(SELECT wechat_depid FROM tuser WHERE tuserid= '" + parameter.tuserid + "'))";
+        return dbConnect.runSqlQuery(sqlFauthtype).toArrayList("fauthtype");
+    }
+
+
+    public ArrayList<String> getUserFolderList(ArrayList<String> listRole, ArrayList<String> listfauthtype) {
+        ArrayList<String> listFolders = new ArrayList<>();
+        SQLFactory sqlFactory = new SQLFactory(this, "查询账号目录");
+        sqlFactory.addParameter("tuserid", parameter.tuserid);
+        sqlFactory.addParameter_in("frole", listRole);
+        sqlFactory.addParameter_in("fauthtype", listfauthtype);
+        String sql = sqlFactory.getSQL();
+        Rows rows = dbConnect.runSqlQuery(sql);
+        if (!rows.isEmpty()) {
+            for (Row row : rows) {
+                if (row.getString("fpath") == null || row.getString("fpath").equals("")) {
+
+                } else {
+                    listFolders.add(row.getString("fpath"));
+                }
+
+            }
+
+        }
+        return listFolders;
+    }
+
+    public ObjectListing getObjectListing(String folderPath) {
+        // 构造ListObjectsRequest请求。
+        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1).withMaxKeys(1000);
+        // 设置正斜线(/)为文件夹的分隔符。
+        listObjectsRequest.setDelimiter("/");
+        // 列出fun目录下的所有文件和文件夹。
+        listObjectsRequest.setPrefix(folderPath);
+        return ossClient.listObjects(listObjectsRequest);
+    }
+
+    public List<JSONObject> getFiles(ObjectListing listing, String folderPath) {
+        List<JSONObject> objectSummaryList = new ArrayList<>();
+        List<OSSObjectSummary> sums = listing.getObjectSummaries();
+        //按照时间排序
+        Collections.sort(sums, (o1, o2) -> {
+            // TODO Auto-generated method stub
+            long dateTime1 = o1.getLastModified().getTime();
+            long dateTime2 = o2.getLastModified().getTime();
+            if (dateTime1 == dateTime2) {
+                return 0;
+            } else {
+                //时间正序
+//					return dateTime1 > dateTime2 ? 1 : -1;
+                //时间倒序
+                return dateTime1 > dateTime2 ? -1 : 1;
+            }
+
+        });
+
+        for (OSSObjectSummary objectSummary : sums) {
+            if (!objectSummary.getKey().equals(folderPath)) {
+                JSONObject object = new JSONObject();
+                object.put("key", objectSummary.getKey());
+                object.put("name", objectSummary.getKey().replace(folderPath, ""));
+                object.put("size", objectSummary.getSize() / 1024);
+                object.put("time", getDateTime_Str(objectSummary.getLastModified()));
+                object.put("url", file_url + "/" + objectSummary.getKey());
+                objectSummaryList.add(object);
+            }
+        }
+
+        return objectSummaryList;
+    }
+
+    public ArrayList<JSONObject> check(ArrayList<JSONObject> commonPrefixList, ArrayList<String> listRole, ArrayList<String> listfauthtype) {
+        ArrayList<JSONObject> commonPrefixList2 = new ArrayList<>();
+        for (JSONObject obj : commonPrefixList) {
+            String fpath = obj.getString("folderpath");
+            //开启双向验证
+            boolean isFrole = false;
+            boolean isFauthtype = false;
+            boolean isTuserid = false;
+
+            String sqlTemp = "SELECT frole,fauthtype,tuserid FROM tfolderauth t1 LEFT JOIN tfolder t2 ON t1.tfolderid =t2.tfolderid WHERE t2.fpath ='" + fpath + "'";
+            Rows rowsTemp = dbConnect.runSqlQuery(sqlTemp);
+            ArrayList<String> list_Roles = new ArrayList<>();
+            ArrayList<String> list_fauthtype = new ArrayList<>();
+            ArrayList<String> list_tuserid = new ArrayList<>();
+            for (Row row : rowsTemp) {
+                String frole = row.getString("frole");
+                String fauthtype = row.getString("fauthtype");
+                String tuserid = row.getString("tuserid");
+                if (!frole.equals("")) {
+                    list_Roles.add(frole);
+                }
+                if (!fauthtype.equals("")) {
+                    list_fauthtype.add(fauthtype);
+                }
+                if (!tuserid.equals("0")) {
+                    list_tuserid.add(tuserid);
+                }
+            }
+
+            //验证角色
+            if (list_Roles.size() == 0) {
+                isFrole = true;
+            } else {
+                for (String str : list_Roles) {
+                    if (listRole.contains(str)) {
+                        isFrole = true;
+                    }
+                }
+            }
+            //验证体系
+            if (list_fauthtype.size() == 0) {
+                isFauthtype = true;
+            } else {
+
+                for (String str : list_fauthtype) {
+                    if (listfauthtype.contains(str)) {
+                        isFauthtype = true;
+                    }
+                }
+
+            }
+            //验证用户
+            if (list_tuserid.size() == 0) {
+                isTuserid = true;
+            } else {
+                for (String str : list_tuserid) {
+                    if (parameter.tuserid == str) {
+                        isTuserid = true;
+                    }
+                }
+            }
+
+            if (isFrole && isFauthtype && isTuserid) {
+                commonPrefixList2.add(obj);
+            }
+
+
+            System.err.println(list_Roles.size());
+            System.err.println(list_fauthtype.size());
+            System.err.println(list_tuserid.size());
+
+
+        }
+
+        return commonPrefixList2;
+    }
+
+    public ArrayList<JSONObject> getListFolderAll(ObjectListing listing) {
+        ArrayList<JSONObject> listFolderAll = new ArrayList<>();
+        for (String commonPrefix : listing.getCommonPrefixes()) {
+            System.err.println(commonPrefix);
+            JSONObject object = new JSONObject();
+            object.put("folderpath", commonPrefix);
+            listFolderAll.add(object);
+
+        }
+        return listFolderAll;
+
+    }
+
+    public ArrayList<JSONObject> getListFolder(ArrayList<JSONObject> listFolderAll, ArrayList<String> listUserFolders) {
+        ArrayList<JSONObject> listFolder = new ArrayList<>();
+        for (JSONObject object : listFolderAll) {
+            String folderpath = object.getString("folderpath");
+            if (listUserFolders.size() == 0) {
+                listFolder.add(object);
+            } else {
+                for (String str : listUserFolders) {
+                    if (str.equals(folderpath)) {
+                        listFolder.add(object);
+                    }
+                }
+            }
+        }
+        return listFolder;
+    }
+
+    public ArrayList<JSONObject> getListFolder(ObjectListing listing, ArrayList<String> listUserFolders, ArrayList<String> listRole, ArrayList<String> listfauthtype) {
+        ArrayList<JSONObject> listFolderAll = getListFolderAll(listing);
+        ArrayList<JSONObject> listFolder = getListFolder(listFolderAll, listUserFolders);
+        if (listFolder.size() == 0) {
+            listFolder = listFolderAll;
+        } else {
+            if (fusertype.equals("经销商")) {
+                //开启双向验证
+                listFolder = check(listFolder, listRole, listfauthtype);
+            }
+        }
+        return listFolder;
+    }
+
+
+    public void get(String folderPath, ArrayList<String> listUserFolders, ArrayList<String> listRole, ArrayList<String> listfauthtype) {
+        ObjectListing listing = getObjectListing(folderPath);
+        // 遍历所有文件。
+        listFiles.addAll(getFiles(listing, folderPath));
+        // 遍历所有commonPrefix。
+        List<JSONObject> listFolder_temp = getListFolder(listing, listUserFolders, listRole, listfauthtype);
+        listFolder.addAll(listFolder_temp);
+        if (listFolder_temp.size() > 0) {
+            for (JSONObject object : listFolder_temp) {
+                String path = object.getString("folderpath");
+                get(path, listUserFolders, listRole, listfauthtype);
+            }
+        }
+    }
+
 }