Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuy-node
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
1
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
htoooth
8 years ago
Commit
3d677cf55ab6b32b21328922edd7a91ff4477a9f
2 parents
0a282337
25206150
Merge branch 'master' into hotfix/async-header
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
78 additions
and
52 deletions
apps/home/router.js
apps/passport/controllers/back.js
apps/passport/controllers/login.js
apps/passport/controllers/reg.js
apps/passport/router.js
apps/product/models/detail-product-api.js
apps/product/models/detail-service.js
apps/product/views/action/product/detail.hbs
doraemon/views/partial/common/simple-header.hbs
doraemon/views/partial/footer.hbs
doraemon/views/partial/product/good.hbs
package.json
public/img/layout/show.png
public/img/layout/yoho.png
public/img/product/limit.png
public/js/passport/login/index.js
public/js/product/students.page.js
public/scss/product/_detail.css
apps/home/router.js
View file @
3d677cf
...
...
@@ -51,7 +51,7 @@ const homeNav = [
const
getHomeNav
=
(
req
,
res
,
next
)
=>
{
res
.
locals
.
homeNav
=
homeNav
;
res
.
locals
.
userThumb
=
'//img10.static.yhbimg.com/headimg/2013/11/28/09/'
+
res
.
locals
.
userThumb
=
'//img10.static.yhbimg.com/headimg/2013/11/28/09/'
+
'01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100'
;
next
();
};
...
...
apps/passport/controllers/back.js
View file @
3d677cf
...
...
@@ -82,6 +82,10 @@ const getUserInfoAPI = (req, res, next) => {
.
catch
(
next
);
};
const
fakeGetUserInfoAPI
=
(
req
,
res
)
=>
{
return
res
.
json
({
code
:
200
,
message
:
'验证成功'
});
};
const
sendCodePage
=
(
req
,
res
,
next
)
=>
{
let
inputInfo
=
req
.
inputInfo
;
...
...
@@ -365,6 +369,7 @@ const validateMobileInSession = (req, res, next) => {
module
.
exports
=
{
index
,
// 首页
fakeGetUserInfoAPI
,
// 通过邮箱或手机号获得用户信息
getUserInfoAPI
,
// 通过邮箱或手机号获得用户信息
sendCodePage
,
// 发送验证码到邮箱或者手机,然后跳转页面
saveInSession
,
// 保存状态到session中
...
...
apps/passport/controllers/login.js
View file @
3d677cf
...
...
@@ -30,7 +30,7 @@ function doPassportCallback(req, res, user) {
let
shoppingKey
=
cookie
.
getShoppingKey
(
req
);
let
refer
=
cookie
.
getRefer
(
req
,
config
.
siteUrl
);
if
(
/sign|login/
.
test
(
refer
))
{
if
(
/sign|login
|reg|passport
/
.
test
(
refer
))
{
refer
=
config
.
siteUrl
;
}
if
(
user
.
openId
)
{
...
...
@@ -122,6 +122,13 @@ const local = {
areaName
=
area
?
area
.
name
:
''
;
}
let
refer
=
req
.
query
.
refer
;
refer
&&
res
.
cookie
(
'refer'
,
encodeURI
(
refer
),
{
domain
:
'yohobuy.com'
});
PassportHelper
.
getLeftBannerAsync
(
SIGNIN_LEFT_BANNER_CODE
).
then
(
cover
=>
{
res
.
render
(
'login'
,
{
loginPage
:
true
,
...
...
@@ -133,7 +140,7 @@ const local = {
countryName
:
areaName
,
countryList
:
areaArr
,
forgetPwd
:
helpers
.
urlFormat
(
'/passport/back/index'
),
fastReg
:
helpers
.
urlFormat
(
'/
passport/reg/index'
),
fastReg
:
helpers
.
urlFormat
(
'/
reg.html'
,
{
refer
:
refer
}
),
weixinLogin
:
helpers
.
urlFormat
(
'/passport/autosign/wechat'
),
qqLogin
:
helpers
.
urlFormat
(
'/passport/autosign/qq'
),
weiboLogin
:
helpers
.
urlFormat
(
'/passport/autosign/sina'
),
...
...
@@ -168,10 +175,10 @@ const local = {
}
let
refer
=
(
function
()
{
if
(
_
.
has
(
req
,
'cookies.refer'
))
{
return
decodeURI
(
req
.
cookies
.
refer
);
}
else
if
(
/sign|login|passport/
.
test
(
_
.
get
(
req
,
'cookies.refer'
,
''
)))
{
if
(
/sign|login|reg|passport/
.
test
(
_
.
get
(
req
,
'cookies.refer'
,
''
)))
{
return
`
$
{
config
.
siteUrl
}
/home`
;
}
else
if
(
_
.
has
(
req
,
'cookies.refer'
))
{
return
decodeURI
(
req
.
cookies
.
refer
);
}
else
{
return
`
$
{
config
.
siteUrl
}
/home`
;
}
...
...
apps/passport/controllers/reg.js
View file @
3d677cf
...
...
@@ -87,7 +87,7 @@ let index = (req, res, next) => {
captchaUrl
:
helpers
.
urlFormat
(
'/passport/imagesNode'
,
{
t
:
Date
.
now
()}),
itemUrl
:
helpers
.
urlFormat
(
'/help/'
,
{
category_id
:
143
}),
referUrl
:
refer
,
loginUrl
:
helpers
.
urlFormat
(
'/
passport/login
'
,
{
refer
:
refer
}),
loginUrl
:
helpers
.
urlFormat
(
'/
signin.html
'
,
{
refer
:
refer
}),
coverHref
:
result
.
url
,
coverImg
:
result
.
img
,
regBtnText
:
'立即注册'
...
...
apps/passport/router.js
View file @
3d677cf
...
...
@@ -27,7 +27,7 @@ router.get('/logout.html', login.local.logout);
router
.
post
(
'/passport/login/sms/send'
,
login
.
local
.
sms
.
send
);
// 发短信验证码
router
.
post
(
'/passport/login/sms/auth'
,
login
.
local
.
sms
.
auth
);
// 验证短信验证码
router
.
post
(
'/passport/login/sms/checkuser'
,
login
.
local
.
sms
.
checkUser
);
// 短信检查用户是否注册
router
.
post
(
'/passport/login/password/checkuser'
,
back
.
validateInputAPI
,
back
.
getUserInfoAPI
);
//
密码登录检查用户是否注册
router
.
post
(
'/passport/login/password/checkuser'
,
back
.
fakeGetUserInfoAPI
);
// 假的,
密码登录检查用户是否注册
router
.
get
(
'/passport/login'
,
login
.
common
.
beforeLogin
,
login
.
local
.
loginPage
);
router
.
post
(
'/passport/login/auth'
,
login
.
local
.
login
);
...
...
apps/product/models/detail-product-api.js
View file @
3d677cf
...
...
@@ -24,6 +24,14 @@ const sizeInfoAsync = skn => {
};
// 退换支持
const
isSupportReturnedSale
=
skn
=>
{
return
api
.
get
(
''
,
{
method
:
'app.product.refundExchange'
,
product_skn
:
skn
});
};
const
getProductComfortAsync
=
pid
=>
{
return
api
.
get
(
''
,
{
method
:
'web.productComfort.data'
,
...
...
@@ -77,7 +85,8 @@ module.exports = {
getProductComfortAsync
,
getProductModelCardAsync
,
getProductModelTryAsync
,
getProductAsync
getProductAsync
,
isSupportReturnedSale
};
...
...
apps/product/models/detail-service.js
View file @
3d677cf
...
...
@@ -777,8 +777,8 @@ const _detailDataPkg = (origin, uid, vipLevel) => {
}
}
statGoodsInfo
.
imageUrl
=
result
.
img
;
statGoodsInfo
.
productUrl
=
helpers
.
urlFormat
(
url
.
parse
(
origin
.
productUrl
).
pathname
,
{},
'item'
);
statGoodsInfo
.
imageUrl
=
'http:'
+
result
.
img
;
statGoodsInfo
.
productUrl
=
'http:'
+
helpers
.
urlFormat
(
url
.
parse
(
origin
.
productUrl
).
pathname
,
{},
'item'
);
statGoodsInfo
.
smallSortId
=
result
.
smallSortId
;
statGoodsInfo
.
soldOut
=
soldOut
?
1
:
0
;
...
...
@@ -1339,7 +1339,8 @@ const showMainAsync = (data) => {
let
currentUserProductInfo
=
_
.
partial
(
_detailDataPkg
,
_
,
data
.
uid
,
data
.
vipLevel
);
// 获取商品信息
let
productInfo
=
yield
productAPI
.
getProductAsync
(
data
.
pid
,
data
.
uid
,
data
.
isStudent
,
data
.
vipLevel
).
then
(
currentUserProductInfo
);
let
productInfo
=
yield
productAPI
.
getProductAsync
(
data
.
pid
,
data
.
uid
,
data
.
isStudent
,
data
.
vipLevel
)
.
then
(
currentUserProductInfo
);
if
(
_
.
isEmpty
(
productInfo
)
||
_
.
isEmpty
(
productInfo
.
goodsInfo
))
{
return
Promise
.
reject
({
...
...
@@ -1349,7 +1350,8 @@ const showMainAsync = (data) => {
let
requestData
=
yield
Promise
.
all
([
_getSortNavAsync
(
productInfo
.
goodsInfo
.
smallSortId
,
data
.
gender
),
HeaderModel
.
requestHeaderData
(
data
.
channel
)
HeaderModel
.
requestHeaderData
(
data
.
channel
),
productAPI
.
isSupportReturnedSale
(
productInfo
.
goodsInfo
.
skn
)
]);
// 分类导航 ,seo
...
...
@@ -1373,6 +1375,10 @@ const showMainAsync = (data) => {
productInfo
.
statGoodsInfo
);
// 是否支持退换货,true 支持,false 不支持
result
.
detail
.
supportSaleReturnedService
=
_
.
get
(
requestData
,
`
[
2
].
data
.
$
{
productInfo
.
goodsInfo
.
skn
}
`
,
'N'
)
===
'N'
;
// 导航
result
.
detail
.
pathNav
=
_
.
concat
(
homeService
.
getHomeChannelNav
(
data
.
channel
),
...
...
apps/product/views/action/product/detail.hbs
View file @
3d677cf
...
...
@@ -632,6 +632,12 @@
</div>
</div>
{{#if
supportSaleReturnedService
}}
<div
class=
"support-saleReturned-service"
></div>
{{^}}
<div
class=
"not-support-saleReturned-service"
></div>
{{/if}}
<div
class=
"service"
></div>
{{#if
latestWalk
}}
<div
class=
"info-block latest-walk"
>
...
...
@@ -698,7 +704,7 @@
_mvq.push(['$addGoods', /*分类id*/ '', /*品牌id*/ '', /*商品名称*/ '', /*商品ID*/ '
{{
skn
}}
', /*商品售价*/ '', /*商品图片url*/ '', /*分类名*/ '', /*品牌名*/ '', /*商品库存状态1或是0*/ '', /*网络价*/ '', /*收藏人数*/ '']);
_mvq.push(['$logData']);
var _goodsData = {
id: '
{{
skn
}}
',// 商品ID
id: '
{{
productId
}}
',// 商品ID
name: '
{{
productName
}}
', // 商品名称
brand: '
{{
brandName
}}
', // 商品品牌(非必填)
origPrice: '
{{
marketPrice
}}
', // 商品原价(非必填)
...
...
@@ -709,6 +715,14 @@
category: '
{{
fullSortName
}}
', // 所属分类完整路径, // 所属分类完整路径
soldOut: '
{{
soldOut
}}
' // 状态 1下架,0在售(必填)
};
(function() {
var mvl = document.createElement('
script
');
mvl.type = '
text
/
javascript
'; mvl.async = true;
mvl.src = ('
https
:
' == document.location.protocol ? '
https
:
//static-ssl.mediav.com/mvl.js' : 'http://static.mediav.com/mvl.js');
var
s
=
document
.
getElementsByTagName
(
'script'
)[
0
];
s
.
parentNode
.
insertBefore
(
mvl
,
s
);
})();
</script>
{{/
statGoodsInfo
}}
...
...
doraemon/views/partial/common/simple-header.hbs
View file @
3d677cf
...
...
@@ -43,10 +43,6 @@
<li>
<a
href=
"
{{
helpHref
}}
"
>
帮助中心
</a>
</li>
<li>
<i
class=
"tell-icon iconfont"
>

</i>
<span>
400-8899-646
</span>
</li>
{{/
tool
}}
</ul>
</div>
...
...
doraemon/views/partial/footer.hbs
View file @
3d677cf
...
...
@@ -137,29 +137,29 @@
<div
id=
"foot-mobile"
>
<ul
class=
"mobile clearfix"
>
<li>
<a
href=
"http://www.yoho
mars.com/
"
target=
"_blank"
>
<a
href=
"http://www.yoho
.cn/product#yoho
"
target=
"_blank"
>
{{#if
devEnv
}}
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
mars
.png"
>
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
yoho
.png"
>
{{^}}
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
mars
.png"
>
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
yoho
.png"
>
{{/if}}
</a>
</li>
<li>
<a
href=
"http://
app.yohoshow
.com/"
target=
"_blank"
>
<a
href=
"http://
www.yohomars
.com/"
target=
"_blank"
>
{{#if
devEnv
}}
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
show
.png"
>
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
mars
.png"
>
{{^}}
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
show
.png"
>
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
mars
.png"
>
{{/if}}
</a>
</li>
<li>
<a
href=
"http://
www.yoho.cn/product#yoho
"
target=
"_blank"
>
<a
href=
"http://
app.yohoshow.com/
"
target=
"_blank"
>
{{#if
devEnv
}}
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
yoho
.png"
>
<img
class=
"lazy"
data-original=
"http://localhost:5002/img/layout/
show
.png"
>
{{^}}
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
yoho
.png"
>
<img
class=
"lazy"
data-original=
"//cdn.yoho.cn/yohobuy-node/assets/img/layout/
show
.png"
>
{{/if}}
</a>
</li>
...
...
doraemon/views/partial/product/good.hbs
View file @
3d677cf
...
...
@@ -26,7 +26,7 @@
</div>
<div
class=
"good-detail-img"
>
<a
class=
"good-thumb"
href=
"
{{
url
}}
"
target=
"_blank"
>
<img
class=
"lazy"
data-original=
"
{{
image
thumb
2
20
300
}}
"
>
<img
class=
"lazy"
data-original=
"
{{
image
thumb
2
80
382
}}
"
>
</a>
{{#
isFew
}}
<p
class=
"few-tag"
>
即将售罄
</p>
...
...
@@ -75,7 +75,7 @@
</p>
<div
class=
"hideList hide"
>
{{#
goodsList
}}
<li
data-src=
"
{{
image
imagesUrl
2
35
31
4
}}
"
data-url=
"
{{
..
/
url
}}
"
></li>
<li
data-src=
"
{{
image
imagesUrl
2
80
37
4
}}
"
data-url=
"
{{
..
/
url
}}
"
></li>
{{/
goodsList
}}
</div>
</div>
...
...
package.json
View file @
3d677cf
{
"name"
:
"yohobuy-node"
,
"version"
:
"4.9.
4
"
,
"version"
:
"4.9.
7
"
,
"private"
:
true
,
"description"
:
"A New Yohobuy Project With Express"
,
"repository"
:
{
...
...
public/img/layout/show.png
View file @
3d677cf
26.6 KB
|
W:
|
H:
20.7 KB
|
W:
|
H:
2-up
Swipe
Onion skin
public/img/layout/yoho.png
View file @
3d677cf
11.4 KB
|
W:
|
H:
13.9 KB
|
W:
|
H:
2-up
Swipe
Onion skin
public/img/product/limit.png
0 → 100644
View file @
3d677cf
25.2 KB
public/js/passport/login/index.js
View file @
3d677cf
...
...
@@ -120,26 +120,7 @@ var LoginType = {
PasswordLogin
:
{
ele
:
'.password-login'
,
validateAccountAsync
:
function
()
{
return
$
.
ajax
({
url
:
'/passport/login/password/checkuser'
,
type
:
'POST'
,
data
:
{
phoneNum
:
getAccountVal1
(),
area
:
getAreaCodeVal
()
}
}).
then
(
function
(
result
)
{
var
defer
=
$
.
Deferred
();
// eslint-disable-line
if
(
result
.
code
===
200
)
{
hideAccountTip1
();
// eslint-disable-line
defer
.
resolve
();
}
else
{
showAccountTip1
(
result
.
message
);
// eslint-disable-line
defer
.
reject
();
}
return
defer
.
promise
();
});
return
$
.
Deferred
().
resolve
().
promise
();
// eslint-disable-line
},
validateAccountLocal
:
validateAccountPasswordLocal
,
// eslint-disable-line
creditableToken
:
getPasswordVal
,
...
...
public/js/product/students.page.js
View file @
3d677cf
...
...
@@ -446,7 +446,7 @@ $rightDia.on('click', function() {
'<p>权益1:新品立享9折</p>'
+
'<p>学生购买原价新品时,可立即享受9折优惠,与VIP折扣不可同时享受。</p><br>'
+
'<p>权益2:每1元返1个有货币</p>'
+
'<p>学生购买商品时,以商品的实际成交金额计算,每1元返1个有货币;</p>'
+
'<p>学生购买
指定
商品时,以商品的实际成交金额计算,每1元返1个有货币;</p>'
+
'<p>返有货币时间:确认收货7日后,系统将自动将对应数量的有货币返至购买账户;</p>'
+
'<p>有货币有效期:获得当日至次年12月31日,逾期自动作废;</p>'
+
'<p>查看有货币:登录后,点击“个人中心”在“我的有货币”中可以查看有货币余额及明细。</p><br>'
+
...
...
public/scss/product/_detail.css
View file @
3d677cf
...
...
@@ -984,7 +984,7 @@
}
}
.service
{
.s
upport-saleReturned-s
ervice
{
$
service
:
product
/
service
.
png
;
width
:
width
(
$
service
);
...
...
@@ -993,6 +993,14 @@
background
:
resolve
(
$
service
);
}
.not-support-saleReturned-service
{
$
service
:
product
/
limit
.
png
;
width
:
width
(
$
service
);
height
:
height
(
$
service
);
margin
:
45px
auto
;
background
:
resolve
(
$
service
);
}
.latest-walk
{
overflow
:
inherit
;
...
...
Please
register
or
login
to post a comment