Authored by 周少峰

sort list

1 /* 1 /*
2 - * @Author: Targaryen  
3 - * @Date: 2016-05-21 10:59:20  
4 - * @Last Modified by: Targaryen  
5 - * @Last Modified time: 2016-06-08 13:37:17 2 + * @Author: sefon
  3 + * @Date: 2016-07-24 11:40:21
6 */ 4 */
7 5
8 'use strict'; 6 'use strict';
9 const mRoot = '../models'; 7 const mRoot = '../models';
10 -  
11 -// list 页 model  
12 const list = require(`${mRoot}/list`); 8 const list = require(`${mRoot}/list`);
13 -const headerModel = require('../../../doraemon/models/header');  
14 -  
15 -exports.getProductPic = (req, res) => {  
16 -  
17 - res.jsonp();  
18 -};  
19 9
20 /** 10 /**
21 - * 商品列表页 11 + * 商品分类列表页
22 * @param {[type]} req [description] 12 * @param {[type]} req [description]
23 * @param {[type]} res [description] 13 * @param {[type]} res [description]
24 * @return {[type]} [description] 14 * @return {[type]} [description]
25 */ 15 */
26 exports.index = (req, res, next) => { 16 exports.index = (req, res, next) => {
27 - let params = Object.assign({  
28 - order: 's_t_asc,s_s_asc'  
29 - }, req.query); 17 + let resData = {};
30 18
31 - let channel = req.query.channel || req.cookies._Channel || 'boys';  
32 -  
33 - params.uid = req.user.uid || 0;  
34 -  
35 - let responseData = {  
36 - module: 'product',  
37 - page: 'sale',  
38 - footerTop: true  
39 - }; 19 + list.getListData(req.query).then(result => {
  20 + Object.assign(resData, result);
  21 + res.render('list/index', resData);
  22 + }).catch(next);
40 23
41 - let headerData = {}; 24 +};
42 25
43 - headerModel.requestHeaderData(channel).then(result => {  
44 - headerData = result.headerData;  
45 - }); 26 +/**
  27 + * 新品到着
  28 + * @param {[type]} req [description]
  29 + * @param {[type]} res [description]
  30 + * @return {[type]} [description]
  31 + */
  32 +exports.new = (req, res, next) => {
  33 + let resData = {};
46 34
47 - list.getSaleOthersData(params, channel).then((result) => {  
48 - responseData.saleList = result;  
49 - responseData.resultShow = JSON.stringify(result, null, 4);  
50 - responseData.headerData = headerData;  
51 - res.render('sale/other', responseData); 35 + list.getListData(req.query).then(result => {
  36 + Object.assign(resData, result);
  37 + res.render('list/index', resData);
52 }).catch(next); 38 }).catch(next);
53 39
54 }; 40 };
  1 +/*
  2 + * @Author: Targaryen
  3 + * @Date: 2016-05-21 10:59:20
  4 + * @Last Modified by: Targaryen
  5 + * @Last Modified time: 2016-06-08 13:37:17
  6 + */
  7 +
  8 +'use strict';
  9 +const mRoot = '../models';
  10 +
  11 +// list 页 model
  12 +const list = require(`${mRoot}/outletsList`);
  13 +const headerModel = require('../../../doraemon/models/header');
  14 +
  15 +exports.getProductPic = (req, res) => {
  16 +
  17 + res.jsonp();
  18 +};
  19 +
  20 +/**
  21 + * 商品列表页
  22 + * @param {[type]} req [description]
  23 + * @param {[type]} res [description]
  24 + * @return {[type]} [description]
  25 + */
  26 +exports.index = (req, res, next) => {
  27 + let params = Object.assign({
  28 + order: 's_t_asc,s_s_asc'
  29 + }, req.query);
  30 +
  31 + let channel = req.query.channel || req.cookies._Channel || 'boys';
  32 +
  33 + params.uid = req.user.uid || 0;
  34 +
  35 + let responseData = {
  36 + module: 'product',
  37 + page: 'sale',
  38 + footerTop: true
  39 + };
  40 +
  41 + let headerData = {};
  42 +
  43 + headerModel.requestHeaderData(channel).then(result => {
  44 + headerData = result.headerData;
  45 + });
  46 +
  47 + list.getListData(params, channel).then((result) => {
  48 + responseData.saleList = result;
  49 + responseData.resultShow = JSON.stringify(result, null, 4);
  50 + responseData.headerData = headerData;
  51 + res.render('sale/other', responseData);
  52 + }).catch(next);
  53 +
  54 +};
