Authored by 王水玲

sale 会员等级修改

/**
* 频道页面 model
* @author: wsl<shuiling.wang@yoho.cn>
* @date: 2016/05/17
*/
'use strict';
const library = '../../../library';
const utils = '../../../utils';
const API = require(`${library}/api`).API;
const ServiceAPI = require(`${library}/api`).ServiceAPI;
const sign = require(`${library}/sign`);
const logger = require(`${library}/logger`);
const helpers = require(`${library}/helpers`);
const camelCase = require(`${library}/camel-case`);
const resourcesProcess = require(`${utils}/resources-process`);
const productProcess = require(`${utils}/product-process`);
const _ = require('lodash');
const api = new API();
const serviceAPI = new ServiceAPI();
const anHour = 3600;
const aDay = anHour * 24;
/**
* 需要格式化的时间格式
*/
const timeFormat = {
d: '剩{d}天',
h: '剩{h}小时',
m: '剩{m}分钟',
s: '剩{s}秒',
dh: '剩{d}天{h}小时',
dhms: '剩{d}天{h}小时{m}分钟{s}秒',
hms: '剩{h}小时{m}分钟{s}秒',
ms: '剩{m}分钟{s}秒'
};
/**
* 排序转换
*/
const typeCont = {
price: ['s_p_desc', 's_p_asc'],
discount: ['p_d_desc', 'p_d_asc'],
sale: ['s_n_desc', 's_n_asc'],
newest: ['s_t_desc,s_s_desc', 's_t_asc,s_s_asc'],
stock: ['s_s_desc', 's_s_asc']
};
/**
* 资源位code码
*/
const contentCode = {
boys: {
sale: '153180b9a88c0b565848850c523bb637',
breakCode: 'd763e3f8d208cbed8f100253ea4f8946',
vip: '6b9810a442efe1e6252b134154d36769'
},
girls: {
sale: '0b2d133419a0f7c381306fd3522365e1',
breakCode: '77258d0b526c7b6e243c1419877ead4a',
vip: 'e83f3582df32b6753eed49fda236a755'
},
kids: {
sale: 'de23648d28ee1e8a3f087a9dbac506f8',
breakCode: '3f0898f1089b7bef5f3e071725c7a608',
vip: '664935745012db6e2a96a7d57f75512f'
},
lifeStyle: {
sale: '01269e498ff5b07756e0733ec0e88c75',
breakCode: '0020a5762771aa16902a666c9491394e',
vip: '647f1154d30b323ff46c787fc78aef65'
}
};
/**
* 折扣专场专题列表过期时间处理
* @param {[string]} time
* @return {[object]}
*/
const processTime = (time) => {
let data = {};
let type = '';
if (time < anHour) {
data.warnColor = true;
data.time = '低于1小时';
} else {
if (time > aDay) {
type = 'dh';
} else {
type = 'h';
}
data.time = helpers.dateDiffFormat(timeFormat[type], time, 's');
}
return data;
};
/**
* 折扣专场列表数据处理
* @param {[array]} list
* @return {[array]}
*/
const processDiscount = (list, channel) => {
const formatData = [];
let flag = true;
list = list || [];
list = camelCase(list);
if (list.length === 1) {
flag = false;
}
_.forEach(list, (data) => {
if (flag === true) {
data.specialUrl = `/product/sale/discount/detail?id=${data.id}&channel=${channel}`;
_.merge(data, processTime(data.leftTime));
}
formatData.push(data);
});
return formatData;
};
/**
* 折扣专场接口调用
* @param {[object]} params
* @return {[array]}
*/
const discount = (params) => {
params = params || {};
return api.get('', sign.apiSign(Object.assign({
method: 'app.activity.get',
sort: 2,
plateform: 3
}, params)));
};
/**
* 断码区分类数据处理
* @param {[array]} list
* @return {[array]}
*/
const processBreakingSort = (list) => {
const formatData = {};
const sort = [];
const sub = [];
list = list || [];
list = camelCase(list);
_.forEach(list, (data, index) => {
sort.push({
sortName: data.sortName,
sortId: data.sortId
});
data.sub.key = index;
sub.push(data.sub);
});
formatData.sortData = sort;
formatData.sub = sub;
return formatData;
};
/**
* 商品搜索接口请求
* @param {[object]} params
* @return {[array]}
*/
const searchSales = (params) => {
// 排除基本筛选项默认值为0的对象
for (let str in params) {
if (str !== 'order' && params[str] === '0' || params[str] === null) {
delete params[str];
}
}
params = Object.assign({
limit: '50'
}, params);
if (typeCont[params.type]) {
params.order = typeCont[params.type][params.order];
}
return api.get('', sign.apiSign(Object.assign({
method: 'app.search.sales'
}, params)), true);
};
/**
* 获取用户数据信息
* @param {[string]} uid
* @return {[array]}
*/
const getUserProfile = (uid) => {
if (!uid) {
return Promise.resolve({
code: 200,
data: {}
});
}
return api.get('', sign.apiSign({
method: 'app.passport.profile',
uid: uid
}), true);
};
/**
* 获取商品数据
*/
exports.getSearchData = (params, uid) => {
return Promise.all([
searchSales(params).then((result) => {
if (result && result.code === 200) {
return productProcess.processProductList(result.data.product_list || []);
} else {
logger.error('SALE 商品搜索返回 code 不是 200');
return [];
}
}),
getUserProfile(uid).then((result) => {
if (result && result.code === 200) {
return result.data.vip_info ? camelCase(result.data.vip_info) : {};
} else {
logger.error('获取用户信息返回 code 不是 200');
return {};
}
})
]);
};
/**
* 获取资源位数据
* @param {[string]} page
* @return {[array]}
*/
const getResources = (page, channel) => {
return serviceAPI.get('operations/api/v5/resource/get', sign.apiSign({
content_code: contentCode[channel][page]
})).then((result) => {
if (result && result.code === 200) {
return resourcesProcess(result.data);
} else {
logger.error('SALE 页面资源位返回 code 不是 200');
return [];
}
});
};
/**
* 获取断码区分类数据
* @param {[string]} yhChannel
* @return {[object]}
*/
const getBreakingSort = (yhChannel) => {
return api.get('', sign.apiSign({
method: 'app.sale.getBreakingSort',
yh_channel: yhChannel || '1'
})).then((result) => {
if (result && result.code === 200) {
return processBreakingSort(result.data);
} else {
logger.error('断码区分类接口返回 code 不是 200');
return {};
}
});
};
/**
* 获取筛选数据
* @param {[object]} params
* @return {[array]}
*/
exports.getFilterData = (params) => {
return searchSales(params).then((result) => {
if (result && result.code === 200) {
return productProcess.processFilter(result.data.filter || [], {
hideSize: params.saleType === '1',
hideSort: params.saleType === '1'
});
} else {
logger.error('SALE 商品搜索返回 code 不是 200');
return [];
}
});
};
/**
* 获取sale首页数据
* @return {[array]}
*/
exports.getSaleData = (channel) => {
return getResources('sale', channel);
};
/**
* 获取会员享数据
* @return {[array]}
*/
exports.getVipData = (channel) => {
return getResources('vip', channel);
};
/**
* 获取断码区数据
* @param {[object]} params
* @return {[object]}
*/
exports.getBreakCodeData = (params) => {
params = params || {};
return Promise.all([getResources('breakCode', params.yhChannel), getBreakingSort(params.yhChannel)])
.then((result) => {
return {
content: result[0],
nav: result[1]
};
});
};
/**
* 获取折扣专场专题列表数据
* @param {[object]} params
* @return {[object]}
*/
exports.getDiscountData = (params) => {
const discountData = {};
return discount().then((result) => {
if (result && result.code === 200) {
discountData.data = processDiscount(result.data, params);
return discountData;
} else {
logger.error('折扣专场专题列表返回 code 不是 200');
return {};
}
});
};
/**
* 获取折扣专场专题详情数据
* @param {[string]} id
* @return {[object]}
*/
exports.getDiscountDetailData = (id) => {
let res = {};
let param = {
id: id
};
return discount(param).then((result) => {
if (result && result.code === 200) {
res = processDiscount(result.data);
return {
title: res[0].title,
activity: {
coverUrl: res[0].coverUrl,
time: res[0].time,
leftTime: res[0].leftTime
}
};
} else {
logger.error('折扣专场专题详情返回 code 不是 200');
return {};
}
});
};
... ... @@ -132,18 +132,18 @@
vertical-align: text-bottom;
}
.vip-grade-3 {
background: resolve('product/golden.png') no-repeat;
.vip-grade-1 {
background: resolve('product/silver.png') no-repeat;
background-size: contain;
}
.vip-grade-2 {
background: resolve('product/platinum.png') no-repeat;
background: resolve('product/golden.png') no-repeat;
background-size: contain;
}
.vip-grade-1 {
background: resolve('product/silver.png') no-repeat;
.vip-grade-3 {
background: resolve('product/platinum.png') no-repeat;
background-size: contain;
}
... ...