From 1eb9927f40df949514465eaefe2bdb45f81d6a3a Mon Sep 17 00:00:00 2001 From: luchenqun Date: Wed, 22 Feb 2017 22:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E7=95=8C=E9=9D=A2=E7=9A=84=E4=B9=A6=E7=AD=BE?= =?UTF-8?q?=E7=9A=84sql=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/db.js | 38 +++++++++++------- public/scripts/controllers/edit-controller.js | 17 +++++++- routes/api.js | 39 ++++++++++++------- 3 files changed, 65 insertions(+), 29 deletions(-) diff --git a/database/db.js b/database/db.js index 15dbeff..ab0d28e 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 + "', '" + bookmark.description + "', '" + bookmark.url + "', '" + bookmark.public + "', '1')"; @@ -83,7 +83,6 @@ db.addBookmark = function(user_id, bookmark) { } } }); - }); }; @@ -300,6 +299,7 @@ db.getUser = function(username) { db.getTags = function(user_id) { console.log('getTags'); var sql = "SELECT t.*, tb.cnt FROM `tags` as t LEFT OUTER JOIN ( SELECT `tag_id`, COUNT(tag_id) as cnt FROM tags_bookmarks GROUP BY tag_id ) tb ON t.id = tb.tag_id WHERE t.user_id = '" + user_id + "' ORDER BY last_use DESC"; + return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { if (err) { @@ -392,9 +392,19 @@ db.addTags = function(user_id, tags_name) { }); }; -db.getBookmarksNavigate = function(user_id) { - console.log('getBookmarksNavigate'); - 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"; +db.getBookmarksNavigate = function(tags) { + // console.log('getBookmarksNavigate'); + // 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, 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, 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(sql); + return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { if (err) { @@ -592,7 +602,7 @@ db.getBookmarkWaitSnap = function(today) { db.updateBookmarkSnapState = function(id, snapState) { console.log("updateBookmarkSnapState id = " + id + ", snapState = " + snapState); - var sql = "UPDATE `bookmarks` SET `snap_state`='"+ snapState +"' WHERE (`id`='"+ id +"')"; + var sql = "UPDATE `bookmarks` SET `snap_state`='" + snapState + "' WHERE (`id`='" + id + "')"; return new Promise(function(resolve, reject) { client.query(sql, (err, result) => { if (err) { diff --git a/public/scripts/controllers/edit-controller.js b/public/scripts/controllers/edit-controller.js index 2bb2f6c..6e92a73 100644 --- a/public/scripts/controllers/edit-controller.js +++ b/public/scripts/controllers/edit-controller.js @@ -97,15 +97,28 @@ app.controller('editCtr', ['$scope', '$state', '$timeout', 'bookmarkService', 'p .then((data) => { $('.ui.modal.js-add-bookmark').modal('hide'); pubSubService.publish('EditCtr.inserBookmarsSuccess', data); + console.log('addBookmark success', JSON.stringify(data)); + if (data.title) { + toastr.success('[ ' + data.title + ' ] 添加成功', "提示"); + } else { + toastr.error('[ ' + params.title + ' ] 添加失败', "提示"); + } }) - .catch((err) => console.log('addBookmark err', err)); + .catch((err) => { + console.log('addBookmark err', err); + toastr.error('[ ' + params.title + ' ] 添加失败' + JSON.stringify(err), "提示"); + }); } else { bookmarkService.updateBookmark(params) .then((data) => { $('.ui.modal.js-add-bookmark').modal('hide'); pubSubService.publish('EditCtr.inserBookmarsSuccess', data); + toastr.success('[ ' + params.title + ' ] 更新成功', "提示"); }) - .catch((err) => console.log('updateBookmark err', err)); + .catch((err) => { + console.log('updateBookmark err', err); + toastr.error('[ ' + params.title + ' ] 更新失败' + JSON.stringify(err), "提示"); + }); } } diff --git a/routes/api.js b/routes/api.js index 66a2055..7c2818f 100644 --- a/routes/api.js +++ b/routes/api.js @@ -226,7 +226,8 @@ api.get('/bookmarks', function(req, res) { var userId = req.session.user.id; var params = req.query; if (params.showStyle === 'navigate') { - db.getBookmarksNavigate(userId) + db.getTags(userId) + .then((tags) => db.getBookmarksNavigate(tags)) .then((result) => { var data = []; var tag = { @@ -248,11 +249,12 @@ api.get('/bookmarks', function(req, res) { tag.click = 0; tag.bookmarks = []; } - - if (bookmark.id && tag.bookmarks.length < 31) { - tag.click += bookmark.click_count; - tag.bookmarks.push(bookmark); - } + tag.click += bookmark.click_count; + tag.bookmarks.push(bookmark); + // if (bookmark.id && tag.bookmarks.length < 31) { + // tag.click += bookmark.click_count; + // tag.bookmarks.push(bookmark); + // } }); if (result && result.length > 0) { data.push(tag); @@ -527,13 +529,13 @@ api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) { var tags = []; item.tags.forEach((tag) => { - allTags.forEach((at) => { - if (at.name == tag) { - tags.push(at.id); - } - }) + allTags.forEach((at) => { + if (at.name == tag) { + tags.push(at.id); + } }) - // 插入书签 + }) + // 插入书签 db.addBookmark(userId, bookmark) // 插入书签 .then((bookmark_id) => { db.delBookmarkTags(bookmark_id); // 不管3721,先删掉旧的分类 @@ -565,14 +567,25 @@ api.post('/addBookmark', function(req, res) { var bookmark = req.body.params; var userId = req.session.user.id; var tags = bookmark.tags; + var bookmarkId = -1; + var ret = {}; db.addBookmark(userId, bookmark) // 插入书签 .then((bookmark_id) => { db.delBookmarkTags(bookmark_id); // 不管3721,先删掉旧的分类 + bookmarkId = bookmark_id; return bookmark_id; }) // 将之前所有的书签分类信息删掉 .then((bookmark_id) => db.addTagsBookmarks(tags, bookmark_id)) // 插入分类 .then(() => db.updateLastUseTags(userId, tags)) // 更新最新使用的分类 - .then(() => res.json({})) // 运气不错 + .then(() => db.getBookmark(bookmarkId)) // 获取书签信息,返回去 + .then((bookmark) => { + ret = bookmark; + return db.getBookmarkTags(bookmarkId); + }) + .then((bookmarkTags) => { + ret.tags = bookmarkTags; + res.json(ret) + }) .catch((err) => console.log('addBookmark err', err)); // oops! });