@@ -17,7 +17,6 @@ const search = require(`${mRoot}/search`); @@ -17,7 +17,6 @@ const search = require(`${mRoot}/search`);
17 exports.index = (req, res, next) => { 17 exports.index = (req, res, next) => {
18 let resData = {}; 18 let resData = {};
19 19
20 - // req.cookie._channel;//频道  
21 search.getSearchData(req.query).then(result => { 20 search.getSearchData(req.query).then(result => {
22 Object.assign(resData, result); 21 Object.assign(resData, result);
23 res.render('search/index', resData); 22 res.render('search/index', resData);
1 /* 1 /*
2 - * @Author: Targaryen  
3 - * @Date: 2016-06-02 15:11:15  
4 - * @Last Modified by: Targaryen  
5 - * @Last Modified time: 2016-06-08 14:57:54 2 + * @Author: sefon
  3 + * @Date: 2016-07-24 11:48:22
6 */ 4 */
7 5
8 'use strict'; 6 'use strict';
9 const utils = '../../../utils'; 7 const utils = '../../../utils';
10 const api = global.yoho.API; 8 const api = global.yoho.API;
11 -const saleApi = require('./sale-api');  
12 -const outletsApi = require('./outlets-api'); 9 +const searchApi = require('./search-api');
  10 +const headerModel = require('../../../doraemon/models/header');
13 const productProcess = require(`${utils}/product-process`); 11 const productProcess = require(`${utils}/product-process`);
14 -const publicHandler = require('./public-handler'); 12 +const searchHandler = require('./search-handler');
  13 +
  14 +// 搜索分类信息需要的参数
  15 +const positionId = 10;
15 16
16 /** 17 /**
17 - * 获取商品列表商品数据 Controller 调用  
18 - * @param {[type]} params [常规参数]  
19 - * @param {[type]} extra [左侧列表额外要拼接的参数]  
20 - * @return {[type]} [description] 18 + * 获取商品分类列表数据
21 */ 19 */
22 -exports.getListData = (params, channel) => {  
23 - let apiArr = [];  
24 -  
25 - if (params.productPool) {  
26 - // 奥莱活动页调用app.search.sales  
27 - apiArr = [  
28 - saleApi.getSaleGoodsList({limit: '1', channel: channel }),  
29 - saleApi.getSaleGoodsList(Object.assign(params, { channel: channel }))  
30 - ];  
31 - } else {  
32 - // 奥莱品类页调用app.search.li  
33 - apiArr = [  
34 - outletsApi.getOutletsGoodsList({limit: '1', channel: channel }),  
35 - outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel }))  
36 - ];  
37 - }  
38 - return api.all(apiArr).then(result => {  
39 - let finalResult = {}; 20 +exports.getListData = (params) => {
  21 + // 调用接口
  22 + let apiMethod = [
  23 + headerModel.requestHeaderData(),
  24 + searchApi.getSortList(),
  25 + searchApi.getProductList(params)
  26 + ];
40 27
41 - // 获取商品数据和顶部筛选条件  
42 - if (result[0].code === 200) {  
43 - finalResult.leftContent = publicHandler.handleSaleSortData(result[0].data.filter.group_sort, params);  
44 - finalResult.pathNav = publicHandler.handlePathNavData(result[0].data.filter.group_sort, params); 28 + // 搜索分类介绍和广告
  29 + if (params.msort && params.misort) {
  30 + let IntroParams = {
  31 + position_id: positionId,
  32 + max_sort_id: params.msort,
  33 + middle_sort_id: params.misort,
  34 + gender: params.gender || '1,3'
  35 + };
45 36
46 - } 37 + apiMethod.push(searchApi.getSortIntro(IntroParams));
  38 + apiMethod.push(searchApi.getSortAds(IntroParams));
  39 + }
  40 +
  41 + return api.all(apiMethod).then(result => {
  42 + let finalResult = {
  43 + headerData: Object.assign(result[0].headerData, {
  44 + header: true
  45 + }),
  46 + search: {}
  47 + };
47 48
48 // 获取左侧类目数据 49 // 获取左侧类目数据
49 if (result[1].code === 200) { 50 if (result[1].code === 200) {
50 - Object.assign(finalResult, {  
51 - filters: publicHandler.handleSaleFilterData(result[1].data.filter, params),  
52 - opts: publicHandler.handleSaleOptsData(params, result[1].data.total),  
53 - totalCount: result[1].data.total,  
54 - footPager: publicHandler.handlePagerData(result[1].data.total, params),  
55 - goods: productProcess.processProductList(result[1].data.product_list) 51 + finalResult.search = {
  52 + leftContent: searchHandler.handleSortData(result[1].data.sort, params),
  53 + pathNav: searchHandler.handlePathNavData(result[1].data.sort, params, 'sort')
  54 + };
  55 + }
  56 +
  57 + // 获取商品数据和顶部筛选条件
  58 + if (result[2].code === 200) {
  59 + Object.assign(finalResult.search, {
  60 + filters: searchHandler.handleFilterData(result[2].data.filter, params),
  61 + opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter),
  62 + totalCount: result[2].data.total,
  63 + footPager: searchHandler.handlePagerData(result[2].data.total, params),
  64 + goods: productProcess.processProductList(result[2].data.product_list,
  65 + Object.assign({showDiscount: false}, params))
56 }); 66 });
57 } 67 }
58 68
  69 + // 分类介绍
  70 + if (result[3] && result[3].code === 200) {
  71 + finalResult.sortIntro = searchHandler.handleSortIntro(result[3].data);
  72 + }
  73 +
  74 + // 分类广告
  75 + if (result[4] && result[4].code === 200) {
  76 + finalResult.sortIntro = searchHandler.handleSortAds(result[4].data);
  77 + }
59 return finalResult; 78 return finalResult;
60 }); 79 });
61 }; 80 };
  1 +/*
  2 + * @Author: Targaryen
  3 + * @Date: 2016-06-02 15:11:15
  4 + * @Last Modified by: Targaryen
  5 + * @Last Modified time: 2016-06-08 14:57:54
  6 + */
  7 +
  8 +'use strict';
  9 +const utils = '../../../utils';
  10 +const api = global.yoho.API;
  11 +const saleApi = require('./sale-api');
  12 +const outletsApi = require('./outlets-api');
  13 +const productProcess = require(`${utils}/product-process`);
  14 +const publicHandler = require('./public-handler');
  15 +
  16 +/**
  17 + * 获取商品列表商品数据 Controller 调用
  18 + * @param {[type]} params [常规参数]
  19 + * @param {[type]} extra [左侧列表额外要拼接的参数]
  20 + * @return {[type]} [description]
  21 + */
  22 +exports.getListData = (params, channel) => {
  23 + let apiArr = [];
  24 +
  25 + if (params.productPool) {
  26 + // 奥莱活动页调用app.search.sales
  27 + apiArr = [
  28 + saleApi.getSaleGoodsList({limit: '1', channel: channel }),
  29 + saleApi.getSaleGoodsList(Object.assign(params, { channel: channel }))
  30 + ];
  31 + } else {
  32 + // 奥莱品类页调用app.search.li
  33 + apiArr = [
  34 + outletsApi.getOutletsGoodsList({limit: '1', channel: channel }),
  35 + outletsApi.getOutletsGoodsList(Object.assign(params, { channel: channel }))
  36 + ];
  37 + }
  38 + return api.all(apiArr).then(result => {
  39 + let finalResult = {};
  40 +
  41 + // 获取商品数据和顶部筛选条件
  42 + if (result[0].code === 200) {
  43 + finalResult.leftContent = publicHandler.handleSaleSortData(result[0].data.filter.group_sort, params);
  44 + finalResult.pathNav = publicHandler.handlePathNavData(result[0].data.filter.group_sort, params);
  45 +
  46 + }
  47 +
  48 + // 获取左侧类目数据
  49 + if (result[1].code === 200) {
  50 + Object.assign(finalResult, {
  51 + filters: publicHandler.handleSaleFilterData(result[1].data.filter, params),
  52 + opts: publicHandler.handleSaleOptsData(params, result[1].data.total),
  53 + totalCount: result[1].data.total,
  54 + footPager: publicHandler.handlePagerData(result[1].data.total, params),
  55 + goods: productProcess.processProductList(result[1].data.product_list)
  56 + });
  57 + }
  58 +
  59 + return finalResult;
  60 + });
  61 +};
@@ -13,6 +13,9 @@ const getSortByConditionAsync = (condition) => { @@ -13,6 +13,9 @@ const getSortByConditionAsync = (condition) => {
13 return api.get('sortgroup.json', condition); 13 return api.get('sortgroup.json', condition);
14 }; 14 };
15 15
  16 +// 获取list页广告
  17 +const adsUrl = 'shops/api/v1/ads/getList';
  18 +
16 /** 19 /**
17 * 获取商品列表 20 * 获取商品列表
18 * @return 21 * @return
@@ -33,8 +36,9 @@ const getProductList = (params) => { @@ -33,8 +36,9 @@ const getProductList = (params) => {
33 */ 36 */
34 const getSortList = (params) => { 37 const getSortList = (params) => {
35 let finalParams = { 38 let finalParams = {
36 - // method: 'web.regular.groupsort'  
37 - method: 'app.search.li' 39 + method: 'web.regular.groupsort'
  40 +
  41 + // method: 'app.search.li'
38 }; 42 };
39 43
40 Object.assign(finalParams, params); 44 Object.assign(finalParams, params);
@@ -45,16 +49,21 @@ const getSortList = (params) => { @@ -45,16 +49,21 @@ const getSortList = (params) => {
45 * 获取分类图文介绍 49 * 获取分类图文介绍
46 * @return 50 * @return
47 */ 51 */
48 -const getSortIntroList = (params) => {  
49 - return yohoApi.get('', params); 52 +const getSortIntro = (params) => {
  53 + let finalParams = {
  54 + method: 'web.search.banner'
  55 + };
  56 +
  57 + Object.assign(finalParams, params);
  58 + return yohoApi.get('', finalParams);
50 }; 59 };
51 60
52 /** 61 /**
53 - * 获取分类左侧广告 62 + * 获取分类广告
54 * @return 63 * @return
55 */ 64 */
56 -const getSortads = (params) => {  
57 - return yohoApi.get('', params); 65 +const getSortAds = (params) => {
  66 + return yohoApi.get(adsUrl, params);
58 }; 67 };
59 68
60 /** 69 /**
@@ -92,8 +101,8 @@ module.exports = { @@ -92,8 +101,8 @@ module.exports = {
92 getSortByConditionAsync, 101 getSortByConditionAsync,
93 getProductList, 102 getProductList,
94 getSortList, 103 getSortList,
95 - getSortIntroList,  
96 - getSortads, 104 + getSortIntro,
  105 + getSortAds,
97 getBrandFolder, 106 getBrandFolder,
98 getWeekNew, 107 getWeekNew,
99 getBrandShop 108 getBrandShop
@@ -48,10 +48,10 @@ const handleFilterUrl = (originParam, newParam) => { @@ -48,10 +48,10 @@ const handleFilterUrl = (originParam, newParam) => {
48 const handleCheckedData = (params, origin, param) => { 48 const handleCheckedData = (params, origin, param) => {
49 let dest = []; 49 let dest = [];
50 50
51 - // 品牌选中数据  
52 if (!_.isEmpty(origin)) { 51 if (!_.isEmpty(origin)) {
53 _.forEach(origin, value => { 52 _.forEach(origin, value => {
54 if (value.checked) { 53 if (value.checked) {
  54 + console.log(value);
55 let tempPatam = {}; 55 let tempPatam = {};
56 56
57 tempPatam[param] = ''; 57 tempPatam[param] = '';
@@ -63,7 +63,6 @@ const handleCheckedData = (params, origin, param) => { @@ -63,7 +63,6 @@ const handleCheckedData = (params, origin, param) => {
63 } 63 }
64 }); 64 });
65 } 65 }
66 -  
67 return dest; 66 return dest;
68 }; 67 };
69 68
@@ -331,7 +330,7 @@ exports.handleOptsData = (params, total, extra) => { @@ -331,7 +330,7 @@ exports.handleOptsData = (params, total, extra) => {
331 * @param extra 可以任意传值用来处理特殊情况 330 * @param extra 可以任意传值用来处理特殊情况
332 * @returns {{}} 331 * @returns {{}}
333 */ 332 */
334 -exports.handleSortData = (origin, params, extra) => { 333 +exports.handleSortData = (origin, params) => {
335 let leftContent = {}; 334 let leftContent = {};
336 335
337 leftContent.allSort = {}; 336 leftContent.allSort = {};
@@ -341,41 +340,47 @@ exports.handleSortData = (origin, params, extra) => { @@ -341,41 +340,47 @@ exports.handleSortData = (origin, params, extra) => {
341 // delete params.msort; 340 // delete params.msort;
342 // delete params.misort; 341 // delete params.misort;
343 342
344 - if (extra === 'discount') {  
345 - let tempParams = _.cloneDeep(params); 343 + // if (extra === 'discount') {
  344 + // let tempParams = _.cloneDeep(params);
346 345
347 - delete tempParams.sort; 346 + // delete tempParams.sort;
348 347
349 - leftContent.allSort.all = {  
350 - name: '全部品类',  
351 - href: handleFilterUrl(tempParams, {sort: ''}),  
352 - active: _.isEmpty(params.sort)  
353 - };  
354 - } else {  
355 - leftContent.allSort.all = {  
356 - name: '全部品类',  
357 - href: handleFilterUrl(params, {sort: ''})  
358 - };  
359 - } 348 + // leftContent.allSort.all = {
  349 + // name: '全部品类',
  350 + // href: handleFilterUrl(tempParams, {sort: ''}),
  351 + // active: _.isEmpty(params.sort)
  352 + // };
  353 + // } else {
  354 + // leftContent.allSort.all = {
  355 + // name: '全部品类',
  356 + // href: handleFilterUrl(params, {sort: ''})
  357 + // };
  358 + // }
360 359
361 _.forEach(origin, value => { 360 _.forEach(origin, value => {
362 -  
363 let category = { 361 let category = {
364 - name: value.category_name,  
365 - num: value.node_count,  
366 - childList: [],  
367 - href: handleFilterUrl(params, {sort: value.relation_parameter.sort}),  
368 - active: params.sort === value.relation_parameter.sort 362 + name: value.sort_name,
  363 + num: value.count,
  364 + childList: [
  365 + {
  366 + name: '全部' + value.sort_name,
  367 + num: value.count,
  368 + href: handleFilterUrl(params, {msort: value.sort_id}),
  369 + childActive: params.misort === value.sort_id
  370 + }
  371 + ],
  372 + href: handleFilterUrl(params, {msort: value.sort_id}),
  373 + active: params.msort === value.sort_id
369 }; 374 };
370 375
371 _.forEach(value.sub, subValue => { 376 _.forEach(value.sub, subValue => {
372 category.childList.push({ 377 category.childList.push({
373 - name: subValue.category_name,  
374 - num: subValue.node_count,  
375 - href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}),  
376 - childActive: params.sort === subValue.relation_parameter.sort 378 + name: subValue.sort_name,
  379 + num: subValue.count,
  380 + href: handleFilterUrl(params, {msort: value.sort_id, misort: subValue.sort_id}),
  381 + childActive: params.misort === subValue.sort_id
377 }); 382 });
378 - if (params.sort === subValue.relation_parameter.sort) { 383 + if (params.misort === subValue.sort_id) {
379 category.active = true; 384 category.active = true;
380 } 385 }
381 386
@@ -551,29 +556,40 @@ exports.handleFilterData = (origin, params) => { @@ -551,29 +556,40 @@ exports.handleFilterData = (origin, params) => {
551 556
552 // 处理颜色筛选数据 557 // 处理颜色筛选数据
553 if (!_.isEmpty(origin.color)) { 558 if (!_.isEmpty(origin.color)) {
554 - _.forEach(origin.color, (value, key) => { 559 + _.forEach(origin.color, (value) => {
555 let color = { 560 let color = {
556 - checked: params.price === key, 561 + checked: parseInt(params.color, 10) === parseInt(value.color_id, 10),
557 href: handleFilterUrl(params, {color: value.color_id}), 562 href: handleFilterUrl(params, {color: value.color_id}),
558 name: value.color_name, 563 name: value.color_name,
559 rgb: value.color_value ? 'url(' + value.color_value + ')' : '#' + value.color_code 564 rgb: value.color_value ? 'url(' + value.color_value + ')' : '#' + value.color_code
560 }; 565 };
561 566
  567 + // 处理颜色选中数据
  568 + if (color.checked) {
  569 + dest.checkedConditions.conditions.push(color);
  570 + }
  571 +
562 dest.color.push(color); 572 dest.color.push(color);
563 }); 573 });
564 } 574 }
565 575
566 - //处理年龄段 576 + // 处理年龄段
567 if (!_.isEmpty(origin.ageLevel)) { 577 if (!_.isEmpty(origin.ageLevel)) {
568 - _.forEach(origin.ageLevel, (value, key) => { 578 + _.forEach(origin.ageLevel, (value) => {
569 let ageLevel = { 579 let ageLevel = {
570 - checked: params.ageLevel === key, 580 + checked: params.ageLevel === value.id,
571 href: handleFilterUrl(params, {ageLevel: value.id}), 581 href: handleFilterUrl(params, {ageLevel: value.id}),
572 name: value.name 582 name: value.name
573 }; 583 };
574 584
  585 + // 处理颜色年龄段数据
  586 + if (ageLevel.checked) {
  587 + dest.checkedConditions.conditions.push(ageLevel);
  588 + }
  589 +
575 dest.ageLevel.push(ageLevel); 590 dest.ageLevel.push(ageLevel);
576 }); 591 });
  592 + console.log(dest.ageLevel);
577 } 593 }
578 594
579 // 清除所有选中数据 595 // 清除所有选中数据
@@ -647,23 +663,23 @@ exports.handlePathNavData = (data, params, page) => { @@ -647,23 +663,23 @@ exports.handlePathNavData = (data, params, page) => {
647 default : 663 default :
648 // 分类 664 // 分类
649 _.forEach(data, (sort) => { 665 _.forEach(data, (sort) => {
650 - if (sort.relation_parameter.sort === params.sort) { 666 + if (sort.sort_id === params.msort) {
  667 + console.log(params.msort);
651 pathNav.push({ 668 pathNav.push({
652 - name: sort.category_name,  
653 - pathTitle: sort.category_name 669 + name: sort.sort_name,
  670 + href: helpers.urlFormat('/product/outlets/list', {msort: sort.sort_id}),
  671 + pathTitle: sort.sort_name
654 }); 672 });
655 } 673 }
  674 +
656 if (!_.isEmpty(sort.sub)) { 675 if (!_.isEmpty(sort.sub)) {
657 _.forEach(sort.sub, misort => { 676 _.forEach(sort.sub, misort => {
658 - if (misort.relation_parameter.sort === params.sort) { 677 + if (misort.sort_id === params.misort) {
659 pathNav.push({ 678 pathNav.push({
660 - href: helpers.urlFormat('/product/outlets/list', {sort: sort.relation_parameter.sort}),  
661 - name: sort.category_name,  
662 - pathTitle: sort.category_name  
663 - }, {  
664 - name: misort.category_name,  
665 - pathTitle: misort.category_name 679 + name: misort.sort_name,
  680 + pathTitle: misort.sort_name
666 }); 681 });
  682 +
667 } 683 }
668 }); 684 });
669 } 685 }
@@ -784,6 +800,44 @@ exports.handlePagerData = (total, params) => { @@ -784,6 +800,44 @@ exports.handlePagerData = (total, params) => {
784 }; 800 };
785 801
786 /** 802 /**
  803 + * 处理分类介绍
  804 + * @type {[type]}
  805 + */
  806 +exports.handleSortIntro = (data, params) => {
  807 + let sortIntro = {
  808 + name: data.title,
  809 + enName: data.subtitle,
  810 + description: data.intro,
  811 + img: data.logo,
  812 + keyEntry: []
  813 + };
  814 +
  815 + _.forEach(data.keyword, function(value) {
  816 + sortIntro.keyEntry.push({
  817 + name: value.word,
  818 + url: helpers.urlFormat(value.url, params)
  819 + });
  820 + });
  821 +
  822 +
  823 + return sortIntro;
  824 +};
  825 +
  826 +/**
  827 + * 处理分类页左侧广告
  828 + * @type {[type]}
  829 + */
  830 +exports.handleSortAds = (data, params) => {
  831 + let sortAds = {
  832 + data: data,
  833 + params: params
  834 + };
  835 +
  836 +
  837 + return sortAds;
  838 +};
  839 +
  840 +/**
787 * 筛选类链接处理的对外接口 841 * 筛选类链接处理的对外接口
788 * @type {[type]} 842 * @type {[type]}
789 */ 843 */
@@ -41,7 +41,7 @@ exports.getSearchData = (params) => { @@ -41,7 +41,7 @@ exports.getSearchData = (params) => {
41 // 获取左侧类目数据 41 // 获取左侧类目数据
42 if (result[1].code === 200) { 42 if (result[1].code === 200) {
43 finalResult.search = { 43 finalResult.search = {
44 - leftContent: searchHandler.handleSortData(result[1].data.filter.group_sort, params), 44 + leftContent: searchHandler.handleSortData(result[1].data.sort, params),
45 pathNav: searchHandler.handlePathNavData({total: result[1].data.total }, params, 'search') 45 pathNav: searchHandler.handlePathNavData({total: result[1].data.total }, params, 'search')
46 }; 46 };
47 } 47 }
@@ -22,6 +22,9 @@ const sale = require(`${cRoot}/sale`); @@ -22,6 +22,9 @@ const sale = require(`${cRoot}/sale`);
22 const outlets = require(`${cRoot}/outlets`); 22 const outlets = require(`${cRoot}/outlets`);
23 23
24 // 商品促销controller 24 // 商品促销controller
  25 +const outletsList = require(`${cRoot}/outletsList`);
  26 +
  27 +// 商品分类列表
25 const list = require(`${cRoot}/list`); 28 const list = require(`${cRoot}/list`);
26 29
27 // 搜索页 30 // 搜索页
@@ -42,18 +45,23 @@ router.get('/outlets/special/detail', outlets.special); // 奥莱活动页 @@ -42,18 +45,23 @@ router.get('/outlets/special/detail', outlets.special); // 奥莱活动页
42 router.get('/outlets/list', outlets.list); // 奥莱品类页 45 router.get('/outlets/list', outlets.list); // 奥莱品类页
43 router.get('/outlets/:channel', outlets.channel); // 奥莱频道页 46 router.get('/outlets/:channel', outlets.channel); // 奥莱频道页
44 47
45 -// 商品列表页  
46 -router.get('/list', list.index); // 商品列表页  
47 - 48 +// 商品分类列表页
  49 +router.get('/list', outletsList.index);
48 router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, detail.showMain); // 商品详情routers 50 router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, detail.showMain); // 商品详情routers
49 router.get('/detail/comment', detail.indexComment);// 商品评论 51 router.get('/detail/comment', detail.indexComment);// 商品评论
50 router.get('/detail/consult', detail.indexConsult);// 商品咨询 52 router.get('/detail/consult', detail.indexConsult);// 商品咨询
51 router.post('/detail/consult', detail.createConsult);// 创建咨询 53 router.post('/detail/consult', detail.createConsult);// 创建咨询
52 router.get('/detail/hotarea', detail.indexHotArea);// 商品热区 54 router.get('/detail/hotarea', detail.indexHotArea);// 商品热区
53 router.post('/index/favoriteBrand', favorite.changeFavoriteBrand);// 收藏品牌 55 router.post('/index/favoriteBrand', favorite.changeFavoriteBrand);// 收藏品牌
54 -router.post('/item/togglecollect', favorite.collectProduct); //收藏商品 56 +router.post('/item/togglecollect', favorite.collectProduct); // 收藏商品
55 57
56 // 搜索 58 // 搜索
57 router.get('/search/index', search.index); 59 router.get('/search/index', search.index);
58 60
  61 +// 商品分类列表页
  62 +router.get('/list/index', list.index);
  63 +
  64 +// 新品到着
  65 +router.get('/list/new', list.new);
  66 +
59 module.exports = router; 67 module.exports = router;
1 -<div class="product-page yoho-page">  
2 - {{# search}}  
3 - <div class="center-content clearfix">  
4 - {{# pathNav}}  
5 - {{> common/path-nav}}  
6 - {{/ pathNav}}  
7 -  
8 -  
9 - <div class="list-left pull-left">  
10 - {{> product/left-content}}  
11 - </div>  
12 -  
13 - <div class="list-right pull-right">  
14 - {{# sortIntro}}  
15 - <div class="sort-intro clearfix">  
16 - <div class="texts pull-left">  
17 - <p class="name">{{name}}</p>  
18 - <p class="en-name">{{enName}}</p>  
19 - <p class="desc">{{{description}}}</p>  
20 - <div class="key-entry">  
21 - {{#each keyEntry}}  
22 - <a href="{{url}}">{{name}}</a>  
23 - {{/each}}  
24 - </div>  
25 - </div>  
26 - <img class="pull-right img" src="{{img}}">  
27 - </div>  
28 - {{/ sortIntro}}  
29 - {{> list/shop-entry}}  
30 - {{> product/standard-content}}  
31 - </div>  
32 - </div>  
33 - {{/search}}  
34 -</div> 1 +{{> list/list}}
  1 +<div class="product-page yoho-page">
  2 + {{# search}}
  3 + <div class="center-content clearfix">
  4 + {{# pathNav}}
  5 + {{> common/path-nav}}
  6 + {{/ pathNav}}
  7 +
  8 +
  9 + <div class="list-left pull-left">
  10 + {{> product/left-content}}
  11 + </div>
  12 +
  13 + <div class="list-right pull-right">
  14 + {{# sortIntro}}
  15 + <div class="sort-intro clearfix">
  16 + <div class="texts pull-left">
  17 + <p class="name">{{name}}</p>
  18 + <p class="en-name">{{enName}}</p>
  19 + <p class="desc">{{{description}}}</p>
  20 + <div class="key-entry">
  21 + {{#each keyEntry}}
  22 + <a href="{{url}}">{{name}}</a>
  23 + {{/each}}
  24 + </div>
  25 + </div>
  26 + <img class="pull-right img" src="{{img}}">
  27 + </div>
  28 + {{/ sortIntro}}
  29 + {{> list/shop-entry}}
  30 + {{> product/standard-content}}
  31 + </div>
  32 + </div>
  33 + {{/search}}
  34 +</div>
@@ -14,11 +14,14 @@ module.exports = { @@ -14,11 +14,14 @@ module.exports = {
14 port: 6002, 14 port: 6002,
15 siteUrl: 'http://www.yohobuy.com', 15 siteUrl: 'http://www.yohobuy.com',
16 domains: { 16 domains: {
  17 + api: 'http://api.yoho.yohoops.org',
  18 +
17 // api: 'http://devapi.yoho.cn:58078/', 19 // api: 'http://devapi.yoho.cn:58078/',
18 - api: 'http://testapi.yoho.cn:28078/', 20 + // api: 'http://testapi.yoho.cn:28078/',
  21 +
  22 + service: 'http://devservice.yoho.cn:58077/',
19 23
20 - // service: 'http://devservice.yoho.cn:58077/',  
21 - service: 'http://testservice.yoho.cn:28077/', 24 + // service: 'http://testservice.yoho.cn:28077/',
22 search: 'http://192.168.102.216:8080/yohosearch/' 25 search: 'http://192.168.102.216:8080/yohosearch/'
23 }, 26 },
24 subDomains: { 27 subDomains: {
  1 +/**
  2 + * search
  3 + * @author: sefon 2016-7-12 15:28:22
  4 + */
  5 +
  6 +var $ = require('yoho-jquery'),
  7 + lazyLoad = require('yoho-jquery-lazyload');
  8 +
  9 +var product = require('./index/product');
  10 +
  11 +require('../common');
  12 +require('../plugins/filter');
  13 +require('../plugins/sort-pager');
  14 +
  15 +product.init(4);
  16 +
  17 +
  18 +
  19 +
  20 +
  21 +
  22 +
  23 +
  24 +
  25 +lazyLoad($('img.lazy'), {
  26 + failure_limit: 20
  27 +});