Authored by zhangxiaoru

yohocoin

@@ -19,7 +19,7 @@ const index = (req, res) => { @@ -19,7 +19,7 @@ const index = (req, res) => {
19 const couponData = (req, res, next) => { 19 const couponData = (req, res, next) => {
20 model.couponData({ 20 model.couponData({
21 method: 'app.coupons.li', 21 method: 'app.coupons.li',
22 - uid: 20000382, 22 + uid: req.user.uid,
23 status: req.body.status || 0, 23 status: req.body.status || 0,
24 page: req.body.page || 1, 24 page: req.body.page || 1,
25 limit: 10, 25 limit: 10,
  1 +// 帮助 by acgpiano
  2 +'use strict';
  3 +const headerModel = require('../../../doraemon/models/header'), // 头部model
  4 + model = require('../models/help');
  5 +
  6 +exports.index = (req, res, next) => {
  7 + model.getHelpList().then(result => {
  8 + res.render('help', {
  9 + module: 'home',
  10 + page: 'help',
  11 + pageHeader: headerModel.setNav({
  12 + navTitle: '帮助中心'
  13 + }),
  14 + title: '帮助中心',
  15 + pageFooter: true,
  16 + iHelp: result,
  17 + });
  18 + }).catch(next);
  19 +};
  20 +
  21 +exports.helpDetail = (req, res, next) => {
  22 + model.getHelpDetail(req.query.code).then(result => {
  23 + res.render('help-detail', {
  24 + module: 'home',
  25 + page: 'help-detail',
  26 + pageHeader: headerModel.setNav({
  27 + navTitle: req.query.name
  28 + }),
  29 + title: req.query.name,
  30 + pageFooter: true,
  31 + detail: result,
  32 + });
  33 + }).catch(next);
  34 +};
@@ -91,8 +91,14 @@ exports.record = (req, res) => { @@ -91,8 +91,14 @@ exports.record = (req, res) => {
91 91
92 }; 92 };
93 93
  94 +/**
  95 + * 浏览记录列表
  96 + * @param req
  97 + * @param res
  98 + * @param next
  99 + */
94 exports.recordContent = (req, res, next) => { 100 exports.recordContent = (req, res, next) => {
95 - let uid = req.user.uid; 101 + let uid = req.user.uid || 6228593;
96 102
97 let udid = req.user.udid; 103 let udid = req.user.udid;
98 104
@@ -112,6 +118,12 @@ exports.recordContent = (req, res, next) => { @@ -112,6 +118,12 @@ exports.recordContent = (req, res, next) => {
112 }).catch(next); 118 }).catch(next);
113 }; 119 };
114 120
  121 +/**
  122 + * 删除浏览记录
  123 + * @param req
  124 + * @param res
  125 + * @param next
  126 + */
115 exports.delRecord = (req, res, next) => { 127 exports.delRecord = (req, res, next) => {
116 let uid = req.user.uid; 128 let uid = req.user.uid;
117 129
@@ -122,4 +134,35 @@ exports.delRecord = (req, res, next) => { @@ -122,4 +134,35 @@ exports.delRecord = (req, res, next) => {
122 }).catch(next); 134 }).catch(next);
123 }; 135 };
124 136
  137 +/**
  138 + * 会员等级展示页
  139 + * @param req
  140 + * @param res
  141 + * @param next
  142 + */
  143 +
  144 +exports.grade = (req, res, next) => {
  145 +
  146 + let headerData = headerModel.setNav({
  147 + navTitle: '会员等级'
  148 + });
  149 +
  150 + let responseData = {
  151 + pageHeader: headerData,
  152 + module: 'home',
  153 + page: 'grade',
  154 + title: '会员等级',
  155 + pageFooter: true
  156 + };
  157 +
  158 + indexModel.getGrade({
  159 + uid: req.user.uid || 8039759,
  160 + channel: req.query.channel || 1
  161 + }).then((result) => {
  162 + console.log(result);
  163 + res.render('vip-grade/vip-grade', Object.assign(result, responseData));
  164 + }).catch(next);
  165 +
  166 +
  167 +};
125 168
@@ -22,7 +22,7 @@ app.engine('.hbs', hbs({ @@ -22,7 +22,7 @@ app.engine('.hbs', hbs({
22 extname: '.hbs', 22 extname: '.hbs',
23 defaultLayout: 'layout', 23 defaultLayout: 'layout',
24 layoutsDir: doraemon, 24 layoutsDir: doraemon,
25 - partialsDir: ['./views/partial', `${doraemon}/partial`], 25 + partialsDir: [path.join(__dirname, './views/partial'), `${doraemon}/partial`],
26 helpers: global.yoho.helpers 26 helpers: global.yoho.helpers
27 })); 27 }));
28 28
  1 +// 帮助 by acgpiano
  2 +'use strict';
  3 +
  4 +const api = global.yoho.API;
  5 +
  6 +// 获取帮助列表
  7 +exports.getHelpList = () => {
  8 + return api.get('', {
  9 + method: 'app.help.li'
  10 + }).then(result => {
  11 + if (result && result.code === 200 && result.data) {
  12 + let final = [];
  13 + for (let name of result.data) {
  14 + final.push({
  15 + name: name.caption,
  16 + code: name.code,
  17 + });
  18 + }
  19 + return final;
  20 + }
  21 + });
  22 +};
  23 +
  24 +// 获取帮助详情
  25 +exports.getHelpDetail = (code) => {
  26 + return api.get('', {
  27 + method: 'app.help.detail',
  28 + code: code,
  29 + }).then(result => {
  30 + return result.replace(/^<!DOCTYPE.*<body>/g, '').
  31 + replace(/<\/body>.*<\/html>/g, '');
  32 + });
  33 +};
@@ -202,6 +202,10 @@ const recordContent = (uid, udid, page, limit) => { @@ -202,6 +202,10 @@ const recordContent = (uid, udid, page, limit) => {
202 }); 202 });
203 }; 203 };
204 204
  205 +/**
  206 + * 删除浏览记录
  207 + * @param params
  208 + */
