Authored by 周少峰

Merge branch 'hotfix/sale-activity'

@@ -9,6 +9,8 @@ @@ -9,6 +9,8 @@
9 const mRoot = '../models'; 9 const mRoot = '../models';
10 const sale = require(`${mRoot}/sale`); // sale model 10 const sale = require(`${mRoot}/sale`); // sale model
11 11
  12 +const _ = require('lodash');
  13 +
12 /** 14 /**
13 * sale 首页 15 * sale 首页
14 * @param {[type]} req [description] 16 * @param {[type]} req [description]
@@ -150,6 +152,9 @@ exports.special = (req, res, next) => { @@ -150,6 +152,9 @@ exports.special = (req, res, next) => {
150 return next(); 152 return next();
151 } 153 }
152 154
  155 + _.omit(params, 'specialsale_id');
  156 + params.productPool = specialId;
  157 +
153 sale.getSaleSpecialData(specialId, params, req.yoho.channel).then(result => { 158 sale.getSaleSpecialData(specialId, params, req.yoho.channel).then(result => {
154 res.render('sale/special', result); 159 res.render('sale/special', result);
155 }).catch(next); 160 }).catch(next);
@@ -208,7 +208,7 @@ const _getBrandDataByProductBaseInfo = (data, additionalData) => { @@ -208,7 +208,7 @@ const _getBrandDataByProductBaseInfo = (data, additionalData) => {
208 return {}; 208 return {};
209 } 209 }
210 210
211 - let brandId = data.brand_info.id; 211 + let brandId = data.brand_info.brand_id;
212 let bgImg = ''; 212 let bgImg = '';
213 let logo = ''; 213 let logo = '';
214 let bannerInfo = null; 214 let bannerInfo = null;
@@ -106,14 +106,20 @@ const getListData = (params, channel) => { @@ -106,14 +106,20 @@ const getListData = (params, channel) => {
106 106
107 finalResult.list = Object.assign( 107 finalResult.list = Object.assign(
108 searchHandler.handlePathNavData(result[1].data.sort, params, 'sort', channel), { 108 searchHandler.handlePathNavData(result[1].data.sort, params, 'sort', channel), {
109 - leftContent: searchHandler.handleSortData(result[1].data.sort, dps) 109 + leftContent: searchHandler.handleSortData(result[1].data.sort, dps, params)
110 }); 110 });
111 } 111 }
112 112
113 // 获取商品数据和顶部筛选条件 113 // 获取商品数据和顶部筛选条件
114 if (result[2].code === 200) { 114 if (result[2].code === 200) {
  115 + let filters = Object.assign(searchHandler.handleFilterDataAll(result[2].data, params),
  116 + finalResult.list.leftContent.sort);
  117 +
  118 + filters.checkedConditions.conditions = _.concat(filters.checkedConditions.conditions,
  119 + finalResult.list.leftContent.checked);
  120 +
115 Object.assign(finalResult.list, { 121 Object.assign(finalResult.list, {
116 - filters: searchHandler.handleFilterDataAll(result[2].data, params), 122 + filters: filters,
117 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter), 123 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter),
118 totalCount: result[2].data.total, 124 totalCount: result[2].data.total,
119 footPager: searchHandler.handlePagerData(result[2].data.total, params), 125 footPager: searchHandler.handlePagerData(result[2].data.total, params),
@@ -184,14 +190,20 @@ const getListNewData = (params, channel) => { @@ -184,14 +190,20 @@ const getListNewData = (params, channel) => {
184 if (result[1].code === 200) { 190 if (result[1].code === 200) {
185 finalResult.list = Object.assign( 191 finalResult.list = Object.assign(
186 searchHandler.handlePathNavData(result[1].data.sort, params, 'new', channel), { 192 searchHandler.handlePathNavData(result[1].data.sort, params, 'new', channel), {
187 - leftContent: searchHandler.handleSortData(result[1].data.sort, dps) 193 + leftContent: searchHandler.handleSortData(result[1].data.sort, dps, params)
188 }); 194 });
189 } 195 }
190 196
191 // 获取商品数据和顶部筛选条件 197 // 获取商品数据和顶部筛选条件
192 if (result[2].code === 200) { 198 if (result[2].code === 200) {
  199 + let filters = Object.assign(searchHandler.handleFilterDataAll(result[2].data, params),
  200 + finalResult.list.leftContent.sort);
  201 +
  202 + filters.checkedConditions.conditions = _.concat(filters.checkedConditions.conditions,
  203 + finalResult.list.leftContent.checked);
  204 +
193 Object.assign(finalResult.list, { 205 Object.assign(finalResult.list, {
194 - filters: searchHandler.handleFilterDataAll(result[2].data, params), 206 + filters: filters,
195 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter), 207 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter),
196 totalCount: result[2].data.total, 208 totalCount: result[2].data.total,
197 footPager: searchHandler.handlePagerData(result[2].data.total, params), 209 footPager: searchHandler.handlePagerData(result[2].data.total, params),
@@ -295,14 +307,20 @@ const getBrandData = (params, extra, channel) => { @@ -295,14 +307,20 @@ const getBrandData = (params, extra, channel) => {
295 }); 307 });
296 308
297 Object.assign(finalResult.brand, { 309 Object.assign(finalResult.brand, {
298 - leftContent: searchHandler.handleSortData(result[1].data.sort, dps) 310 + leftContent: searchHandler.handleSortData(result[1].data.sort, dps, params)
299 }, searchHandler.handlePathNavData(extra, params, 'brand', channel)); 311 }, searchHandler.handlePathNavData(extra, params, 'brand', channel));
300 } 312 }
301 313
302 // 获取商品数据和顶部筛选条件 314 // 获取商品数据和顶部筛选条件
303 if (result[2].code === 200) { 315 if (result[2].code === 200) {
  316 + let filters = Object.assign(searchHandler.handleFilterDataAll(result[2].data, params),
  317 + finalResult.brand.leftContent.sort);
  318 +
  319 + filters.checkedConditions.conditions = _.concat(filters.checkedConditions.conditions,
  320 + finalResult.brand.leftContent.checked);
  321 +
304 Object.assign(finalResult.brand, { 322 Object.assign(finalResult.brand, {
305 - filters: searchHandler.handleFilterDataAll(result[2].data, params), 323 + filters: filters,
306 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter), 324 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter),
307 totalCount: result[2].data.total, 325 totalCount: result[2].data.total,
308 footPager: searchHandler.handlePagerData(result[2].data.total, params), 326 footPager: searchHandler.handlePagerData(result[2].data.total, params),
@@ -39,7 +39,7 @@ const handleFilterUrl = (originParam, newParam, delParam) => { @@ -39,7 +39,7 @@ const handleFilterUrl = (originParam, newParam, delParam) => {
39 delete tempOriginParam.uid; 39 delete tempOriginParam.uid;
40 40
41 _.forEach(tempOriginParam, function(value, key) { 41 _.forEach(tempOriginParam, function(value, key) {
42 - if (!delParam[key]) { 42 + if (!delParam[key] && value) {
43 dest += `${key}=${value}&`; 43 dest += `${key}=${value}&`;
44 } 44 }
45 }); 45 });
@@ -465,8 +465,12 @@ exports.handleOptsData = (params, total, extra) => { @@ -465,8 +465,12 @@ exports.handleOptsData = (params, total, extra) => {
465 * @param extra 可以任意传值用来处理特殊情况 465 * @param extra 可以任意传值用来处理特殊情况
466 * @returns {{}} 466 * @returns {{}}
467 */ 467 */
468 -exports.handleSortData = (origin, params) => {  
469 - let leftContent = {}; 468 +exports.handleSortData = (origin, params, originParams) => {
  469 + let leftContent = {
  470 + sort: {misort: []},
  471 + checked: []
  472 + };
  473 +
470 let list = [], 474 let list = [],
471 allCount = 0; 475 allCount = 0;
472 476
@@ -477,8 +481,6 @@ exports.handleSortData = (origin, params) => { @@ -477,8 +481,6 @@ exports.handleSortData = (origin, params) => {
477 href: handleFilterUrl(params, {}, {msort: true, misort: true}) 481 href: handleFilterUrl(params, {}, {msort: true, misort: true})
478 }]; 482 }];
479 483
480 - //  
481 -  
482 _.forEach(origin, value => { 484 _.forEach(origin, value => {
483 let category = { 485 let category = {
484 name: value.sort_name, 486 name: value.sort_name,
@@ -511,6 +513,25 @@ exports.handleSortData = (origin, params) => { @@ -511,6 +513,25 @@ exports.handleSortData = (origin, params) => {
511 category.active = true; 513 category.active = true;
512 } 514 }
513 515
  516 + if (subValue.sort_id === params.misort && subValue.sub && subValue.sub.length > 2) {
  517 + _.forEach(subValue.sub, smallSort => {
  518 +
  519 + leftContent.sort.misort.push({
  520 + id: smallSort.sort_id,
  521 + name: smallSort.sort_name,
  522 + checked: smallSort.sort_id === _.get(originParams, 'sort'),
  523 + href: handleFilterUrl(originParams, {sort: smallSort.sort_id})
  524 + });
  525 +
  526 + if (smallSort.sort_id === _.get(originParams, 'sort')) {
  527 + leftContent.checked.push({
  528 + name: smallSort.sort_name,
  529 + href: handleFilterUrl(originParams, {sort: ''})
  530 + });
  531 + }
  532 +
  533 + });
  534 + }
514 }); 535 });
515 536
516 list.push(category); 537 list.push(category);
@@ -25,7 +25,7 @@ exports.getSearchData = (params, channel) => { @@ -25,7 +25,7 @@ exports.getSearchData = (params, channel) => {
25 // 调用接口 25 // 调用接口
26 let apiMethod = [ 26 let apiMethod = [
27 headerModel.requestHeaderData(channel), 27 headerModel.requestHeaderData(channel),
28 - searchApi.getSortList(Object.assign({}, searchParams, {msort: '', misort: ''})), 28 + searchApi.getSortList(Object.assign({}, searchParams, {msort: '', misort: '', sort: ''})),
29 searchApi.getProductList(searchParams), 29 searchApi.getProductList(searchParams),
30 searchApi.getShopList(params) 30 searchApi.getShopList(params)
31 ]; 31 ];
@@ -54,16 +54,23 @@ exports.getSearchData = (params, channel) => { @@ -54,16 +54,23 @@ exports.getSearchData = (params, channel) => {
54 }); 54 });
55 55
56 finalResult.search = { 56 finalResult.search = {
57 - leftContent: searchHandler.handleSortData(result[1].data.sort, dps) 57 + leftContent: searchHandler.handleSortData(result[1].data.sort, dps, params)
58 }; 58 };
59 } 59 }
60 60
61 // 获取商品数据和顶部筛选条件 61 // 获取商品数据和顶部筛选条件
62 if (result[2].code === 200) { 62 if (result[2].code === 200) {
  63 +
  64 + let filters = Object.assign(searchHandler.handleFilterDataAll(result[2].data, params),
  65 + finalResult.search.leftContent.sort);
  66 +
  67 + filters.checkedConditions.conditions = _.concat(filters.checkedConditions.conditions,
  68 + finalResult.search.leftContent.checked);
  69 +
63 Object.assign(finalResult.search, 70 Object.assign(finalResult.search,
64 searchHandler.handlePathNavData({total: result[2].data.total }, params, 'search', channel), 71 searchHandler.handlePathNavData({total: result[2].data.total }, params, 'search', channel),
65 { 72 {
66 - filters: searchHandler.handleFilterDataAll(result[2].data, params), 73 + filters: filters,
67 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter), 74 opts: searchHandler.handleOptsData(params, result[2].data.total, result[2].data.filter),
68 totalCount: result[2].data.total, 75 totalCount: result[2].data.total,
69 footPager: searchHandler.handlePagerData(result[2].data.total, params), 76 footPager: searchHandler.handlePagerData(result[2].data.total, params),
@@ -16,8 +16,8 @@ module.exports = { @@ -16,8 +16,8 @@ module.exports = {
16 siteUrl: 'http://www.yohobuy.com', 16 siteUrl: 'http://www.yohobuy.com',
17 domains: { 17 domains: {
18 favApi: 'http://192.168.102.31:8092/brower', 18 favApi: 'http://192.168.102.31:8092/brower',
19 - api: 'http://api-test1.yohops.com:9999/',  
20 - service: 'http://service-test1.yohops.com:9999/', 19 + api: 'http://api.yoho.cn/',
  20 + service: 'http://service.yoho.cn/',
21 search: 'http://192.168.102.216:8080/yohosearch/' 21 search: 'http://192.168.102.216:8080/yohosearch/'
22 }, 22 },
23 subDomains: { 23 subDomains: {
@@ -50,20 +50,6 @@ @@ -50,20 +50,6 @@
50 </div> 50 </div>
51 {{/if}} 51 {{/if}}
52 52
53 - {{#if ageLevel}}  
54 - <div class="channel section">  
55 - <span class="title">人群:</span>  
56 -  
57 - <div class="attr-content clearfix">  
58 - {{#each ageLevel}}  
59 - <a class="attr {{#if checked}}checked{{/if}}" href="{{href}}">  
60 - {{name}}  
61 - </a>  
62 - {{/each}}  
63 - </div>  
64 - </div>  
65 - {{/if}}  
66 -  
67 {{#if sort}} 53 {{#if sort}}
68 <div class="sort section"> 54 <div class="sort section">
69 <span class="title">分类:</span> 55 <span class="title">分类:</span>
@@ -143,6 +129,20 @@ @@ -143,6 +129,20 @@
143 {{> product/filter-brands}} 129 {{> product/filter-brands}}
144 </script> 130 </script>
145 131
  132 + {{#if ageLevel}}
  133 + <div class="channel section">
  134 + <span class="title">人群:</span>
  135 +
  136 + <div class="attr-content clearfix">
  137 + {{#each ageLevel}}
  138 + <a class="attr {{#if checked}}checked{{/if}}" href="{{href}}">
  139 + {{name}}
  140 + </a>
  141 + {{/each}}
  142 + </div>
  143 + </div>
  144 + {{/if}}
  145 +
146 {{#if price}} 146 {{#if price}}
147 <div class="price section"> 147 <div class="price section">
148 <span class="title">价格:</span> 148 <span class="title">价格:</span>