From 6e4fa07ee159582a9602ad79a079fad4842e11b8 Mon Sep 17 00:00:00 2001 From: HelloWorld Date: Thu, 9 Apr 2020 10:53:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E5=AE=9A=E5=88=B6=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E9=A1=B5=E6=9C=80=E8=BF=91=E6=96=B0=E5=A2=9E=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E7=82=B9=E5=87=BB=E6=9C=80=E5=A4=9A=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=8C=89=E7=85=A72:2:1=E7=9A=84=E6=AF=94=E4=BE=8B=E5=88=86?= =?UTF-8?q?=E9=85=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/api.js | 51 ++++++++++++++++++--- www/scripts/app-angular.js | 6 --- www/scripts/controllers/menus-controller.js | 12 ----- www/scripts/controllers/tags-controller.js | 4 +- www/scripts/services/data-service.js | 1 - www/views/tags.html | 6 ++- 6 files changed, 51 insertions(+), 29 deletions(-) diff --git a/src/controller/api.js b/src/controller/api.js index e8dc94c..2f9a8b8 100644 --- a/src/controller/api.js +++ b/src/controller/api.js @@ -248,19 +248,58 @@ module.exports = class extends Base { let tagId = this.get("tagId"); let showType = this.get("showType") || "createdAt"; // tagId = -1 个人定制 从自己里面取 - let where = {}; + let condition = {}; let order = showType + ' DESC'; + let page = this.get('page'); + let pageSize = parseInt(this.get('pageSize') || 50); if (tagId == -1) { - where = { userId: this.ctx.state.user.id }; - } else if (tagId == -2) { - where = { userId: ['!=', this.ctx.state.user.id] }; + condition = { userId: this.ctx.state.user.id }; } else { - where = { tagId }; + condition = { tagId }; } try { - let data = await this.model('bookmarks').where(where).order(order).page(this.get('page'), this.get('pageSize')).countSelect(); + // 如果是第0页而且是个人定制的,把 最近点击 与 最近新增 的返回去。 + let data = {}; + if (page == 0 && tagId == -1) { + let count = await this.model('bookmarks').where(condition).count('id'); + let totalPages = Math.ceil(count / pageSize); + // 按照 2:2:1取数据 + let length = Math.ceil(pageSize * 2 / 5); + let bookmarks = await this.model('bookmarks').where(condition).order('createdAt DESC').limit(0, length).select(); // 这个取一半 + + // 取最近点击部分数据 + let cnt = 0; + let bookmarks2 = await this.model('bookmarks').where(condition).order('lastClick DESC').limit(0, pageSize * 2).select(); // 这个多取一点,有可能跟上面的重复了 + for (const bookmark of bookmarks2) { + let find = bookmarks.find(item => item.id == bookmark.id); + if (!find) { + bookmarks.push(bookmark); + cnt++; + if (cnt >= length) break; + } + } + + // 取点击次数最多部分 + let bookmarks3 = await this.model('bookmarks').where(condition).order('clickCount DESC').limit(0, pageSize * 2).select(); // 这个多取一点,有可能跟上面的重复了 + for (const bookmark of bookmarks3) { + let find = bookmarks.find(item => item.id == bookmark.id); + if (!find) { + bookmarks.push(bookmark); + if (bookmarks.length >= pageSize) break; + } + } + + data = { + count, + totalPages, + pageSize, + data: bookmarks + } + } else { + data = await this.model('bookmarks').where(condition).order(order).page(page, pageSize).countSelect(); + } this.json({ code: 0, data }); } catch (error) { this.json({ code: 1, msg: error.toString() }); diff --git a/www/scripts/app-angular.js b/www/scripts/app-angular.js index 44e9061..1090043 100644 --- a/www/scripts/app-angular.js +++ b/www/scripts/app-angular.js @@ -51,9 +51,6 @@ app.config(function ($stateProvider, $urlRouterProvider, $httpProvider) { .state('bookmarks', { url: '/bookmarks', templateUrl: 'views/bookmarks.html', - params: { - showStyle: null, - }, controller: 'bookmarksCtr' }) .state('weixin-article', { @@ -103,9 +100,6 @@ app.config(function ($stateProvider, $urlRouterProvider, $httpProvider) { .state('login', { url: '/login', templateUrl: 'views/login.html', - params: { - showStyle: 'table', - }, controller: 'loginCtr' }) .state('/', { diff --git a/www/scripts/controllers/menus-controller.js b/www/scripts/controllers/menus-controller.js index 4bbfac7..76092ae 100644 --- a/www/scripts/controllers/menus-controller.js +++ b/www/scripts/controllers/menus-controller.js @@ -4,7 +4,6 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', '$window', '$time $scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */ $scope.keyword = ''; /**< 搜索关键字 */ - $scope.showStyle = null; $scope.searchHistory = []; $scope.historyTypes = dataService.historyTypes; $scope.quickUrl = {}; @@ -168,17 +167,6 @@ app.controller('menuCtr', ['$scope', '$stateParams', '$state', '$window', '$time }, 500) } - $scope.updateShowStyle = function (showStyle) { - console.log('updateShowStyle', showStyle); - $scope.showStyle = showStyle; - $('.js-radio-' + showStyle).checkbox('set checked'); - $state.go('bookmarks', { - showStyle: showStyle, - }, { - reload: true, - }) - } - $scope.showAddBookmarkMoadl = function () { pubSubService.publish('MenuCtr.showAddBookmarkMoadl', { 'action': 'add' diff --git a/www/scripts/controllers/tags-controller.js b/www/scripts/controllers/tags-controller.js index a6197f8..6b0b07c 100644 --- a/www/scripts/controllers/tags-controller.js +++ b/www/scripts/controllers/tags-controller.js @@ -20,7 +20,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$state', '$window', '$statePara $scope.tagsIndex = []; // 书签索引 $scope.bookmarks = []; $scope.totalPages = 0; - $scope.currentPage = 1; + $scope.currentPage = 0; $scope.inputPage = ''; $scope.currentTagId = ($stateParams && $stateParams.tagId) || (-1); $scope.editMode = false; @@ -40,7 +40,7 @@ app.controller('tagsCtr', ['$scope', '$filter', '$state', '$window', '$statePara $scope.bookmarks = []; tagId && ($scope.currentTagId = tagId); - page && ($scope.currentPage = page); + Number.isInteger(page) && ($scope.currentPage = page); showType && ($scope.showType = showType); $scope.loading = true; diff --git a/www/scripts/services/data-service.js b/www/scripts/services/data-service.js index d0e45b6..5002a7c 100644 --- a/www/scripts/services/data-service.js +++ b/www/scripts/services/data-service.js @@ -81,7 +81,6 @@ app.factory('dataService', [function () { return $(selector).length >= 1; }, historyTypes: ['书签', '谷歌', 'Github', '栈溢出', '百度', '备忘录'], - showStyles: ['navigate', 'costomTag', 'card', 'table'], forbidQuickKey: { 'A': '在任意界面,已用做新增备忘录', 'C': '在有关书签页面,用作复制书签链接', diff --git a/www/views/tags.html b/www/views/tags.html index 99b151e..81410a5 100644 --- a/www/views/tags.html +++ b/www/views/tags.html @@ -1,6 +1,6 @@
-
+
{{ tag.name }} ({{ tag.bookmarkCount || 0 }})
@@ -112,7 +112,7 @@
-
+
@@ -128,6 +128,8 @@
+
+