Merge branch 'feature/loginIp' into 'release/5.6'
开发完成 See merge request !472
Showing
11 changed files
with
83 additions
and
33 deletions
@@ -504,7 +504,13 @@ exports.detail = (req, res) => { | @@ -504,7 +504,13 @@ exports.detail = (req, res) => { | ||
504 | isQuanYi: true | 504 | isQuanYi: true |
505 | }; | 505 | }; |
506 | } | 506 | } |
507 | - options.isApp = req.__USER__.isApp; | 507 | + |
508 | + if (req.yoho.isApp || req.yoho.isWechat) { | ||
509 | + options.isShowHeader = false; | ||
510 | + } else { | ||
511 | + options.isShowHeader = true; | ||
512 | + } | ||
513 | + | ||
508 | res.render('detail', options); | 514 | res.render('detail', options); |
509 | }; | 515 | }; |
510 | 516 |
1 | -{{#unless isApp}} | 1 | +{{#if isShowHeader}} |
2 | <header class="yoho-header"> | 2 | <header class="yoho-header"> |
3 | <a href="javascript:history.go(-1);" class="iconfont nav-back close"></a> | 3 | <a href="javascript:history.go(-1);" class="iconfont nav-back close"></a> |
4 | <p class="nav-title">{{title}}</p> | 4 | <p class="nav-title">{{title}}</p> |
5 | </header> | 5 | </header> |
6 | -{{/unless}} | 6 | +{{/if}} |
7 | {{#isQuanYi}} | 7 | {{#isQuanYi}} |
8 | <div class="mobile-container"> | 8 | <div class="mobile-container"> |
9 | <div class="mobile-wrap yoho-page student"> | 9 | <div class="mobile-wrap yoho-page student"> |
10 | <section class='s-text'> | 10 | <section class='s-text'> |
11 | - <h6>权益1:新品立享9折</h6> | ||
12 | - <p>1、学生购买指定原价新品时,可立即享受9折优惠,与VIP折扣不可同时享受。</p> | ||
13 | - <h6>权益2:每1元返1个有货币</h6> | ||
14 | - <p>1、学生购买指定商品时,以商品的实际成交金额计算,每1元返1个有货币;</p> | ||
15 | - <p>2、返有货币时间:确认收货7日后,系统将自动将对应数量的有货币返至购买账户;</p> | 11 | + <h6><b>权益一:</b>认证立赠100有货币</h6> |
12 | + <p>认证成功,立即赠送100有货币。</p> | ||
13 | + <h6><b>权益二:</b>新品立享9折</h6> | ||
14 | + <p>学生购买指定原价新品时,可立即享受9折优惠,此折扣与VIP折扣不可同时享受。</p> | ||
15 | + <h6><b>权益三:</b>每1元返1个有货币</h6> | ||
16 | + <p>1、学生购买指定商品时,每1元返1个有货币(以商品的实际成交金额计算);</p> | ||
17 | + <p>2、有货币返还时间:确认收货7日后,系统自动将对应数量的有货币返还至购买账户;</p> | ||
16 | <p>3、有货币有效期:获得当日至次年12月31日,逾期自动作废;</p> | 18 | <p>3、有货币有效期:获得当日至次年12月31日,逾期自动作废;</p> |
17 | <p>4、查看有货币:登录后,点击“个人中心”在“我的有货币”中可以查看有货币余额及明细。</p> | 19 | <p>4、查看有货币:登录后,点击“个人中心”在“我的有货币”中可以查看有货币余额及明细。</p> |
18 | - <h6>权益3:免单抽奖</h6> | ||
19 | - <p>1、每月将在累计购物金额最高的学校中,抽取3名幸运学生用户,获得免单资格;</p> | ||
20 | - <p>2、免单用户名单将在每月第1个工作日公布在有货微信公众号上,可关注【有货YOHOBUY】;</p> | ||
21 | - <p>3、免单用户将在中奖次日获得与实付金额等额的现金券,使用时间:中奖当月。</p> | ||
22 | - <h6>权益4:学生专享活动</h6> | ||
23 | - <p>1、每月不定期的开展学生专享活动,可打开有货APP推送,及时查收学生专享活动通知。</p> | 20 | + <h6><b>权益四:</b>分期付款</h6> |
21 | + <p>开通有货分期后,可享受部分商品30天延后付款,最长6个月的分期付款,开启任性购物模式。</p> | ||
24 | <h6></h6> | 22 | <h6></h6> |
25 | </section> | 23 | </section> |
26 | </div> | 24 | </div> |
@@ -30,10 +28,26 @@ | @@ -30,10 +28,26 @@ | ||
30 | <div class="mobile-container"> | 28 | <div class="mobile-container"> |
31 | <div class="mobile-wrap yoho-page student"> | 29 | <div class="mobile-wrap yoho-page student"> |
32 | <section class='s-text'> | 30 | <section class='s-text'> |
33 | - <h6>认证协议</h6> | ||
34 | - <p>1、全日制大学及硕士博士研究生</p> | ||
35 | - <p>2、学校在可选范围内,有部分学校可能暂未收录,后期会尽快添加</p> | ||
36 | - <p>3、每个学号只能认证一个有货账户</p> | 31 | + <h6>认证资格说明</h6> |
32 | + <p>1、全日制大学本科、研究生、博士;</p> | ||
33 | + <p>2、学校在可选范围之内,可能有部分学校暂未被收录,后期会尽快添加;</p> | ||
34 | + <p>3、每个学号只能认证一个有货账户;</p> | ||
35 | + </section> | ||
36 | + | ||
37 | + <section class='s-text'> | ||
38 | + <h6>特权详细说明</h6> | ||
39 | + <p><b>权益一:</b>认证立赠100有货币</p> | ||
40 | + <p>认证成功,立即赠送100有货币。</p><br> | ||
41 | + <p><b>权益二:</b>新品立享9折</p> | ||
42 | + <p>学生购买指定原价新品时,可立即享受9折优惠,此折扣与VIP折扣不可同时享受。</p><br> | ||
43 | + <p><b>权益三:</b>每1元返1个有货币</p> | ||
44 | + <p>1、学生购买指定商品时,每1元返1个有货币(以商品的实际成交金额计算);</p> | ||
45 | + <p>2、有货币返还时间:确认收货7日后,系统自动将对应数量的有货币返还至购买账户;</p> | ||
46 | + <p>3、有货币有效期:获得当日至次年12月31日,逾期自动作废;</p> | ||
47 | + <p>4、查看有货币:登录后,点击“个人中心”在“我的有货币”中可以查看有货币余额及明细。</p><br> | ||
48 | + <p><b>权益四:</b>分期付款</p> | ||
49 | + <p>开通有货分期后,可享受部分商品30天延后付款,最长6个月的分期付款,开启任性购物模式。</p> | ||
50 | + <h6></h6> | ||
37 | </section> | 51 | </section> |
38 | </div> | 52 | </div> |
39 | </div> | 53 | </div> |
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | <input type="checkbox" id="checkbox" class="regular-checkbox" style="visibility: hidden;"> | 37 | <input type="checkbox" id="checkbox" class="regular-checkbox" style="visibility: hidden;"> |
38 | <label class="checkbox icon-s-checked iconfont" for="checkbox"> | 38 | <label class="checkbox icon-s-checked iconfont" for="checkbox"> |
39 | </label> | 39 | </label> |
40 | - 同意<a class="s-blue" href='//m.yohobuy.com/activity/student/detail/renzhen?openby:yohobuy={"action":"go.h5","params":{"islogin":"N","url":"{{http}}//m.yohobuy.com/activity/student/detail/renzhen"}}'>Yoho!Buy有货学生认证协议</a> | 40 | + 同意<a class="s-blue" href='//m.yohobuy.com/activity/student/detail/renzhen'>Yoho!Buy有货学生认证协议</a> |
41 | </section> | 41 | </section> |
42 | <a class="s-submit" href="javascript:void(0);">立即认证</a> | 42 | <a class="s-submit" href="javascript:void(0);">立即认证</a> |
43 | </div> | 43 | </div> |
@@ -68,6 +68,8 @@ passport.use(new LocalStrategy({ | @@ -68,6 +68,8 @@ passport.use(new LocalStrategy({ | ||
68 | AuthHelper.signinAes(area, username, password, shoppingKey, clientIp).then((result) => { | 68 | AuthHelper.signinAes(area, username, password, shoppingKey, clientIp).then((result) => { |
69 | if (result.code && result.code === 200 && result.data.uid) { | 69 | if (result.code && result.code === 200 && result.data.uid) { |
70 | done(null, result.data); | 70 | done(null, result.data); |
71 | + } if (result.code && result.code === 4189) { | ||
72 | + done({code: 4189}, null); | ||
71 | } else { | 73 | } else { |
72 | done('账号或密码不正确', null); | 74 | done('账号或密码不正确', null); |
73 | } | 75 | } |
@@ -184,16 +184,25 @@ const local = { | @@ -184,16 +184,25 @@ const local = { | ||
184 | 184 | ||
185 | passport.authenticate('local', (err, user) => { | 185 | passport.authenticate('local', (err, user) => { |
186 | if (err || !user) { | 186 | if (err || !user) { |
187 | - let obj = { | ||
188 | - code: 400, | ||
189 | - message: err || '登录出错请重试', | ||
190 | - data: '', | ||
191 | - captchaShow: true | ||
192 | - }; | ||
193 | - | ||
194 | - cache.set(`loginErrorIp:${req.yoho.clientIp}`, true, 3600).catch(log.error); | ||
195 | - | ||
196 | - res.json(obj); | 187 | + if (err.code === 4189) { |
188 | + let obj = { | ||
189 | + code: 4189, | ||
190 | + message: err || '登录出错请重试', | ||
191 | + url: '//m.yohobuy.com/passport/sms_login' | ||
192 | + }; | ||
193 | + | ||
194 | + return res.json(obj); | ||
195 | + } else { | ||
196 | + let obj = { | ||
197 | + code: 400, | ||
198 | + message: err || '登录出错请重试', | ||
199 | + data: '', | ||
200 | + captchaShow: true | ||
201 | + }; | ||
202 | + | ||
203 | + cache.set(`loginErrorIp:${req.yoho.clientIp}`, true, 3600).catch(log.error); | ||
204 | + return res.json(obj); | ||
205 | + } | ||
197 | } else { | 206 | } else { |
198 | let refer = req.cookies.refer; | 207 | let refer = req.cookies.refer; |
199 | 208 |
@@ -23,7 +23,7 @@ const domains = { | @@ -23,7 +23,7 @@ const domains = { | ||
23 | 23 | ||
24 | module.exports = { | 24 | module.exports = { |
25 | app: 'h5', | 25 | app: 'h5', |
26 | - appVersion: '5.5.2', // 调用api的版本 | 26 | + appVersion: '5.6.0', // 调用api的版本 |
27 | port: 6001, | 27 | port: 6001, |
28 | siteUrl: '//m.yohobuy.com', | 28 | siteUrl: '//m.yohobuy.com', |
29 | assetUrl: '//127.0.0.1:5001', | 29 | assetUrl: '//127.0.0.1:5001', |
@@ -96,6 +96,10 @@ function loginAuth(params, acc) { | @@ -96,6 +96,10 @@ function loginAuth(params, acc) { | ||
96 | showErrTip('登录成功'); | 96 | showErrTip('登录成功'); |
97 | location.href = res.href; | 97 | location.href = res.href; |
98 | $loginBtn.text('登录成功'); | 98 | $loginBtn.text('登录成功'); |
99 | + } else if (data.code === 4189) { | ||
100 | + localStorage.loginJumpUrl = $('#account').val(); | ||
101 | + localStorage.loginJump = 'true'; | ||
102 | + location.href = data.url; | ||
99 | } else { | 103 | } else { |
100 | $captcha.data('userverify', data.captchaShow); | 104 | $captcha.data('userverify', data.captchaShow); |
101 | if (data.captchaShow) { | 105 | if (data.captchaShow) { |
@@ -174,3 +174,10 @@ page = { | @@ -174,3 +174,10 @@ page = { | ||
174 | $(function() { | 174 | $(function() { |
175 | page.init(); | 175 | page.init(); |
176 | }); | 176 | }); |
177 | + | ||
178 | +// 多次登录失败跳短信认证填充手机号 | ||
179 | +if (localStorage.loginJump) { | ||
180 | + $('.sms-login .title').text('身份验证'); | ||
181 | + $('.sms-login-msg').before('<p class="sms-login-msg">您的账号存在安全隐患需要进行身份验证</p>'); | ||
182 | + localStorage.removeItem('loginJump'); | ||
183 | +} |
@@ -594,9 +594,13 @@ | @@ -594,9 +594,13 @@ | ||
594 | 594 | ||
595 | h6 { | 595 | h6 { |
596 | font-size: 34px; | 596 | font-size: 34px; |
597 | - margin-top: 60px; | 597 | + margin-top: 40px; |
598 | margin-bottom: 30px; | 598 | margin-bottom: 30px; |
599 | } | 599 | } |
600 | + | ||
601 | + b { | ||
602 | + font-weight: 700; | ||
603 | + } | ||
600 | } | 604 | } |
601 | } | 605 | } |
602 | 606 | ||
@@ -622,7 +626,7 @@ | @@ -622,7 +626,7 @@ | ||
622 | .s-dialog-content { | 626 | .s-dialog-content { |
623 | max-height: 460px; | 627 | max-height: 460px; |
624 | max-width: 540px; | 628 | max-width: 540px; |
625 | - overflow-y: scroll; | 629 | + overflow-y: scroll; |
626 | text-align: left; | 630 | text-align: left; |
627 | color: #444; | 631 | color: #444; |
628 | font-family: 'PingFangSC-Regular', 'helvetica', 'Arial', '黑体'; | 632 | font-family: 'PingFangSC-Regular', 'helvetica', 'Arial', '黑体'; |
-
Please register or login to post a comment