|
|
'use strict';
|
|
|
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
module.exports = class extends global.yoho.BaseModel {
|
|
|
constructor(ctx) {
|
|
|
super(ctx);
|
|
|
}
|
|
|
|
|
|
getBigpic() {
|
|
|
let options = {
|
|
|
url: 'operations/api/v5/resource/home',
|
|
|
data: {
|
|
|
content_code: '8512bf0755cc549ac323f852c9fd945d'
|
|
|
},
|
|
|
param: {
|
|
|
cache: true,
|
|
|
code: 200
|
|
|
},
|
|
|
api: global.yoho.ServiceAPI
|
|
|
};
|
|
|
|
|
|
return this.get(options).then(result => {
|
|
|
return result;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
getGoods(params) {
|
|
|
let options = {
|
|
|
data: {
|
|
|
method: 'app.search.productMarket',
|
|
|
uid: params.uid,
|
|
|
udid: params.udid,
|
|
|
firstProductSkn: params.firstProductSkn,
|
|
|
page: params.page,
|
|
|
limit: params.limit
|
|
|
},
|
|
|
param: {
|
|
|
code: 200
|
|
|
}
|
|
|
};
|
|
|
|
|
|
return this.get(options).then(result => {
|
|
|
return result;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
index(params) {
|
|
|
return Promise.all([
|
|
|
this.getBigpic(),
|
|
|
this.getGoods(params)
|
|
|
]).then(result => {
|
|
|
let resu = {
|
|
|
bigPic: {},
|
|
|
goodList: []
|
|
|
};
|
|
|
|
|
|
if (result) {
|
|
|
if (_.get(result, '[0].data.list', false)) {
|
|
|
if (_.get(result[0].data.list[0], 'data[0]', false)) {
|
|
|
let val = result[0].data.list[0].data[0];
|
|
|
|
|
|
resu.bigPic = {
|
|
|
src: val.src,
|
|
|
url: val.url
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (_.get(result, '[1].data.product_list', false)) {
|
|
|
let build = [];
|
|
|
let data = result[1].data.product_list;
|
|
|
|
|
|
_.forEach(data, (val) => {
|
|
|
let discount = this.getDiscound(val.sales_price, val.market_price);
|
|
|
|
|
|
build.push({
|
|
|
productName: val.product_name,
|
|
|
salesPrice: val.sales_price,
|
|
|
marketPrice: val.market_price === val.sales_price ? '' : val.market_price,
|
|
|
defaultImages: val.default_images ? val.default_images.split(',')[0] : '',
|
|
|
productSkn: val.product_skn,
|
|
|
discount: discount
|
|
|
});
|
|
|
});
|
|
|
|
|
|
resu.goodList = build;
|
|
|
}
|
|
|
|
|
|
if (_.get(result, '[1].data.coupon_list', false)) {
|
|
|
let couponNum = result[1].data.coupon_list.length;
|
|
|
|
|
|
if (couponNum % 2 !== 0) {
|
|
|
resu.odd = true;
|
|
|
} else {
|
|
|
resu.odd = false;
|
|
|
}
|
|
|
resu.couponList = result[1].data.coupon_list;
|
|
|
}
|
|
|
}
|
|
|
return resu;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
moreGoods(params) {
|
|
|
return Promise.all([
|
|
|
this.getGoods(params)
|
|
|
]).then(result => {
|
|
|
let resu = {
|
|
|
goodList: []
|
|
|
};
|
|
|
|
|
|
if (_.get(result, '[0].data.product_list', false)) {
|
|
|
let build = [];
|
|
|
let data = result[0].data.product_list;
|
|
|
|
|
|
_.forEach(data, (val) => {
|
|
|
let discount = this.getDiscound(val.sales_price, val.market_price);
|
|
|
|
|
|
build.push({
|
|
|
productName: val.product_name,
|
|
|
salesPrice: val.sales_price,
|
|
|
marketPrice: val.market_price === val.sales_price ? '' : val.market_price,
|
|
|
defaultImages: val.default_images ? val.default_images.split(',')[0] : '',
|
|
|
productSkn: val.product_skn,
|
|
|
discount: discount
|
|
|
});
|
|
|
});
|
|
|
|
|
|
resu.goodList = build;
|
|
|
}
|
|
|
return resu;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
getDiscound(salesPrice, marketPrice) {
|
|
|
let dis = Math.ceil(parseInt(salesPrice, 10) / parseInt(marketPrice, 10) * 10);
|
|
|
let disMes = '';
|
|
|
|
|
|
switch (dis) {
|
|
|
case 0:
|
|
|
disMes = '<span>1</span>折';
|
|
|
break;
|
|
|
case 1:
|
|
|
disMes = '<span>1</span>折';
|
|
|
break;
|
|
|
case 2:
|
|
|
disMes = '<span>2</span>折';
|
|
|
break;
|
|
|
case 3:
|
|
|
disMes = '<span>3</span>折';
|
|
|
break;
|
|
|
case 4:
|
|
|
disMes = '<span>4</span>折';
|
|
|
break;
|
|
|
case 5:
|
|
|
disMes = '<span>5</span>折';
|
|
|
break;
|
|
|
case 6:
|
|
|
disMes = '<span>6</span>折';
|
|
|
break;
|
|
|
case 7:
|
|
|
disMes = '<span>7</span>折';
|
|
|
break;
|
|
|
case 8:
|
|
|
disMes = '<span>8</span>折';
|
|
|
break;
|
|
|
case 9:
|
|
|
disMes = '<span>9</span>折';
|
|
|
break;
|
|
|
default:
|
|
|
disMes = '热卖';
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
return disMes;
|
|
|
}
|
|
|
}; |
...
|
...
|
|