diff --git a/database/db.js b/database/db.js index 8b81659..37de3ba 100644 --- a/database/db.js +++ b/database/db.js @@ -627,6 +627,69 @@ db.getBookmarksCostomTag = function(user_id, perPageItems) { }); }; +db.getBookmarksCostomAllUsersTag = function(user_id, perPageItems) { + console.log('getBookmarksCostomAllUsersTag', user_id, perPageItems); + perPageItems = perPageItems || 50; + var sql1 = "(SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d %H:%i:%s') as last_click FROM `bookmarks` WHERE `user_id` != '" + user_id + "' ORDER BY `click_count` DESC LIMIT 0, " + perPageItems + ")"; + var sql2 = "(SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d %H:%i:%s') as last_click FROM `bookmarks` WHERE `user_id` != '" + user_id + "' ORDER BY `created_at` DESC LIMIT 0, " + perPageItems + ")"; + var sql3 = "(SELECT id, user_id, title, description, url, public, click_count, DATE_FORMAT(created_at, '%Y-%m-%d %H:%i:%s') as created_at, DATE_FORMAT(last_click, '%Y-%m-%d %H:%i:%s') as last_click FROM `bookmarks` WHERE `user_id` != '" + user_id + "' ORDER BY `last_click` DESC LIMIT 0, " + perPageItems + ")"; + + var sql = sql1 + " UNION " + sql2 + " UNION " + sql3; + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + var bookmarks = []; + var begin = 0; + var end = perPageItems; + + result.sort((a, b) => { + var click1 = parseInt(a.click_count); + var click2 = parseInt(b.click_count); + if (click1 > click2) { + return -1; + } else if (click1 == click2) { + return a.created_at >= b.created_at ? -1 : 1; + } else { + return 1; + } + }) + .slice(begin, end) + .forEach((b) => { + var bookmark = JSON.parse(JSON.stringify(b)); // 执行深度复制 + bookmark.type = 1; + bookmarks.push(bookmark); + }) + + result.sort((a, b) => a.created_at >= b.created_at ? -1 : 1) + .slice(begin, end) + .forEach((b) => { + var bookmark = JSON.parse(JSON.stringify(b)); // 执行深度复制 + bookmark.type = 2; + bookmarks.push(bookmark); + }) + + result.sort((a, b) => a.last_click >= b.last_click ? -1 : 1) + .slice(begin, end) + .forEach((b) => { + var bookmark = JSON.parse(JSON.stringify(b)); // 执行深度复制 + bookmark.type = 3; + bookmarks.push(bookmark); + }) + + + var bookmarksData = { + totalItems: result.length, + bookmarks: bookmarks, + } + resolve(bookmarksData); + } + }); + }); +}; + + db.getBookmarksTable = function(params) { var user_id = params.userId; params.currentPage = params.currentPage || 1; diff --git a/public/scripts/controllers/tags-controller.js b/public/scripts/controllers/tags-controller.js index c74a9fe..3ae6264 100644 --- a/public/scripts/controllers/tags-controller.js +++ b/public/scripts/controllers/tags-controller.js @@ -31,7 +31,13 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim id: -1, cnt: 50, bookmarkClicked: false, - name: '分类定制', + name: '个人定制', + } + $scope.costomAllUsersTag = { + id: -1, + cnt: 50, + bookmarkClicked: false, + name: '全站定制', } var timeagoInstance = timeago(); @@ -100,6 +106,10 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim $scope.costomTag.bookmarkClicked = true; } + if (tagId == -2) { + $scope.costomAllUsersTag.bookmarkClicked = true; + } + var params = { tagId: tagId, currentPage: currentPage, @@ -113,7 +123,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim $scope.bookmarkData = data; $scope.changeOrder($scope.order.indexOf(true)); $scope.bookmarkCount = $scope.bookmarkData.totalItems; - $scope.totalPages = tagId == -1 ? 1 : Math.ceil($scope.bookmarkCount / perPageItems); + $scope.totalPages = tagId <= -1 ? 1 : Math.ceil($scope.bookmarkCount / perPageItems); $scope.inputPage = ''; $scope.loadBookmarks = false; diff --git a/public/views/tags.html b/public/views/tags.html index cca6b40..20985f6 100644 --- a/public/views/tags.html +++ b/public/views/tags.html @@ -13,6 +13,12 @@ ({{ costomTag.cnt || 0 }}) +
+
+ {{ costomAllUsersTag.name }} + ({{ costomAllUsersTag.cnt || 0 }}) +
+
diff --git a/routes/api.js b/routes/api.js index a9bbf79..b58e328 100644 --- a/routes/api.js +++ b/routes/api.js @@ -515,9 +515,9 @@ api.get('/bookmarksByTag', function(req, res) { bookmarks: [], } - var fun = (params.tagId == -1) ? (db.getBookmarksCostomTag) : (db.getBookmarksByTag); + var fun = (params.tagId <= -1) ? (params.tagId == -1 ? db.getBookmarksCostomTag : db.getBookmarksCostomAllUsersTag) : (db.getBookmarksByTag); - fun((params.tagId == -1) ? (userId) : (params), params.perPageItems) + fun((params.tagId <= -1) ? (userId) : (params), params.perPageItems) .then((bookmarksData) => { sendData = bookmarksData; var bookmarkIds = sendData.bookmarks.map((bookmark) => bookmark.id)