From 727b246ba890ca1fd72ffe7e068b126912741eca Mon Sep 17 00:00:00 2001 From: luchenqun Date: Mon, 20 Mar 2017 12:45:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A1=A8=E6=A0=BC=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E6=AD=A3=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/db.js | 176 +++++++----------- .../controllers/bookmarks-controller.js | 27 ++- public/scripts/controllers/tags-controller.js | 23 ++- 3 files changed, 108 insertions(+), 118 deletions(-) diff --git a/database/db.js b/database/db.js index 12c6d43..bae318d 100644 --- a/database/db.js +++ b/database/db.js @@ -52,15 +52,15 @@ Date.prototype.format = function(fmt) { //author: meizz // update delete 返回影响的行数 var db = { -} -// var sql = "SELECT * FROM `users` WHERE `username` = 'luchenqun1'"; -// client.query(sql, (err, result) => { -// if (err) { -// console.log(err); -// } else { -// console.log(result); -// } -// }); + } + // var sql = "SELECT * FROM `users` WHERE `username` = 'luchenqun1'"; + // client.query(sql, (err, result) => { + // if (err) { + // console.log(err); + // } else { + // console.log(result); + // } + // }); db.addBookmark = function(user_id, bookmark) { var insertSql = "INSERT INTO `bookmarks` (`user_id`, `title`, `description`, `url`, `public`, `click_count`) VALUES ('" + user_id + "', '" + bookmark.title + "', " + client.escape(bookmark.description) + ", '" + bookmark.url + "', '" + bookmark.public + "', '1')"; @@ -513,13 +513,13 @@ db.getBookmarksNavigate = function(tags) { // var sql = "SELECT t.id as tag_id, t.name as tag_name, b.* FROM `tags` as t LEFT OUTER JOIN tags_bookmarks as tb ON t.id = tb.tag_id LEFT OUTER JOIN bookmarks as b ON tb.bookmark_id = b.id WHERE t.user_id='" + user_id + "' ORDER BY t.id ASC, b.click_count DESC"; var sql = ""; tags.forEach((tag, index) => { - var t = 't' + tag.id; - if (index >= 1) { - sql += " UNION " - } - sql += "(SELECT * FROM ((SELECT t.id AS tag_id, t.`name` as tag_name, t.sort, b.* FROM `tags` as t, `bookmarks`as b, `tags_bookmarks` as tb WHERE t.id = tb.tag_id AND b.id = tb.bookmark_id AND t.id = " + tag.id + " ORDER BY b.click_count DESC LIMIT 0, 16) UNION (SELECT t.id AS tag_id, t.`name` as tag_name, t.sort, b.* FROM `tags` as t, `bookmarks`as b, `tags_bookmarks` as tb WHERE t.id = tb.tag_id AND b.id = tb.bookmark_id AND t.id = " + tag.id + " ORDER BY b.created_at DESC LIMIT 0, 16)) as " + t + " ORDER BY " + t + ".click_count DESC, " + t + ".created_at DESC)"; - }) - // console.log('getBookmarksNavigate ', sql); + var t = 't' + tag.id; + if (index >= 1) { + sql += " UNION " + } + sql += "(SELECT * FROM ((SELECT t.id AS tag_id, t.`name` as tag_name, t.sort, b.* FROM `tags` as t, `bookmarks`as b, `tags_bookmarks` as tb WHERE t.id = tb.tag_id AND b.id = tb.bookmark_id AND t.id = " + tag.id + " ORDER BY b.click_count DESC LIMIT 0, 16) UNION (SELECT t.id AS tag_id, t.`name` as tag_name, t.sort, b.* FROM `tags` as t, `bookmarks`as b, `tags_bookmarks` as tb WHERE t.id = tb.tag_id AND b.id = tb.bookmark_id AND t.id = " + tag.id + " ORDER BY b.created_at DESC LIMIT 0, 16)) as " + t + " ORDER BY " + t + ".click_count DESC, " + t + ".created_at DESC)"; + }) + // console.log('getBookmarksNavigate ', sql); return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { @@ -564,67 +564,49 @@ db.getBookmarksTable = function(params) { if (err) { reject(err); } else { - var temp = []; var bookmarks = []; var begin = (params.currentPage - 1) * params.perPageItems; var end = params.currentPage * params.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; - } - }) - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; + 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; } }) - if (!find) { - bookmarks.push(b1); - } - }) + .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); - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; - } + 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); }) - if (!find) { - bookmarks.push(b1); - } - }) - result.sort((a, b) => a.last_click >= b.last_click ? -1 : 1); - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; - } + 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); }) - if (!find) { - bookmarks.push(b1); - } - }) var bookmarksData = { totalItems: result.length, bookmarks: bookmarks, } + resolve(bookmarksData); } }); @@ -643,67 +625,49 @@ db.getBookmarksByTag = function(params) { if (err) { reject(err); } else { - var temp = []; var bookmarks = []; var begin = (params.currentPage - 1) * params.perPageItems; var end = params.currentPage * params.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; - } - }) - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; + 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; } }) - if (!find) { - bookmarks.push(b1); - } - }) + .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); - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; - } + 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); }) - if (!find) { - bookmarks.push(b1); - } - }) - result.sort((a, b) => a.last_click >= b.last_click ? -1 : 1); - temp = result.slice(begin, end); - temp.forEach((b1) => { - var find = false; - bookmarks.forEach((b2) => { - if (b1.id == b2.id) { - find = true; - } + 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); }) - if (!find) { - bookmarks.push(b1); - } - }) var bookmarksData = { totalItems: result.length, bookmarks: bookmarks, } + resolve(bookmarksData); } }); diff --git a/public/scripts/controllers/bookmarks-controller.js b/public/scripts/controllers/bookmarks-controller.js index af45c7a..25b19cd 100644 --- a/public/scripts/controllers/bookmarks-controller.js +++ b/public/scripts/controllers/bookmarks-controller.js @@ -181,17 +181,28 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' } $scope.order = $scope.order.map(() => false); $scope.order[index] = true; - var begin = ($scope.currentPage - 1) * perPageItems; - var end = $scope.currentPage * perPageItems; + $scope.bookmarks = []; if ($scope.order[0]) { $scope.bookmarkData.bookmarks.sort(clickCmp) - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end); + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 1) { + $scope.bookmarks.push(bookmark); + } + }) } else if ($scope.order[1]) { $scope.bookmarkData.bookmarks.sort((a, b) => a.created_at >= b.created_at ? -1 : 1); - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end); + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 2) { + $scope.bookmarks.push(bookmark); + } + }) } else { $scope.bookmarkData.bookmarks.sort((a, b) => a.last_click >= b.last_click ? -1 : 1); - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end); + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 3) { + $scope.bookmarks.push(bookmark); + } + }) } $timeout(function() { @@ -258,7 +269,11 @@ app.controller('bookmarksCtr', ['$scope', '$state', '$stateParams', '$filter', ' toastr.info('您还没有书签,请点击菜单栏的添加按钮进行添加', "提示"); } if (params.showStyle == 'card') { - data.bookmarksCreatedAt.forEach(bookmark => { + $scope.bookmarkData.bookmarks.sort((a, b) => a.created_at >= b.created_at ? -1 : 1); + var begin = ($scope.currentPage - 1) * perPageItems; + var end = $scope.currentPage * perPageItems; + var bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end); + bookmarks.forEach(bookmark => { bookmark.edit = false; $scope.bookmarks.push(bookmark); }) diff --git a/public/scripts/controllers/tags-controller.js b/public/scripts/controllers/tags-controller.js index 8269213..a8337a3 100644 --- a/public/scripts/controllers/tags-controller.js +++ b/public/scripts/controllers/tags-controller.js @@ -35,18 +35,29 @@ app.controller('tagsCtr', ['$scope', '$filter', '$window', '$stateParams', '$tim } $scope.order = $scope.order.map(() => false); $scope.order[index] = true; - var begin = ($scope.currentPage - 1) * perPageItems; - var end = $scope.currentPage * perPageItems; + $scope.bookmarks = []; if ($scope.order[0]) { - $scope.bookmarkData.bookmarks.sort(clickCmp) - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end);; + $scope.bookmarkData.bookmarks.sort(clickCmp); + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 1) { + $scope.bookmarks.push(bookmark); + } + }) } else if ($scope.order[1]) { $scope.bookmarkData.bookmarks.sort((a, b) => a.created_at >= b.created_at ? -1 : 1); - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end);; + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 2) { + $scope.bookmarks.push(bookmark); + } + }) } else { $scope.bookmarkData.bookmarks.sort((a, b) => a.last_click >= b.last_click ? -1 : 1); - $scope.bookmarks = $scope.bookmarkData.bookmarks.slice(begin, end);; + $scope.bookmarkData.bookmarks.forEach((bookmark) => { + if (bookmark.type == 3) { + $scope.bookmarks.push(bookmark); + } + }) } $timeout(function() { timeagoInstance.cancel();