Authored by xuqi

Merge branch 'release/1.0' of http://git.yoho.cn/fe/yoho-blk into release/1.0

... ... @@ -8,53 +8,11 @@
const helpModel = require('../models/help');
/**
* 主界面
*/
const index = (req, res) => {
let id = req.query.id || "11";
helpModel.getHelpDetail("81", 1, 15, "").then(result=> {
let content = {content: result.helpdetail_list[0].content};
let data = Object.assign(content, helpModel.menuData());
let nav = [
{
link: global.yoho.config.sitUrl,
name: 'YOHO!BLK首页'
},
{
name: '帮助中心'
}
];
nav = nav.concat(getNav(id));
res.display('detail', {
module: 'help',
page: 'help',
content: Object.assign({nav}, data)
});
});
/* let data = Object.assign(getData(id), helpModel.menuData());
let nav = [
{
link: global.yoho.config.sitUrl,
name: 'YOHO!BLK首页'
},
{
name: '帮助中心'
}
];
nav = nav.concat(getNav(id));
res.display('detail', {
module: 'help',
page: 'help',
content: Object.assign({nav}, data)
});*/
};
/**
* 根据id获取文章数据
* @param id
* @returns {*}
*/
const getData = (id)=> {
/* const getData = (id)=> {
let contentData = helpModel.contentData().content;
for (var i = 0; i < contentData.length; i++) {
... ... @@ -62,7 +20,7 @@ const getData = (id)=> {
return contentData[i]
}
}
};
};*/
/**
* 根据id获取当前所在位置,拼接面包屑
... ... @@ -81,7 +39,7 @@ const getNav = (id)=> {
}, {
name: menuData[i].subsets[j].text
}
]
];
}
}
} else {
... ... @@ -90,12 +48,59 @@ const getNav = (id)=> {
{
name: menuData[i].text
}
]
];
}
}
}
};
/**
* 主界面
*/
const index = (req, res) => {
let id = req.query.id || '11';
helpModel.getHelpDetail('81', 1, 15, '').then(result=> {
let content = {content: result.helpdetail_list[0].content};
let data = Object.assign(content, helpModel.menuData());
let nav = [
{
link: global.yoho.config.sitUrl,
name: 'YOHO!BLK首页'
},
{
name: '帮助中心'
}
];
nav = nav.concat(getNav(id));
res.display('detail', {
module: 'help',
page: 'help',
content: Object.assign({nav}, data)
});
});
/* let data = Object.assign(getData(id), helpModel.menuData());
let nav = [
{
link: global.yoho.config.sitUrl,
name: 'YOHO!BLK首页'
},
{
name: '帮助中心'
}
];
nav = nav.concat(getNav(id));
res.display('detail', {
module: 'help',
page: 'help',
content: Object.assign({nav}, data)
});*/
};
module.exports = {
index
};
... ...
... ... @@ -7,6 +7,7 @@
'use strict';
const api = global.yoho.API;
/**
* 分类数据
* @returns {{}}
... ... @@ -15,47 +16,47 @@ const menuData = ()=> {
return {
menuData: [
{
id: "1",
text: "购物指南"
id: '1',
text: '购物指南'
},
{
id: "2",
text: "支付方式"
id: '2',
text: '支付方式'
},
{
id: "3",
text: "配送方式",
id: '3',
text: '配送方式',
subsets: [
{
id: "31",
parendId: "3",
text: "配送时间与范围"
id: '31',
parendId: '3',
text: '配送时间与范围'
},
{
id: "32",
parendId: "3",
text: "商品验收与签收"
id: '32',
parendId: '3',
text: '商品验收与签收'
}
]
},
{
id: "4",
text: "售后服务",
id: '4',
text: '售后服务',
subsets: [
{
id: "41",
parendId: "4",
text: "投诉与建议"
id: '41',
parendId: '4',
text: '投诉与建议'
},
{
id: "42",
parendId: "4",
text: "退换货流程"
id: '42',
parendId: '4',
text: '退换货流程'
},
{
id: "43",
parendId: "4",
text: "退换货政策"
id: '43',
parendId: '4',
text: '退换货政策'
}
]
}
... ... @@ -71,19 +72,19 @@ const contentData = ()=> {
return {
content: [
{
id: "11",
content: "<h1>你好</h1><p>测试11</p>"
id: '11',
content: '<h1>你好</h1><p>测试11</p>'
},
{
id: "12",
content: "<h1>你好</h1><p>测试12</p>"
id: '12',
content: '<h1>你好</h1><p>测试12</p>'
},
{
id: "13",
content: "<h1>你好</h1><p>测试13</p>"
id: '13',
content: '<h1>你好</h1><p>测试13</p>'
}
]
}
};
};
/**
... ...
... ... @@ -15,6 +15,7 @@ const help = require(`${cRoot}/help`);
// 帮助中心
router.get('/', help.index);
// router.get('/search', help.search);
... ...
... ... @@ -367,7 +367,7 @@ function getfilePath(req, res, next) {
req.filePath = filePath;
req.pipe(uploadStream);
uploadStream.on('finish', function () {
uploadStream.on('finish', function() {
next();
});
}
... ...
/**
* 个人中心-我的订单model
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/7/19
*/
'use strict';
const api = global.yoho.API;
... ... @@ -24,6 +30,7 @@ const paymentTypeStr = {
4: '抵消支付'
};
// 订单操作按钮
const btnMap = {
all: [
{
... ... @@ -135,11 +142,17 @@ const _convertUnixTime = src => {
return moment.unix(src).format('YYYY-MM-DD hh:mm:ss');
};
/**
* 获取订单物流信息
* @param { [Object] } addressList
* @param { String } createTime
* @return { [Object] }
*/
const _convertAddress = (addressList, createTime) => {
let addrList = [];
addressList.forEach(addr => {
let address = {
const address = {
time: '',
city: '',
action: ''
... ... @@ -169,7 +182,11 @@ const _convertAddress = (addressList, createTime) => {
return _.reverse(addrList);
};
// 根据订单状态获取当前步骤
/**
* 获取订单状态
* @param { String } st 订单状态
* @return { [Object] }
*/
const _getStepByOrderStatus = st => {
let steps = [
{
... ... @@ -197,6 +214,12 @@ const _getStepByOrderStatus = st => {
return steps;
};
/**
* 获取订单详情
* @param { Number } uid 用户id
* @param { Number } code 订单编码
* @return { Object } Promise 对象
*/
const _getDetail = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.detail',
... ... @@ -207,6 +230,13 @@ const _getDetail = (uid, code) => {
});
};
/**
* 获取订单列表
* @param { Number } uid 用户id
* @param { String } type 订单类型
* @param { Number } page 当前页
* @return { Object } Promise 对象
*/
const _getUserOrder = (uid, type, page) => {
return api.get('', {
... ... @@ -302,6 +332,12 @@ const _getUserOrder = (uid, type, page) => {
};
/**
* 删除订单
* @param { Number } uid 用户id
* @param { String } code 订单编码
* @return { Object } Promise 对象
*/
const deleteOrder = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.delOrderByCode',
... ... @@ -310,6 +346,12 @@ const deleteOrder = (uid, code) => {
});
};
/**
* 取消订单
* @param { Number } uid 用户id
* @param { Object } data 调用接口所需的数据
* @return { Object } Promise 对象
*/
const cancelOrder = (uid, data) => {
return api.get('', {
method: 'app.SpaceOrders.close',
... ... @@ -320,6 +362,10 @@ const cancelOrder = (uid, data) => {
});
};
/**
* 获取取消订单的理由
* @return { Object } Promise 对象
*/
const getCancelOrderReason = () => {
return api.get('', {
method: 'app.SpaceOrders.closeReasons'
... ... @@ -328,6 +374,12 @@ const getCancelOrderReason = () => {
});
};
/**
* 获取快递信息
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const getExpressInfo = (uid, code) => {
return api.get('', {
method: 'app.express.get',
... ... @@ -338,6 +390,13 @@ const getExpressInfo = (uid, code) => {
});
};
/**
* 获取全部订单
* @param { Number } uid 用户id
* @param { String } type 订单类型
* @param { Number } page 页码
* @return { Object } Promise 对象
*/
const getOrderData = (uid, type, page) => {
const navBar = {
tabs: [
... ... @@ -411,10 +470,16 @@ const getOrderData = (uid, type, page) => {
});
};
/**
* 获取订单详情
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const getOrderDetail = (uid, code) => {
return api.all([_getDetail(uid, code), getExpressInfo(uid, code)]).then(result => {
let detail = result[0] && camelCase(result[0].data);
let express = result[1] && camelCase(result[1].data);
const detail = result[0] && camelCase(result[0].data);
const express = result[1] && camelCase(result[1].data);
const st = parseInt(detail.status, 10);
... ... @@ -460,6 +525,11 @@ const getOrderDetail = (uid, code) => {
});
};
/**
* 编辑订单
* @param { Object } data 调用接口所需的数据
* @return { Object } Promise 对象
*/
const editOrder = data => {
return api.get('', {
method: 'app.SpaceOrders.updateDeliveryAddress',
... ... @@ -474,6 +544,12 @@ const editOrder = data => {
});
};
/**
* 重新购买
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const reAddCart = (uid, code) => {
return api.get('', {
method: 'app.Shopping.readd',
... ... @@ -483,6 +559,12 @@ const reAddCart = (uid, code) => {
});
};
/**
* 确认收货
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const confirmReceive = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.confirm',
... ...
... ... @@ -44,8 +44,7 @@ const Search = {
let finalParams = {
method: 'app.search.li',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -55,8 +54,7 @@ const Search = {
queryProductOfBrand(params) {
let finalParams = {
method: 'app.search.li',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -66,8 +64,7 @@ const Search = {
queryNewProduct(params) {
let finalParams = {
method: 'app.search.newProduct',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -76,8 +73,7 @@ const Search = {
},
queryAllSort(params) {
return api.get('', _.assign({
method: 'web.regular.groupsort',
app_type: 1
method: 'web.regular.groupsort'
}, params), {code: 200});
}
};
... ...
... ... @@ -44,13 +44,15 @@ const Payment = {
beforePay(user, order, method) {
return Promise.all([
OrderData.updateOrderPayment(order.orderCode, method, user.uid),
PayData.savePrePayInfo(order.orderCode, method, user.uid),
PayData.getBankByOrder(order.orderCode)
]).then(result => {
let paymentRecord = result[0];
let bankRecord = result[1];
let prePayResult = result[1];
let bankRecord = result[2];
let bankCode = ''; // 暂时写成'', 参考php代码 Payment.php:564
if (!paymentRecord || paymentRecord.code !== 200) {
if (!paymentRecord || paymentRecord.code !== 200 || !prePayResult || prePayResult.code !== 200) {
let message = paymentRecord && paymentRecord.message ? paymentRecord.message : '系统繁忙,请稍后再试';
return {code: 400, message: message};
... ...
... ... @@ -55,6 +55,15 @@ const sendPayConfirm = (code, payment, uid) => {
});
};
const savePrePayInfo = (code, payment, uid) => {
return api.get('', {
method: 'app.order.savePrePayInfo',
orderCode: code,
payment: payment,
uid: uid
});
};
const sendMessage = (mobile, template, codes) => {
return api.get('', {
method: 'app.message.sendMsg',
... ... @@ -71,5 +80,6 @@ module.exports = {
setOrderPayBank,
updateOrderPayBank,
sendPayConfirm,
savePrePayInfo,
sendMessage
};
... ...
... ... @@ -150,6 +150,21 @@ const updateOrderPayBank = (code, payment, bankCode) => {
};
/**
* 选择支付,校验时间间隔,插入数据
* @param code
* @param payment
* @param uid
*/
const savePrePayInfo = (code, payment, uid) => {
return co(function *() {
let data = yield api.savePrePayInfo(code, payment, uid);
return data;
})();
};
/**
* 支付确认
* @param code
* @param payment
... ... @@ -228,6 +243,7 @@ module.exports = {
updateOrderPayBank,
sendPayConfirm,
procOrderData,
savePrePayInfo,
payments
};
... ...
... ... @@ -61,7 +61,7 @@
"uuid": "^2.0.2",
"winston": "^2.2.0",
"winston-daily-rotate-file": "^1.1.4",
"yoho-node-lib": "0.0.28"
"yoho-node-lib": "0.0.30"
},
"devDependencies": {
"autoprefixer": "^6.3.6",
... ...
... ... @@ -4,36 +4,31 @@
* @date: 2016/07/25
*/
var queryId = location.search.split("=")[1] || "1";
var $cate = $(".cateId-" + queryId);//当前分类
var $subsets=$(".subsets");
var queryId = location.search.split('=')[1] || '1';
var $cate = $('.cateId-' + queryId);// 当前分类
var $subsets = $('.subsets');
var parentID = queryId.substr(0, 1);// 一级分类id
/**
* 目录切换
*/
$subsets.click(function () {
$subsets.click(function() {
var $this = $(this);
var className = $this.attr("class").split(" ")[1];
var parentId = "parentId-" + className.split("-")[1];
var $child = $this.parent().find("." + parentId);//当前子分类
var className = $this.attr('class').split(' ')[1];
var parentId = 'parentId-' + className.split('-')[1];
var $child = $this.parent().find('.' + parentId);// 当前子分类
if ($this.hasClass("open")) {
if ($this.hasClass('open')) {
$child.hide();
$this.removeClass("open").children('.plus').css("background-image", "url('../img/help/plus.png')");
$this.removeClass('open').children('.plus').css('background-image', 'url(\'../img/help/plus.png\')');
} else {
$child.show();
$this.addClass("open").children('.plus').css("background-image", "url('../img/help/minus.png')");
$this.addClass('open').children('.plus').css('background-image', 'url(\'../img/help/minus.png\')');
}
});
if (!$cate.hasClass("big-category")) {
var parentId = queryId.substr(0, 1);
$(".parentId-" + parentId).show();
$(".cateId-" + parentId).find(".plus").css("background-image", "url('../img/help/minus.png')");
if (!$cate.hasClass('big-category')) {
$('.parentId-' + parentID).show();
$('.cateId-' + parentID).find('.plus').css('background-image', 'url(\'../img/help/minus.png\')');
}
... ...
... ... @@ -21,6 +21,9 @@ var reg = new RegExp(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57
require('./me');
require('../plugins/check');
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
$(function() {
var address = cascadingAddress({el: '#address'});
... ...
... ... @@ -50,6 +50,7 @@ var Bll = {
require('./me');
require('../plugins/check');
require('yoho-jquery-placeholder');
// 第一步:身份验证
require('../me/setting/validate');
... ... @@ -57,6 +58,7 @@ require('../me/setting/validate');
// 第二步:操作
require('../me/setting/operate');
$('[placeholder]').placeholder();
// 编辑头像移入移出切换效果
$('.user-icon').hover(function() {
... ...
... ... @@ -41,6 +41,10 @@ var validatePhoneNumLocal = function(phoneNum) {
}
};
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
/**
* 绑定手机号码部分
*/
... ...
... ... @@ -28,6 +28,10 @@ var disableSMSBtn = function() {
}
};
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
// 发送手机验证码
$sms.click(function() {
var mobile = $('#real-mobile').val();
... ...
... ... @@ -13,6 +13,34 @@
text-align: center;
background: #fff;
}
.nav {
li {
cursor: pointer;
padding: 10px 15px;
width: 200px;
font-size: 14px;
.plus {
cursor: pointer;
margin-right: 10px;
height: 14px;
width: 14px;
background-repeat: no-repeat;
background-image: resolve('help/plus.png');
background-size: 14px 14px;
}
.mult {
margin-right: 26px;
height: 14px;
width: 14px;
}
}
.smll-category {
display: none;
}
}
}
.help-main {
... ... @@ -22,5 +50,3 @@
}
}
@import "menu";
... ...
.nav {
li {
cursor: pointer;
padding: 10px 15px;
width: 200px;
font-size: 14px;
.plus {
cursor: pointer;
margin-right: 10px;
height: 14px;
width: 14px;
background-repeat: no-repeat;
background-image: resolve('help/plus.png');
background-size: 14px 14px;
}
}
.smll-category {
display: none;
}
}
.mult {
margin-right: 26px;
height: 14px;
width: 14px;
}
... ... @@ -131,7 +131,7 @@ exports.processProductList = (list, options) => {
midYear: product.midYear === 'Y', // 年中
yearEnd: product.yearEnd === 'Y', // 年末
isAdvance: product.isAdvance === 'Y' // 再到着
})
});
// 打折与即将售完组合显示打折
if (product.isSoonSoldOut && tags.isDiscount) {
... ...