205 const delRecord = (uid, skn) => { 209 const delRecord = (uid, skn) => {
206 return api.get('', { 210 return api.get('', {
207 method: 'app.browse.delete', 211 method: 'app.browse.delete',
@@ -210,9 +214,58 @@ const delRecord = (uid, skn) => { @@ -210,9 +214,58 @@ const delRecord = (uid, skn) => {
210 }); 214 });
211 }; 215 };
212 216
  217 +/**
  218 + * 会员等级
  219 + * @param params
  220 + */
  221 +const getGradeGrade = (channel, uid) => {
  222 + return api.get('', {
  223 + method: 'app.passport.vip',
  224 + uid: uid || 6228593,
  225 + channel: channel || 1
  226 + }, {code: 200});
  227 +};
  228 +
  229 +const getGradeUser = (channel, uid) => {
  230 + return api.get('', {
  231 + method: 'app.passport.profile',
  232 + uid: uid || 6228593,
  233 + channel: channel || 1
  234 + }, {code: 200});
  235 +};
  236 +
  237 +const getGrade = (channel, uid) => {
  238 +
  239 + return api.all([
  240 + getGradeGrade(channel, uid),
  241 + getGradeUser(channel, uid)
  242 + ]).then((result) => {
  243 +
  244 + let resu = {
  245 + vipGrade: []
  246 + };
  247 +
  248 + if (result[0] && result[0].data) {
  249 + resu = {
  250 + vipGrade: [
  251 + {
  252 + costOfThisYear: result[0].data.current_year_cost,
  253 + sumCost: result[0].data.current_total_cost,
  254 + vip1: true,
  255 + name: '1111'
  256 + }
  257 + ]
  258 + };
  259 + }
  260 + return resu;
  261 + });
  262 +};
  263 +
  264 +
213 module.exports = { 265 module.exports = {
214 index, 266 index,
215 myDetails, 267 myDetails,
216 recordContent, 268 recordContent,
217 - delRecord 269 + delRecord,
  270 + getGrade
218 }; 271 };
@@ -18,6 +18,7 @@ const orderController = require(`${cRoot}/order`); @@ -18,6 +18,7 @@ const orderController = require(`${cRoot}/order`);
18 const orderDetailController = require(`${cRoot}/orderDetail`); 18 const orderDetailController = require(`${cRoot}/orderDetail`);
19 const currencyController = require(`${cRoot}/myCurrency`); 19 const currencyController = require(`${cRoot}/myCurrency`);
20 const coupons = require(`${cRoot}/coupons`); 20 const coupons = require(`${cRoot}/coupons`);
  21 +const help = require(`${cRoot}/help`);
21 22
22 // const myDetail = require(`${cRoot}/myDetail); 23 // const myDetail = require(`${cRoot}/myDetail);
23 24
@@ -44,6 +45,8 @@ router.get('/cancelOrder', orderDetailController.cancelOrder); // 取消订单 @@ -44,6 +45,8 @@ router.get('/cancelOrder', orderDetailController.cancelOrder); // 取消订单
44 router.get('/', homeController.index); // 个人中心首页 45 router.get('/', homeController.index); // 个人中心首页
45 router.get('/mydetails', homeController.myDetails); // 个人基本资料页面 46 router.get('/mydetails', homeController.myDetails); // 个人基本资料页面
46 47
  48 +router.get('/grade', homeController.grade); // 会员等级页
  49 +
47 router.get('/mycurrency', currencyController.myCurrency); // yoho币总数 50 router.get('/mycurrency', currencyController.myCurrency); // yoho币总数
48 router.get('/currencyDetail', currencyController.currencyDetail); // yoho币列表 51 router.get('/currencyDetail', currencyController.currencyDetail); // yoho币列表
49 router.post('/ajaxCurrencyDetail', currencyController.ajaxCurrencyDetail); // yoho币列表 52 router.post('/ajaxCurrencyDetail', currencyController.ajaxCurrencyDetail); // yoho币列表
@@ -65,7 +68,11 @@ router.get('/favBrand', favorite.favfavBrand); @@ -65,7 +68,11 @@ router.get('/favBrand', favorite.favfavBrand);
65 router.post('/favoriteDel', favorite.favoriteDelete); 68 router.post('/favoriteDel', favorite.favoriteDelete);
66 69
67 // 优惠券 70 // 优惠券
68 -router.get('/coupons', coupons.index); 71 +router.get('/coupons', auth, coupons.index);
69 router.post('/couponData', coupons.couponData); 72 router.post('/couponData', coupons.couponData);
70 73
71 -module.exports = router; 74 +// 帮助中心
  75 +router.get('/help', help.index);
  76 +router.get('/helpDetail', help.helpDetail);
  77 +
  78 +module.exports = router;
  1 +<div class="iHelp">
  2 + <ul>
  3 + {{#iHelp}}
  4 + <li><a href="//m.yohobuy.com/home/helpDetail?code={{code}}&name={{name}}"><span>{{name}}</span><i class="iconfont num">&#xe604;</i></a></li>
  5 + {{/iHelp}}
  6 + </ul>
  7 +</div>
  1 +<div class="vip-grade-page yoho-page">
  2 + {{# vipGrade}}
  3 + <div class="basic-info block">
  4 + {{> vip-grade/basic-info}}
  5 + </div>
  6 +
  7 + <ul class="cost block">
  8 + <li>
  9 + 年度累计金额:
  10 + <span>{{costOfThisYear}}</span>
  11 + </li>
  12 + <li>
  13 + 历史消费总金额:
  14 + <span>{{sumCost}}</span>
  15 + </li>
  16 + </ul>
  17 +
  18 + {{#unless vip0}}
  19 + <div class="privilege block">
  20 + <h3 class="title">当前可享受的特权</h3>
  21 + {{> vip-grade/privilege}}
  22 + </div>
  23 + {{/unless}}
  24 +
  25 + <a class="all-privilege block tap-hightlight" href="{{allUrl}}">
  26 + 查看全部VIP特权
  27 + <span class="iconfont">&#xe604;</span>
  28 + </a>
  29 + {{/ vipGrade}}
  30 +</div>
  1 +{{#if vip3}}
  2 + <p>
  3 + <span class="user-name">{{name}}</span>
  4 + <span class="vip-icon vip-3"></span>
  5 + </p>
  6 + <p class="grade-desc">
  7 + 您已升级至最高的等级啦!
  8 + </p>
  9 + <p class="sum-cost">
  10 + 年度累计金额<span>{{costOfThisYear}}</span>
  11 + </p>
  12 + <div class="progresser">
  13 + <div class="outer"></div>
  14 + <div class="inner" style="width: {{percent}}%;"></div>
  15 + <span class="beacon beacon-min">
  16 + 白金卡会员
  17 + </span>
  18 + </div>
  19 +{{/if}}
  20 +
  21 +{{#if vip2}}
  22 + <p>
  23 + <span class="user-name">{{name}}</span>
  24 + <span class="vip-icon vip-2"></span>
  25 + </p>
  26 + <p class="grade-desc">
  27 + 还差<span class="cost-gap">{{costGap}}</span>就可以升级为白金会员!
  28 + <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
  29 + </p>
  30 + <p class="sum-cost">
  31 + 年度累计金额<span>{{costOfThisYear}}</span>
  32 + </p>
  33 + <div class="progresser">
  34 + <div class="outer"></div>
  35 + <div class="inner" style="width: {{percent}}%;"></div>
  36 + <span class="beacon beacon-min">
  37 + 金卡会员
  38 + </span>
  39 + <span class="beacon beacon-max">白金卡会员</span>
  40 + <span class="cost-limit">¥5000.00</span>
  41 + </div>
  42 +{{/if}}
  43 +
  44 +{{#if vip1}}
  45 + <p>
  46 + <span class="user-name">{{name}}</span>
  47 + <span class="vip-icon vip-1"></span>
  48 + </p>
  49 + <p class="grade-desc">
  50 + 还差<span class="cost-gap">{{costGap}}</span>就可以升级为金卡会员!
  51 + <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
  52 + </p>
  53 + <p class="sum-cost">
  54 + 年度累计金额<span>{{costOfThisYear}}</span>
  55 + </p>
  56 + <div class="progresser">
  57 + <div class="outer"></div>
  58 + <div class="inner" style="width: {{percent}}%;"></div>
  59 + <span class="beacon beacon-min">
  60 + 银卡会员
  61 + </span>
  62 + <span class="beacon beacon-max">金卡会员</span>
  63 + <span class="cost-limit">¥2000.00</span>
  64 + </div>
  65 +{{/if}}
  66 +
  67 +{{#if vip0}}
  68 + <p>
  69 + <span class="user-name">{{name}}</span>
  70 + <span>普通会员</span>
  71 + </p>
  72 + <p class="grade-desc">
  73 + 还差<span class="cost-gap">{{costGap}}</span>就可以升级为银卡会员!
  74 + <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
  75 + </p>
  76 + <p class="sum-cost">
  77 + 年度累计金额<span>{{costOfThisYear}}</span>
  78 + </p>
  79 + <div class="progresser">
  80 + <div class="outer"></div>
  81 + <div class="inner" style="width: {{percent}}%;"></div>
  82 + <span class="beacon beacon-min">
  83 + 普通
  84 + </span>
  85 + <span class="beacon beacon-max">银卡会员</span>
  86 + <span class="cost-limit">¥600.00</span>
  87 + </div>
  88 +{{/if}}
  1 +333
  2 +<ul class="privilege-list">
  3 + {{#each privilege}}
  4 + <li>
  5 + <img class="icon" src="{{pic}}">
  6 + <p>
  7 + {{title}}
  8 + <span>{{description}}</span>
  9 + </p>
  10 + </li>
  11 + {{/each}}
  12 +</ul>
@@ -11,10 +11,7 @@ var employ, @@ -11,10 +11,7 @@ var employ,
11 page = 1, 11 page = 1,
12 12
13 // 防止重复请求 13 // 防止重复请求
14 - AjaxFlag = 0,  
15 -  
16 - // 上滑不请求  
17 - direction = true; 14 + AjaxFlag = 0;
18 15
19 var couponAJAX = function(statu, page) { 16 var couponAJAX = function(statu, page) {
20 if (AjaxFlag) { 17 if (AjaxFlag) {
@@ -31,6 +28,12 @@ var couponAJAX = function(statu, page) { @@ -31,6 +28,12 @@ var couponAJAX = function(statu, page) {
31 page: page 28 page: page
32 }, 29 },
33 success: function(data) { 30 success: function(data) {
  31 + if(!data){
  32 + AjaxFlag = 1;
  33 + window.rePosFooter();
  34 + loading.hideLoadingMask();
  35 + return;
  36 + }
34 $('#employ').append(data); 37 $('#employ').append(data);
35 window.rePosFooter(); 38 window.rePosFooter();
36 loading.hideLoadingMask(); 39 loading.hideLoadingMask();
@@ -40,7 +43,7 @@ var couponAJAX = function(statu, page) { @@ -40,7 +43,7 @@ var couponAJAX = function(statu, page) {
40 }; 43 };
41 44
42 var scrollHandler = function() { 45 var scrollHandler = function() {
43 - if (direction && ($(window).scrollTop() + $(window).height() > $('body').height() - 100)) { 46 + if ($(window).scrollTop() + $(window).height() > $('body').height() - 100) {
44 page++; 47 page++;
45 couponAJAX(statu, page); 48 couponAJAX(statu, page);
46 return; 49 return;
@@ -52,31 +55,6 @@ require('../common'); @@ -52,31 +55,6 @@ require('../common');
52 55
53 ellipsis.init(); 56 ellipsis.init();
54 57
55 -// 判断滑动方向  
56 -$('body').on('touchstart', function(e) {  
57 - var touch = e.originalEvent,  
58 - startX = touch.changedTouches[0].pageX,  
59 - startY = touch.changedTouches[0].pageY;  
60 - $('body').on('touchmove', function(e) {  
61 - touch = e.originalEvent.touches[0] ||  
62 - e.originalEvent.changedTouches[0];  
63 - if (touch.pageX - startX > 10) {  
64 - $('body').off('touchmove');  
65 - } else if (touch.pageX - startX < -10) {  
66 - $('body').off('touchmove');  
67 - }  
68 - if (touch.pageY - startY > 10) {  
69 - direction = false;  
70 - } else if (touch.pageY - startY < -10) {  
71 - direction = true;  
72 - }  
73 - });  
74 -}).on('touchend', function() {  
75 - $('body').off('touchmove');  
76 -});  
77 -  
78 -  
79 -  
80 $('.yoho-footer').css('border-top', '1px solid #e0e0e0'); 58 $('.yoho-footer').css('border-top', '1px solid #e0e0e0');
81 $('.employ span').each(function(index) { 59 $('.employ span').each(function(index) {
82 employ = new Hammer($('.employ span')[index]); 60 employ = new Hammer($('.employ span')[index]);
@@ -85,6 +63,7 @@ $('.employ span').each(function(index) { @@ -85,6 +63,7 @@ $('.employ span').each(function(index) {
85 $('#employ').html(' '); 63 $('#employ').html(' ');
86 statu = index; 64 statu = index;
87 page = 1; 65 page = 1;
  66 + AjaxFlag = 0;
88 couponAJAX(statu, page); 67 couponAJAX(statu, page);
89 window.rePosFooter(); 68 window.rePosFooter();
90 }); 69 });
  1 +require('../common');
  1 +require('../common');
  1 +require('../common');
@@ -3,3 +3,4 @@ @@ -3,3 +3,4 @@
3 @import "address/index"; 3 @import "address/index";
4 @import "favorite"; 4 @import "favorite";
5 @import "coupons"; 5 @import "coupons";
  6 +@import "ihelp";
@@ -10,7 +10,6 @@ @@ -10,7 +10,6 @@
10 @import "address-modify"; 10 @import "address-modify";
11 @import "online-service"; 11 @import "online-service";
12 @import "my-guang"; 12 @import "my-guang";
13 -@import "ihelp";  
14 @import "browse-record"; 13 @import "browse-record";
15 @import "logistic"; 14 @import "logistic";
16 @import "pay"; 15 @import "pay";
@@ -72,7 +72,6 @@ @@ -72,7 +72,6 @@
72 .progresser { 72 .progresser {
73 position: relative; 73 position: relative;
74 width: 100%; 74 width: 100%;
75 - height: 20px;  
76 padding: 20px 0; 75 padding: 20px 0;
77 } 76 }
78 77