bundle.js
3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
* Created by targaryen on 2016/11/28.
*/
'use strict';
const utils = '../../../utils';
const _ = require('lodash');
const helpers = global.yoho.helpers;
const productProcess = require(`${utils}/product-process`);
class bundleModel extends global.yoho.BaseModel {
constructor(ctx) {
super(ctx);
}
/**
* 从接口获取套装数据
* @private
*/
getBundleBySkn(productSkn) {
return this.get({
data: {
method: 'app.query.bundleSkn',
product_skn: productSkn
},
param: {cache: false}
}).then(result => {
return result;
});
}
/**
* 套装详情页数据
* @param params
* @returns {*}
*/
detail(params, isApp) {
if (!params.skn && !params.bundle_skn) {
return Promise.resolve({});
}
let bundleIndex = (params.index || 1);
--bundleIndex;
return this.getBundleBySkn(params.skn || params.bundle_skn).then(result => {
if (_.has(result, `data[${bundleIndex}]`)) {
let shareInfo = _.get(result, 'data[0].shareInfo', {});
return {
bundleDatas: _.map(result.data, (bundle, index) => {
let query = {bundle_skn: params.skn ||
params.bundle_skn, productId: params.productId, index: index + 1};
if (isApp) {
query.app_version = isApp;
}
return {
selected: index === bundleIndex,
title: _.get(bundle, 'bundleInfo.tabName') || '',
href: helpers.urlFormat('/product/bundle/detail', query),
};
}),
shareInfo: {
imgUrl: `http:${helpers.image(shareInfo.imgUrl, 300, 300)}`,
subTitle: encodeURIComponent(shareInfo.subTitle),
title: encodeURIComponent(shareInfo.title),
url: shareInfo.url
},
bundleInfo: _.get(result, `data[${bundleIndex}].bundleInfo`, {}),
productList: productProcess.processProductList(
_.get(result, `data[${bundleIndex}].productList`, []))
};
}
return {};
});
}
/**
* 套餐加入购物车
* @param {*} params
*/
addToCart(params) {
let skuList = params.product_sku_list;
let finalParams = {
method: 'app.Shopping.addBundle',
shopping_key: params.shopping_key,
activity_id: params.activity_id,
product_sku_list: skuList
};
if (params.uid) {
Object.assign(finalParams, {
uid: params.uid
});
}
return this.post({
data: finalParams,
param: {
headers: {
'User-Agent': params.userAgent
}
}
});
}
}
module.exports = bundleModel;