Authored by 姜枫

Merge branch 'feature/optimRear' into 'master'

优化服务端代码

后端相关逻辑简化。

See merge request !220
@@ -10,25 +10,43 @@ const utils = '../../../utils'; @@ -10,25 +10,43 @@ const utils = '../../../utils';
10 const headerModel = require('../../../doraemon/models/header'); 10 const headerModel = require('../../../doraemon/models/header');
11 const searchProcess = require(`${utils}/search-process`); 11 const searchProcess = require(`${utils}/search-process`);
12 const newModel = require(`${mRoot}/new`); 12 const newModel = require(`${mRoot}/new`);
  13 +const searchModel = require(`${mRoot}/search`);
13 const _ = require('lodash'); 14 const _ = require('lodash');
14 const helpers = global.yoho.helpers; 15 const helpers = global.yoho.helpers;
15 16
16 // 新品到着(blk) 17 // 新品到着(blk)
17 -const blkNewGoods = (req, res) => { 18 +const blkNewGoods = (req, res, next) => {
18 let params = Object.assign({ 19 let params = Object.assign({
19 isblknew: true 20 isblknew: true
20 }, req.query); 21 }, req.query);
21 22
22 - res.render('search/goods-list', {  
23 - module: 'product',  
24 - page: 'search-list',  
25 - pageHeader: headerModel.setNav({  
26 - navTitle: req.query.title || req.query.sort_name || '新品抢先看'  
27 - }),  
28 - goodList: params,  
29 - showDownloadApp: true,  
30 - pageFooter: true  
31 - }); 23 + // 获取第一页数据做服务端渲染
  24 + let uid = req.user.uid || 0;
  25 + let initialData = _.assign({
  26 + gender: req.query.gender || '1,3',
  27 + type: 'default',
  28 + order: '0',
  29 + page: 1,
  30 + limit: 12
  31 + }, params);
  32 +
  33 + if (uid) {
  34 + initialData.uid = uid;
  35 + }
  36 +
  37 + searchModel.getSearchData(initialData).then(firstScreenGoodsList => {
  38 + res.render('search/goods-list', {
  39 + module: 'product',
  40 + page: 'search-list',
  41 + pageHeader: headerModel.setNav({
  42 + navTitle: req.query.title || req.query.sort_name || '新品抢先看'
  43 + }),
  44 + goodList: params,
  45 + firstPageGoodsList: firstScreenGoodsList.list,
  46 + showDownloadApp: true,
  47 + pageFooter: true
  48 + });
  49 + }).catch(next);
32 }; 50 };
33 51
34 // 新品到着 52 // 新品到着
@@ -20,7 +20,7 @@ const getCommonConsult = () => { @@ -20,7 +20,7 @@ const getCommonConsult = () => {
20 20
21 return api.get('', params, { 21 return api.get('', params, {
22 code: 200 22 code: 200
23 - }).then(result => { 23 + }, {cache: true}).then(result => {
24 let data = {}; 24 let data = {};
25 25
26 if (result.data) { 26 if (result.data) {
@@ -37,24 +37,20 @@ const getCommonConsult = () => { @@ -37,24 +37,20 @@ const getCommonConsult = () => {
37 * @return {[object]} 37 * @return {[object]}
38 */ 38 */
39 const _formatConsultsList = (data) => { 39 const _formatConsultsList = (data) => {
40 - let list = [];  
41 -  
42 - if (data.length) {  
43 - _.forEach(data, (value) => {  
44 - list.push({  
45 - question: value.ask,  
46 - time: value.ask_time,  
47 - answer: value.answer,  
48 - id: value.id,  
49 - isLike: value.is_like === 'Y',  
50 - like: _.toNumber(value.like),  
51 - isUseful: value.is_useful === 'Y',  
52 - useful: _.toNumber(value.useful)  
53 - });  
54 - });  
55 - }  
56 -  
57 - return list; 40 + data = data || [];
  41 +
  42 + return data.map(function(value) {
  43 + return {
  44 + question: value.ask,
  45 + time: value.ask_time,
  46 + answer: value.answer,
  47 + id: value.id,
  48 + isLike: value.is_like === 'Y',
  49 + like: _.toNumber(value.like),
  50 + isUseful: value.is_useful === 'Y',
  51 + useful: _.toNumber(value.useful)
  52 + };
  53 + });
58 }; 54 };
59 55
60 /** 56 /**
@@ -75,7 +71,7 @@ const getConsults = (id, page, limit, uid) => { @@ -75,7 +71,7 @@ const getConsults = (id, page, limit, uid) => {
75 71
76 return api.get('', params, { 72 return api.get('', params, {
77 code: 200 73 code: 200
78 - }).then(result => { 74 + }, {cache: true}).then(result => {
79 let data = {}; 75 let data = {};
80 76
81 if (result && result.data && result.data.list) { 77 if (result && result.data && result.data.list) {
@@ -32,23 +32,24 @@ const _processBrandNames = (list) => { @@ -32,23 +32,24 @@ const _processBrandNames = (list) => {
32 const formatData = []; 32 const formatData = [];
33 const brandDomainMap = {}, brandNameMap = {}; 33 const brandDomainMap = {}, brandNameMap = {};
34 const ttl = 60000; // 默认缓存一分钟 34 const ttl = 60000; // 默认缓存一分钟
  35 + let brandDomain = '';
  36 + let brandName = '';
35 37
36 list = list || []; 38 list = list || [];
37 - list = camelCase(list);  
38 39
39 _.forEach(list, (item) => { 40 _.forEach(list, (item) => {
40 _.forEach(item, (obj) => { 41 _.forEach(item, (obj) => {
41 - formatData.push({  
42 - brandDomain: obj.brandDomain && obj.brandDomain.toLowerCase(),  
43 - brandName: obj.brandDomain && obj.brandName.toLowerCase()  
44 - }); 42 + brandDomain = obj.brand_domain && obj.brand_domain.toLowerCase();
  43 + brandName = obj.brand_name && obj.brand_name.toLowerCase();
45 44
46 - if (obj && obj.brandDomain) {  
47 - brandDomainMap[obj.brandDomain.toLowerCase()] = obj.brandDomain.toLowerCase();  
48 - } 45 + if (brandDomain && brandName) {
  46 + formatData.push({
  47 + brandDomain: brandDomain,
  48 + brandName: brandName
  49 + });
49 50
50 - if (obj && obj.brandName && obj.brandDomain) {  
51 - brandNameMap[obj.brandName.toLowerCase()] = obj.brandDomain.toLowerCase(); 51 + brandDomainMap[brandDomain] = brandDomain;
  52 + brandNameMap[brandName] = brandDomain;
52 } 53 }
53 }); 54 });
54 }); 55 });
@@ -71,15 +72,14 @@ const _processClassNames = (list) => { @@ -71,15 +72,14 @@ const _processClassNames = (list) => {
71 }; 72 };
72 73
73 list = list || []; 74 list = list || [];
74 - list = camelCase(list);  
75 75
76 _.forEach(list, (item) => { 76 _.forEach(list, (item) => {
77 _.forEach(item, (obj) => { 77 _.forEach(item, (obj) => {
78 - formatData.first[obj.categoryId] = obj.categoryName; 78 + formatData.first[obj.category_id] = obj.category_name;
79 79
80 if (obj.sub) { 80 if (obj.sub) {
81 _.forEach(obj.sub, (sub) => { 81 _.forEach(obj.sub, (sub) => {
82 - formatData.second[sub.categoryId] = sub.categoryName; 82 + formatData.second[sub.category_id] = sub.category_name;
83 }); 83 });
84 } 84 }
85 85
@@ -76,7 +76,7 @@ module.exports = { @@ -76,7 +76,7 @@ module.exports = {
76 port: '4444' // influxdb port 76 port: '4444' // influxdb port
77 }, 77 },
78 console: { 78 console: {
79 - level: 'debug', 79 + level: 'info',
80 colorize: 'all', 80 colorize: 'all',
81 prettyPrint: true 81 prettyPrint: true
82 } 82 }
1 { 1 {
2 "name": "m-yohobuy-node", 2 "name": "m-yohobuy-node",
3 - "version": "5.4.8", 3 + "version": "5.4.9",
4 "private": true, 4 "private": true,
5 "description": "A New Yohobuy Project With Express", 5 "description": "A New Yohobuy Project With Express",
6 "repository": { 6 "repository": {
@@ -45,7 +45,7 @@ function initSwiper(data) { @@ -45,7 +45,7 @@ function initSwiper(data) {
45 idStrReg = /container-(\d+)['"]{1}/gi, 45 idStrReg = /container-(\d+)['"]{1}/gi,
46 idReg = /\d+/, 46 idReg = /\d+/,
47 idArr = data.match(idStrReg), 47 idArr = data.match(idStrReg),
48 - idArrLen = idArr.length, 48 + idArrLen = idArr && idArr.length || 0,
49 containerId; 49 containerId;
50 50
51 // $swiperList = $('.swiper-container'); 51 // $swiperList = $('.swiper-container');
@@ -95,7 +95,7 @@ function loadData($parent, url, page) { @@ -95,7 +95,7 @@ function loadData($parent, url, page) {
95 if (data.total === 0) { 95 if (data.total === 0) {
96 96
97 $loadingMask.addClass('hide'); 97 $loadingMask.addClass('hide');
98 - $parent.closest('.fav-type').find('.fav-null-box').removeClass('hide'); 98 + $parent.closest('.fav-type').find('.fav-null-box').removeClass('hide').addClass('show');
99 window.rePosFooter(); 99 window.rePosFooter();
100 } else if (data.more === true) { 100 } else if (data.more === true) {
101 101
@@ -12,7 +12,6 @@ @@ -12,7 +12,6 @@
12 } 12 }
13 13
14 .swiper-pagination { 14 .swiper-pagination {
15 - display: none;  
16 position: absolute; 15 position: absolute;
17 left: 0; 16 left: 0;
18 right: 0; 17 right: 0;