Merge remote-tracking branch 'origin/release/1.0' into release/1.0
Conflicts: apps/passport/controllers/reg.js
Showing
8 changed files
with
134 additions
and
110 deletions
@@ -27,80 +27,80 @@ const ticketCacheKey = 'wechatShare:ticket'; | @@ -27,80 +27,80 @@ const ticketCacheKey = 'wechatShare:ticket'; | ||
27 | 27 | ||
28 | // 微信 JS 接口签名校验工具 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign | 28 | // 微信 JS 接口签名校验工具 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign |
29 | 29 | ||
30 | -const wechat = { | ||
31 | - getAccessToken: Promise.coroutine(function* () { | ||
32 | - let accessToken = yield cache.get(accessTokenCacheKey); | ||
33 | - | ||
34 | - if (accessToken) { | ||
35 | - return accessToken; | ||
36 | - } | ||
37 | - | ||
38 | - logger.info('调用微信 API 获取 accessToken'); | ||
39 | - return request({ | ||
40 | - url: 'https://api.weixin.qq.com/cgi-bin/token', | ||
41 | - qs: { | ||
42 | - grant_type: 'client_credential', | ||
43 | - appid: appId, | ||
44 | - secret: secret | ||
45 | - }, | ||
46 | - json: true | ||
47 | - }).then((res) => { | ||
48 | - | ||
49 | - // accessToken 有效期 7200s,缓存 7100s | ||
50 | - cache.set(accessTokenCacheKey, res.access_token, 7100).catch((err) => { | ||
51 | - logger.error('微信分享 Token, 缓存 accessToken 时出错', JSON.stringify(err)); | ||
52 | - }); | ||
53 | - return res.access_token; | ||
54 | - }).catch((err) => { | ||
55 | - logger.error('微信分享 Token, 获取 accessToken 时出错', JSON.stringify(err)); | 30 | +let _getAccessToken = Promise.coroutine(function* () { |
31 | + let accessToken = yield cache.get(accessTokenCacheKey); | ||
32 | + | ||
33 | + if (accessToken) { | ||
34 | + return accessToken; | ||
35 | + } | ||
36 | + | ||
37 | + logger.info('get accessToken from wechat API'); | ||
38 | + return request({ | ||
39 | + url: 'https://api.weixin.qq.com/cgi-bin/token', | ||
40 | + qs: { | ||
41 | + grant_type: 'client_credential', | ||
42 | + appid: appId, | ||
43 | + secret: secret | ||
44 | + }, | ||
45 | + json: true | ||
46 | + }).then((res) => { | ||
47 | + | ||
48 | + // accessToken 有效期 7200s,缓存 7100s | ||
49 | + cache.set(accessTokenCacheKey, res.access_token, 7100).catch((err) => { | ||
50 | + logger.error('set wechat accessToken cache error', JSON.stringify(err)); | ||
56 | }); | 51 | }); |
57 | - }), | ||
58 | - | ||
59 | - getTicket: Promise.coroutine(function* () { | ||
60 | - let ticket = yield cache.get(ticketCacheKey); | ||
61 | - | ||
62 | - if (ticket) { | ||
63 | - return ticket; | ||
64 | - } | ||
65 | - | ||
66 | - logger.info('调用微信 API 获取 ticket'); | ||
67 | - return request({ | ||
68 | - url: 'https://api.weixin.qq.com/cgi-bin/ticket/getticket', | ||
69 | - qs: { | ||
70 | - access_token: yield this.getAccessToken(), | ||
71 | - type: 'jsapi' | ||
72 | - }, | ||
73 | - json: true | ||
74 | - }).then(res => { | 52 | + return res.access_token; |
53 | + }).catch((err) => { | ||
54 | + logger.error('get accessToken from wechat API error', JSON.stringify(err)); | ||
55 | + }); | ||
56 | +}); | ||
57 | + | ||
58 | +let _getTicket = Promise.coroutine(function* () { | ||
59 | + let ticket = yield cache.get(ticketCacheKey); | ||
60 | + | ||
61 | + if (ticket) { | ||
62 | + return ticket; | ||
63 | + } | ||
64 | + | ||
65 | + logger.info('get ticket from wechat API'); | ||
66 | + return request({ | ||
67 | + url: 'https://api.weixin.qq.com/cgi-bin/ticket/getticket', | ||
68 | + qs: { | ||
69 | + access_token: yield _getAccessToken(), | ||
70 | + type: 'jsapi' | ||
71 | + }, | ||
72 | + json: true | ||
73 | + }).then(res => { | ||
75 | 74 | ||
76 | // ticket 有效期 7200s,缓存 7100s | 75 | // ticket 有效期 7200s,缓存 7100s |
77 | - cache.set(ticketCacheKey, res.ticket, 7100).catch((err) => { | ||
78 | - logger.error('微信分享 Token, 缓存 ticket 时出错', JSON.stringify(err)); | ||
79 | - }); | ||
80 | - return res.ticket; | ||
81 | - }).catch((err) => { | ||
82 | - logger.error('微信分享 Token, 获取 ticket 时出错', JSON.stringify(err)); | 76 | + cache.set(ticketCacheKey, res.ticket, 7100).catch((err) => { |
77 | + logger.error('set wechat Token cache error', JSON.stringify(err)); | ||
83 | }); | 78 | }); |
84 | - }), | ||
85 | - | ||
86 | - calcSignature: Promise.coroutine(function* (data) { | ||
87 | - data = Object.assign({ | ||
88 | - nonceStr: Math.random().toString(36).substr(2, 15), | ||
89 | - timestamp: Math.floor(Date.now() / 1000) + '', | ||
90 | - ticket: yield this.getTicket(), | ||
91 | - appId: appId | ||
92 | - }, data); | ||
93 | - | ||
94 | - const str = `jsapi_ticket=${data.ticket}&noncestr=${data.nonceStr}×tamp=${data.timestamp}&url=${data.url}`; | ||
95 | - | ||
96 | - data.signature = sha1(str); | ||
97 | - return data; | ||
98 | - }) | ||
99 | -}; | 79 | + return res.ticket; |
80 | + }).catch((err) => { | ||
81 | + logger.error('get ticket from wechat API error', JSON.stringify(err)); | ||
82 | + }); | ||
83 | +}); | ||
84 | + | ||
85 | +let calcSignature = Promise.coroutine(function* (data) { | ||
86 | + data = Object.assign({ | ||
87 | + nonceStr: Math.random().toString(36).substr(2, 15), | ||
88 | + timestamp: Math.floor(Date.now() / 1000) + '', | ||
89 | + ticket: yield _getTicket(), | ||
90 | + appId: appId | ||
91 | + }, data); | ||
92 | + | ||
93 | + const str = `jsapi_ticket=${data.ticket}&noncestr=${data.nonceStr}×tamp=${data.timestamp}&url=${data.url}`; | ||
94 | + | ||
95 | + data.signature = sha1(str); | ||
96 | + return data; | ||
97 | +}); | ||
100 | 98 | ||
101 | // 测试 | 99 | // 测试 |
102 | -// wechat.calcSignature({ | 100 | +// calcSignature({ |
103 | // url: 'http://www.yohobuy.com/' | 101 | // url: 'http://www.yohobuy.com/' |
104 | // }).then(console.log); | 102 | // }).then(console.log); |
105 | 103 | ||
106 | -module.exports = wechat; | 104 | +module.exports = { |
105 | + calcSignature | ||
106 | +}; |
@@ -15,7 +15,7 @@ const RegService = require('../models/reg-service'); | @@ -15,7 +15,7 @@ const RegService = require('../models/reg-service'); | ||
15 | const AuthHelper = require('../models/auth-helper'); | 15 | const AuthHelper = require('../models/auth-helper'); |
16 | 16 | ||
17 | let index = (req, res) => { | 17 | let index = (req, res) => { |
18 | - // 设置注册有效时间30分钟, 防机器刷 | 18 | + // 设置注册有效时间30分钟, 防机器刷 |
19 | req.session._REG_EXPIRE = Date.now() + 1800000; | 19 | req.session._REG_EXPIRE = Date.now() + 1800000; |
20 | 20 | ||
21 | let refer = req.query.refer; | 21 | let refer = req.query.refer; |
@@ -43,13 +43,13 @@ let verifyMobile = (req, res, next) => { | @@ -43,13 +43,13 @@ let verifyMobile = (req, res, next) => { | ||
43 | let mobile = +req.body.phoneNum; | 43 | let mobile = +req.body.phoneNum; |
44 | let area = +(req.body.areaCode || 86); | 44 | let area = +(req.body.areaCode || 86); |
45 | 45 | ||
46 | - /* 判断参数是否合法 */ | 46 | + // 判断参数是否合法 |
47 | if (!_.isNumber(mobile) || !_.isNumber(area)) { | 47 | if (!_.isNumber(mobile) || !_.isNumber(area)) { |
48 | data.message = '手机号错误'; | 48 | data.message = '手机号错误'; |
49 | return res.json(data); | 49 | return res.json(data); |
50 | } | 50 | } |
51 | 51 | ||
52 | - /* 设置注册有效时间30分钟, 防机器刷 */ | 52 | + // 设置注册有效时间30分钟, 防机器刷 |
53 | let expire = req.session._REG_EXPIRE; | 53 | let expire = req.session._REG_EXPIRE; |
54 | 54 | ||
55 | if (!expire || expire < Date.now()) { | 55 | if (!expire || expire < Date.now()) { |
@@ -57,13 +57,13 @@ let verifyMobile = (req, res, next) => { | @@ -57,13 +57,13 @@ let verifyMobile = (req, res, next) => { | ||
57 | return res.json(data); | 57 | return res.json(data); |
58 | } | 58 | } |
59 | 59 | ||
60 | - /* 向手机发送注册验证码 */ | 60 | + // 向手机发送注册验证码 |
61 | RegService.sendCodeToMobile(area, mobile).then((result) => { | 61 | RegService.sendCodeToMobile(area, mobile).then((result) => { |
62 | if (!result.code) { | 62 | if (!result.code) { |
63 | return res.json(data); | 63 | return res.json(data); |
64 | } | 64 | } |
65 | 65 | ||
66 | - /* 返回跳转到验证页面的链接 */ | 66 | + // 返回跳转到验证页面的链接 |
67 | if (result.code === 200) { | 67 | if (result.code === 200) { |
68 | let token = sign.makeToken(mobile); | 68 | let token = sign.makeToken(mobile); |
69 | 69 | ||
@@ -82,7 +82,7 @@ let codeAction = (req, res, next) => { | @@ -82,7 +82,7 @@ let codeAction = (req, res, next) => { | ||
82 | let mobile = +req.query.phoneNum; | 82 | let mobile = +req.query.phoneNum; |
83 | let area = +(req.query.areaCode || 86); | 83 | let area = +(req.query.areaCode || 86); |
84 | 84 | ||
85 | - // 判断是否允许访问, 不允许则跳转到错误页面 | 85 | + // 判断是否允许访问, 不允许则跳转到错误页面 |
86 | if (!_.isString(token) || !_.isNumber(mobile) || !sign.verifyToken(mobile, token)) { | 86 | if (!_.isString(token) || !_.isNumber(mobile) || !sign.verifyToken(mobile, token)) { |
87 | return next({ | 87 | return next({ |
88 | code: 403, | 88 | code: 403, |
@@ -112,13 +112,13 @@ let sendCode = (req, res, next) => { | @@ -112,13 +112,13 @@ let sendCode = (req, res, next) => { | ||
112 | let mobile = +req.body.phoneNum; | 112 | let mobile = +req.body.phoneNum; |
113 | let area = +(req.body.areaCode || 86); | 113 | let area = +(req.body.areaCode || 86); |
114 | 114 | ||
115 | - /* 判断参数是否合法 */ | 115 | + // 判断参数是否合法 |
116 | if (!_.isNumber(mobile) || !_.isNumber(area)) { | 116 | if (!_.isNumber(mobile) || !_.isNumber(area)) { |
117 | data.message = '手机号错误'; | 117 | data.message = '手机号错误'; |
118 | return res.json(data); | 118 | return res.json(data); |
119 | } | 119 | } |
120 | 120 | ||
121 | - /* 设置注册有效时间30分钟, 防机器刷 */ | 121 | + // 设置注册有效时间30分钟, 防机器刷 |
122 | let expire = req.session._REG_EXPIRE; | 122 | let expire = req.session._REG_EXPIRE; |
123 | 123 | ||
124 | if (!expire || expire < Date.now()) { | 124 | if (!expire || expire < Date.now()) { |
@@ -126,7 +126,7 @@ let sendCode = (req, res, next) => { | @@ -126,7 +126,7 @@ let sendCode = (req, res, next) => { | ||
126 | return res.json(data); | 126 | return res.json(data); |
127 | } | 127 | } |
128 | 128 | ||
129 | - /* 向手机发送注册验证码 */ | 129 | + // 向手机发送注册验证码 |
130 | RegService.sendCodeToMobile(area, mobile).then((result) => { | 130 | RegService.sendCodeToMobile(area, mobile).then((result) => { |
131 | return result.code ? res.json(result) : res.json(data); | 131 | return result.code ? res.json(result) : res.json(data); |
132 | }).catch(next); | 132 | }).catch(next); |
@@ -148,7 +148,7 @@ let verifyCode = (req, res, next) => { | @@ -148,7 +148,7 @@ let verifyCode = (req, res, next) => { | ||
148 | return res.json(data); | 148 | return res.json(data); |
149 | } | 149 | } |
150 | 150 | ||
151 | - /* 设置注册有效时间30分钟, 防机器刷 */ | 151 | + // 设置注册有效时间30分钟, 防机器刷 |
152 | let expire = req.session._REG_EXPIRE; | 152 | let expire = req.session._REG_EXPIRE; |
153 | 153 | ||
154 | if (!expire || expire < Date.now()) { | 154 | if (!expire || expire < Date.now()) { |
@@ -156,13 +156,13 @@ let verifyCode = (req, res, next) => { | @@ -156,13 +156,13 @@ let verifyCode = (req, res, next) => { | ||
156 | return res.json(data); | 156 | return res.json(data); |
157 | } | 157 | } |
158 | 158 | ||
159 | - /* 验证注册的标识码是否有效 */ | 159 | + // 验证注册的标识码是否有效 |
160 | RegService.validMobileCode(area, mobile, code).then((result) => { | 160 | RegService.validMobileCode(area, mobile, code).then((result) => { |
161 | if (!result.code) { | 161 | if (!result.code) { |
162 | return res.json(data); | 162 | return res.json(data); |
163 | } | 163 | } |
164 | 164 | ||
165 | - /* 返回跳转到设置密码的链接 */ | 165 | + // 返回跳转到设置密码的链接 |
166 | if (result.code === 200) { | 166 | if (result.code === 200) { |
167 | let token = sign.makeToken(mobile); | 167 | let token = sign.makeToken(mobile); |
168 | 168 | ||
@@ -183,7 +183,7 @@ let passwordAction = (req, res, next) => { | @@ -183,7 +183,7 @@ let passwordAction = (req, res, next) => { | ||
183 | let mobile = +req.query.phoneNum; | 183 | let mobile = +req.query.phoneNum; |
184 | let area = +(req.query.areaCode || 86); | 184 | let area = +(req.query.areaCode || 86); |
185 | 185 | ||
186 | - // 判断是否允许访问, 不允许则跳转到错误页面 | 186 | + // 判断是否允许访问, 不允许则跳转到错误页面 |
187 | if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !sign.verifyToken(mobile, token)) { | 187 | if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !sign.verifyToken(mobile, token)) { |
188 | return next({ | 188 | return next({ |
189 | code: 403, | 189 | code: 403, |
@@ -214,27 +214,27 @@ let setPassword = (req, res, next) => { | @@ -214,27 +214,27 @@ let setPassword = (req, res, next) => { | ||
214 | let password = req.body.password; | 214 | let password = req.body.password; |
215 | let token = req.body.token; | 215 | let token = req.body.token; |
216 | 216 | ||
217 | - /* 判断参数是否合法 */ | 217 | + // 判断参数是否合法 |
218 | if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !password) { | 218 | if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !password) { |
219 | data.message = '请求参数不合法'; | 219 | data.message = '请求参数不合法'; |
220 | return res.json(data); | 220 | return res.json(data); |
221 | } | 221 | } |
222 | 222 | ||
223 | - /* 判断是否允许访问 */ | 223 | + // 判断是否允许访问 |
224 | if (!sign.verifyToken(mobile, token)) { | 224 | if (!sign.verifyToken(mobile, token)) { |
225 | data.message = '非法 token'; | 225 | data.message = '非法 token'; |
226 | return res.json(data); | 226 | return res.json(data); |
227 | } | 227 | } |
228 | 228 | ||
229 | - /* 判断密码是否符合规则 */ | 229 | + // 判断密码是否符合规则 |
230 | if (!helpers.verifyPassword(password)) { | 230 | if (!helpers.verifyPassword(password)) { |
231 | return res.json(data); | 231 | return res.json(data); |
232 | } | 232 | } |
233 | 233 | ||
234 | - // 购物车key | 234 | + // 购物车key |
235 | let shoppingKey = cookie.getShoppingKey(req); | 235 | let shoppingKey = cookie.getShoppingKey(req); |
236 | 236 | ||
237 | - // 验证注册的标识码是否有效 | 237 | + // 验证注册的标识码是否有效 |
238 | RegService.regMobile(area, mobile, password, shoppingKey).then((result) => { | 238 | RegService.regMobile(area, mobile, password, shoppingKey).then((result) => { |
239 | if (!result.code || result.code !== 200) { | 239 | if (!result.code || result.code !== 200) { |
240 | return Promise.reject(result); | 240 | return Promise.reject(result); |
@@ -245,7 +245,7 @@ let setPassword = (req, res, next) => { | @@ -245,7 +245,7 @@ let setPassword = (req, res, next) => { | ||
245 | 245 | ||
246 | return AuthHelper.syncUserSession(result.data.uid, req, res); | 246 | return AuthHelper.syncUserSession(result.data.uid, req, res); |
247 | }).then(() => { | 247 | }).then(() => { |
248 | - // 返回跳转到来源页面 | 248 | + // 返回跳转到来源页面 |
249 | let refer = req.cookies.refer; | 249 | let refer = req.cookies.refer; |
250 | 250 | ||
251 | if (refer) { | 251 | if (refer) { |
@@ -27,7 +27,7 @@ const saleModel = require(`${mRoot}/sale`); | @@ -27,7 +27,7 @@ const saleModel = require(`${mRoot}/sale`); | ||
27 | * @param {[string]} page js文件page名称 | 27 | * @param {[string]} page js文件page名称 |
28 | * @return {[type]} | 28 | * @return {[type]} |
29 | */ | 29 | */ |
30 | -const processPublicData = (req, title, page) => { | 30 | +const _processPublicData = (req, title, page) => { |
31 | let data = {}; | 31 | let data = {}; |
32 | let headerData = headerModel.setNav({ | 32 | let headerData = headerModel.setNav({ |
33 | navTitle: title | 33 | navTitle: title |
@@ -53,8 +53,8 @@ const processPublicData = (req, title, page) => { | @@ -53,8 +53,8 @@ const processPublicData = (req, title, page) => { | ||
53 | * @param {[object]} res | 53 | * @param {[object]} res |
54 | * @return {[type]} | 54 | * @return {[type]} |
55 | */ | 55 | */ |
56 | -exports.index = (req, res, next) => { | ||
57 | - let params = processPublicData(req, 'SALE', 'sale'); | 56 | +let index = (req, res, next) => { |
57 | + let params = _processPublicData(req, 'SALE', 'sale'); | ||
58 | 58 | ||
59 | saleModel.getSaleData(params.channel).then((result) => { | 59 | saleModel.getSaleData(params.channel).then((result) => { |
60 | res.render('sale/index', Object.assign(params.renderData, { | 60 | res.render('sale/index', Object.assign(params.renderData, { |
@@ -74,8 +74,8 @@ exports.index = (req, res, next) => { | @@ -74,8 +74,8 @@ exports.index = (req, res, next) => { | ||
74 | * @param {[object]} res | 74 | * @param {[object]} res |
75 | * @return {[type]} | 75 | * @return {[type]} |
76 | */ | 76 | */ |
77 | -exports.breakingYards = (req, res, next) => { | ||
78 | - let params = processPublicData(req, '断码区', 'break-code'); | 77 | +let breakingYards = (req, res, next) => { |
78 | + let params = _processPublicData(req, '断码区', 'break-code'); | ||
79 | 79 | ||
80 | saleModel.getBreakCodeData({ | 80 | saleModel.getBreakCodeData({ |
81 | yhChannel: params.channel | 81 | yhChannel: params.channel |
@@ -90,8 +90,8 @@ exports.breakingYards = (req, res, next) => { | @@ -90,8 +90,8 @@ exports.breakingYards = (req, res, next) => { | ||
90 | * @param {[object]} res | 90 | * @param {[object]} res |
91 | * @return {[type]} | 91 | * @return {[type]} |
92 | */ | 92 | */ |
93 | -exports.discount = (req, res, next) => { | ||
94 | - let params = processPublicData(req, '折扣专场', 'discount'); | 93 | +let discount = (req, res, next) => { |
94 | + let params = _processPublicData(req, '折扣专场', 'discount'); | ||
95 | 95 | ||
96 | saleModel.getDiscountData(params.channel).then((result) => { | 96 | saleModel.getDiscountData(params.channel).then((result) => { |
97 | res.render('sale/discount', Object.assign(params.renderData, result)); | 97 | res.render('sale/discount', Object.assign(params.renderData, result)); |
@@ -105,9 +105,9 @@ exports.discount = (req, res, next) => { | @@ -105,9 +105,9 @@ exports.discount = (req, res, next) => { | ||
105 | * @param {[object]} res | 105 | * @param {[object]} res |
106 | * @return {[type]} | 106 | * @return {[type]} |
107 | */ | 107 | */ |
108 | -exports.discountDetail = (req, res, next) => { | 108 | +let discountDetail = (req, res, next) => { |
109 | let id = req.query.id; | 109 | let id = req.query.id; |
110 | - let params = processPublicData(req, '', 'discount-detail'); | 110 | + let params = _processPublicData(req, '', 'discount-detail'); |
111 | 111 | ||
112 | saleModel.getDiscountDetailData(id, params.channel).then((result) => { | 112 | saleModel.getDiscountDetailData(id, params.channel).then((result) => { |
113 | params.renderData.pageHeader.navTitle = result.title; | 113 | params.renderData.pageHeader.navTitle = result.title; |
@@ -121,8 +121,8 @@ exports.discountDetail = (req, res, next) => { | @@ -121,8 +121,8 @@ exports.discountDetail = (req, res, next) => { | ||
121 | * @param {[object]} res | 121 | * @param {[object]} res |
122 | * @return {[type]} | 122 | * @return {[type]} |
123 | */ | 123 | */ |
124 | -exports.vip = (req, res, next) => { | ||
125 | - let params = processPublicData(req, '会员专享', 'vip'); | 124 | +let vip = (req, res, next) => { |
125 | + let params = _processPublicData(req, '会员专享', 'vip'); | ||
126 | 126 | ||
127 | saleModel.getVipData(params.channel).then((result) => { | 127 | saleModel.getVipData(params.channel).then((result) => { |
128 | res.render('sale/vip', Object.assign(params.renderData, { | 128 | res.render('sale/vip', Object.assign(params.renderData, { |
@@ -137,7 +137,7 @@ exports.vip = (req, res, next) => { | @@ -137,7 +137,7 @@ exports.vip = (req, res, next) => { | ||
137 | * @param {[object]} res | 137 | * @param {[object]} res |
138 | * @return {[type]} | 138 | * @return {[type]} |
139 | */ | 139 | */ |
140 | -exports.filter = (req, res, next) => { | 140 | +let filter = (req, res, next) => { |
141 | let params = Object.assign({}, req.query); | 141 | let params = Object.assign({}, req.query); |
142 | 142 | ||
143 | saleModel.getFilterData(params).then((result) => { | 143 | saleModel.getFilterData(params).then((result) => { |
@@ -156,7 +156,7 @@ exports.filter = (req, res, next) => { | @@ -156,7 +156,7 @@ exports.filter = (req, res, next) => { | ||
156 | * @param {[object]} res | 156 | * @param {[object]} res |
157 | * @return {[type]} | 157 | * @return {[type]} |
158 | */ | 158 | */ |
159 | -exports.search = (req, res, next) => { | 159 | +let search = (req, res, next) => { |
160 | let params = Object.assign({}, req.query); | 160 | let params = Object.assign({}, req.query); |
161 | 161 | ||
162 | // uid = 9239279 | 162 | // uid = 9239279 |
@@ -184,3 +184,13 @@ exports.search = (req, res, next) => { | @@ -184,3 +184,13 @@ exports.search = (req, res, next) => { | ||
184 | }, vipObj)); | 184 | }, vipObj)); |
185 | }).catch(next); | 185 | }).catch(next); |
186 | }; | 186 | }; |
187 | + | ||
188 | +module.exports = { | ||
189 | + index, | ||
190 | + breakingYards, | ||
191 | + discount, | ||
192 | + discountDetail, | ||
193 | + vip, | ||
194 | + filter, | ||
195 | + search | ||
196 | +}; |
@@ -353,11 +353,11 @@ const getDiscountDetailData = (id, yhChannel) => { | @@ -353,11 +353,11 @@ const getDiscountDetailData = (id, yhChannel) => { | ||
353 | }; | 353 | }; |
354 | 354 | ||
355 | module.exports = { | 355 | module.exports = { |
356 | - getSaleData: getSaleData, | ||
357 | - getBreakCodeData: getBreakCodeData, | ||
358 | - getDiscountData: getDiscountData, | ||
359 | - getDiscountDetailData: getDiscountDetailData, | ||
360 | - getVipData: getVipData, | ||
361 | - getFilterData: getFilterData, | ||
362 | - getSearchData: getSearchData | 356 | + getSaleData, |
357 | + getBreakCodeData, | ||
358 | + getDiscountData, | ||
359 | + getDiscountDetailData, | ||
360 | + getVipData, | ||
361 | + getFilterData, | ||
362 | + getSearchData | ||
363 | }; | 363 | }; |
@@ -31,6 +31,8 @@ module.exports = function(specificGender) { | @@ -31,6 +31,8 @@ module.exports = function(specificGender) { | ||
31 | 31 | ||
32 | var $footer; | 32 | var $footer; |
33 | 33 | ||
34 | + var bottomBannerLoaded; | ||
35 | + | ||
34 | // ajax url | 36 | // ajax url |
35 | if (kidsType) { | 37 | if (kidsType) { |
36 | url = '/product/recom/maylikekids'; | 38 | url = '/product/recom/maylikekids'; |
@@ -95,12 +97,14 @@ module.exports = function(specificGender) { | @@ -95,12 +97,14 @@ module.exports = function(specificGender) { | ||
95 | }, | 97 | }, |
96 | success: function(data) { | 98 | success: function(data) { |
97 | 99 | ||
98 | - if (data === ' ') { | ||
99 | - searching = false; | 100 | + if (!data.length) { |
100 | loading.hideLoadingMask(); | 101 | loading.hideLoadingMask(); |
101 | 102 | ||
102 | // 有货币页面不加载底部 | 103 | // 有货币页面不加载底部 |
103 | if (gender && !specificGender) { | 104 | if (gender && !specificGender) { |
105 | + if (bottomBannerLoaded) { | ||
106 | + return; | ||
107 | + } | ||
104 | url = '/channel/bottomBanner'; | 108 | url = '/channel/bottomBanner'; |
105 | $.ajax({ | 109 | $.ajax({ |
106 | type: 'GET', | 110 | type: 'GET', |
@@ -109,6 +113,8 @@ module.exports = function(specificGender) { | @@ -109,6 +113,8 @@ module.exports = function(specificGender) { | ||
109 | gender: gender | 113 | gender: gender |
110 | }, | 114 | }, |
111 | success: function(res) { | 115 | success: function(res) { |
116 | + res = res.data; | ||
117 | + bottomBannerLoaded = true; | ||
112 | if (res && res.img) { | 118 | if (res && res.img) { |
113 | $('#load-more-img').show(); | 119 | $('#load-more-img').show(); |
114 | $('#load-more-img a').attr('href', res.url); | 120 | $('#load-more-img a').attr('href', res.url); |
@@ -35,6 +35,10 @@ | @@ -35,6 +35,10 @@ | ||
35 | z-index: 2; | 35 | z-index: 2; |
36 | background: #f0f0f0; | 36 | background: #f0f0f0; |
37 | transition: transform 0.3s; | 37 | transition: transform 0.3s; |
38 | + | ||
39 | + .creative-life .classify-name { | ||
40 | + display: none; | ||
41 | + } | ||
38 | } | 42 | } |
39 | 43 | ||
40 | .mobile-wrap.menu-open { | 44 | .mobile-wrap.menu-open { |
-
Please register or login to post a comment