Authored by biao

update for outlet

/**
* sub app channel
* @author: Bi Kai<kai.bi@yoho.cn>
* @date: 2016/05/09
*/
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
helpers: require(`${global.library}/helpers`)
}));
// router
app.use(require('./router'));
module.exports = app;
/**
* router of sub app channel
* @author: Bi Kai<kai.bi@yoho.cn>
* @date: 2016/05/09
*/
'use strict';
const express = require('express');
const cRoot = './controllers';
const outlet = require(cRoot);
const router = express.Router(); // eslint-disable-line
router.get('/index', outlet.index);
module.exports = router;
{{> outlet/nav }}
{{> outlet/resource }}
... ... @@ -4,11 +4,14 @@
* @date: 2016/05/09
*/
'use strict';
const library = '../../../library';
// const library = '../../../library';
// const _ = require('lodash');
const outletModel = require('../models/outlet');
// const helpers = require(`${library}/helpers`);
const log = require(`${library}/logger`);
// const log = require(`${library}/logger`);
const renderData = {
module: 'outlet',
... ... @@ -26,3 +29,9 @@ exports.index = (req, res) => {
res.render('outlet', Object.assign({}, renderData, result));
});
};
exports.getGoodsList = (req, res) => {
var queryParam = req.query;
res.send(queryParam);
};
... ...
... ... @@ -6,15 +6,19 @@
'use strict';
const library = '../../../library';
const utils = '../../../utils';
// const _ = require('lodash');
const ServiceAPI = require(`${library}/api`).ServiceAPI;
const API = require(`${library}/api`).API;
const sign = require(`${library}/sign`);
const productProcess = require(`${utils}/product-process`);
// const camelCase = require(`${library}/camel-case`);
const resourcesProcess = require(`${utils}/resources-process`);
const log = require(`${library}/logger`);
const api = new ServiceAPI();
const serviceApi = new ServiceAPI();
const api = new API();
const getOutletResource = () => {
const params = {
... ... @@ -23,7 +27,7 @@ const getOutletResource = () => {
debug: 'XYZ'
};
return api.get('operations/api/v5/resource/home', sign.apiSign(params)).then(result => {
return serviceApi.get('operations/api/v5/resource/home', sign.apiSign(params)).then(result => {
if (result && result.code === 200) {
return resourcesProcess(result.data.list);
} else {
... ... @@ -34,7 +38,7 @@ const getOutletResource = () => {
};
const getNavData = () => {
return api.get('3b8b45b8d87c8e44.json').then(result => {
return serviceApi.get('3b8b45b8d87c8e44.json').then(result => {
if (result && result.code === 200) {
return result.data;
} else {
... ... @@ -44,15 +48,33 @@ const getNavData = () => {
});
};
const getGoodsList = () => {
var params = {
method: 'app.search.category',
limit: 5,
page: 1,
outlets: 1
};
var data = {};
return api.get('', sign.apiSign(params)).then(res => {
if (res && res.code === 200) {
data = productProcess.processProductList(res.data.product_list);
}
return data;
});
};
exports.getContent = () => {
let floorsData = {};
return Promise.all([getNavData(), getOutletResource()]).then(data => {
return Promise.all([getNavData(), getOutletResource(), getGoodsList()]).then(data => {
floorsData.nav = data[0];
floorsData.content = data[1];
console.log(floorsData.content);
floorsData.goods = data[2];
return floorsData;
});
... ...
... ... @@ -15,6 +15,9 @@ const detail = require(`${cRoot}/detail`);
// sale controller
const sale = require(`${cRoot}/sale`);
// outlet controller
const outlet = require(`${cRoot}/outlet`);
// routers
// /pro_136349_455445/HEARTSOFARMianMaShuJiaoXiuXianKuPS1684.html
... ... @@ -31,6 +34,8 @@ router.get('/sale/vip', sale.vip);
router.get('/sale/search', sale.search);
router.get('/sale/filter', sale.filter);
router.get('/outlet', outlet.index);
// router.get('/outlet', sale.outlet);
module.exports = router;
... ...
<div class="outlet-page">
{{> product/outlet/nav }}
{{> product/outlet/resource }}
{{> common/goods}}
</div>
... ...
... ... @@ -19,6 +19,10 @@
{{#if nl2R}}
{{> resources/left-right}}
{{/if}}
{{! 品类导航}}
{{#if categoryNavigation}}
{{> resources/category-nav}}
{{/if}}
{{! 热门品类}}
{{#if recommendContentFive}}
{{> resources/hot-category}}
... ...
... ... @@ -13,8 +13,9 @@ module.exports = {
port: 6001,
siteUrl: '//m.yohobuy.com',
domains: {
api: 'http://testapi.yoho.cn:28078/', // http://192.168.102.205:8080/gateway
//service: 'http://testservice.yoho.cn:28077/'
// api: 'http://testapi.yoho.cn:28078/', // http://192.168.102.205:8080/gateway
api: 'http://api.yoho.cn/', // http://192.168.102.205:8080/gateway
// service: 'http://testservice.yoho.cn:28077/'
service: 'http://devservice.yoho.cn:58077/'
},
useOneapm: false,
... ...
... ... @@ -13,6 +13,4 @@ module.exports = app => {
// 业务模块
app.use('/product', require('./apps/product'));
app.use('/outlet',require('./apps/outlet'));
};
... ...
... ... @@ -15,4 +15,4 @@
</a>
{{/recommendList}}
</div>
</div>
\ No newline at end of file
</div>
... ...
<nav class="outlet-nav">
<ul>
{{#data}}
<li><a href="{{url}}">{{categoryName}}</a></li>
{{/data}}
</ul>
</nav>
... ...
<div id="thumb-row">
<div class="left-right-thumb-row">
{{# data}}
{{# left}}
<a href="{{url}}">
<div class="thumb-row-box left-thumb-row-box" style="background-image:url({{image src 275 160}})"></div>
</a>
{{/ left}}
{{# right}}
<a href="{{url}}">
<div class="thumb-row-box right-thumb-row-box" style="background-image:url({{image src 275 160}})"></div>
</a>
{{/ right}}
<div class="right-container">
{{# right}}
<a href="{{url}}">
<div class="thumb-row-box right-thumb-row-box {{#if @first}}first{{/if}}" style="background-image:url({{image src 275 160}})"></div>
</a>
{{/ right}}
</div>
{{/ data}}
</div>
... ...
... ... @@ -13,8 +13,4 @@
background-position: center;
margin: 0 14.4px;
}
.left-thumb-row-box {
height: 260px;
}
}
... ...
.left-right-thumb {
background-color: #f0f0f0;
text-align: center;
padding: 32px 0 0;
.outlet-page {
#thumb-row {
.thumb-row-box {
height: 132px;
border-radius: 0;
background-size: 100% 100%;
}
}
.left-right-thumb-row {
background-color: #f0f0f0;
text-align: center;
padding: 32px 0;
.thumb-row-box {
display: inline-block;
width: 275px;
height: 132px;
border-radius: 0;
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
margin: 0 14.4px;
&.first {
margin: 0 !important;
}
}
.left-thumb-row-box {
height: 308px;
}
.right-container {
display: inline-block;
width: 275px;
height: 280px;
border-radius: 4px;
margin: 0 14.4px;
.left-thumb-row-box {
height: 260px;
.right-thumb-row-box {
margin: 32px 0 0;
}
}
}
}
... ...
... ... @@ -124,6 +124,8 @@ exports.processProductList = (list, options) => {
pruductList.push(product);
});
console.log(pruductList);
return pruductList;
};
... ...
... ... @@ -12,13 +12,10 @@ module.exports = (list) => {
list = list || [];
list = camelCase(list);
console.log(list);
_.forEach(list, (floor) => {
floor[_.camelCase(floor.templateName)] = true;
// console.log(floor);
// 特殊资源位处理
// PLUS
if (floor.singleNameImage && floor.data) {
... ... @@ -36,16 +33,9 @@ module.exports = (list) => {
}
}
if (floor.NL2R && floor.data) {
// floor.data.NL2R.left = floor.data.left;
// floor.data.NL2R.right = floor.data.right;
// console.log(floor.data);
}
formatData.push(floor);
});
// console.log(formatData);
return formatData;
};
... ...