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
yyq
7 years ago
Commit
dd1855f73b703a3af657e29e5dc5ffe3ca617e51
2 parents
3f257638
ee371cf5
Merge remote-tracking branch 'origin/master' into release/0725
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
110 additions
and
60 deletions
apps/about/views/action/contact.hbs
apps/common/models/recent-view.js
apps/home/controllers/address.js
apps/home/models/currency-model.js
apps/home/views/action/home/orders/order-detail.hbs
apps/product/models/detail-service.js
apps/product/models/newArrive-service.js
apps/product/models/search-handler.js
apps/product/models/shop-service.js
apps/product/views/partial/product/detail-header.hbs
doraemon/middleware/csrf.js
doraemon/middleware/error-handler.js
package.json
utils/product-process-simple.js
utils/product-process.js
apps/about/views/action/contact.hbs
View file @
dd1855f
...
...
@@ -43,34 +43,9 @@
EMAIL:tommy.tang#yoho.cn (发送邮件时请将#换成@)
</p><br/>
<p>
<strong>
南京新与力文化传播有限公司:
</strong><br/>
地址:南京市建邺区嘉陵江东街18号国家广告产业园5栋17,18楼
<br/>
<strong>
联系地址:
</strong><br/>
地址:江苏省南京市建邺区嘉陵江东街18号国家广告产业园5栋17,18楼
<br/>
邮编:210017
<br/>
电话:(+86)25-87781000
<br/>
传真:(+86)25-87781155
<br/>
</p><br/>
<p>
<strong>
南京新与力文化传播有限公司北京分公司:
</strong><br/>
地址:北京市朝阳区建国路81号华贸中心1号楼3层
<br/>
邮编:100025
<br/>
电话:(+86)10-56312400
<br/>
</p><br/>
<p>
<strong>
南京新与力文化传播有限公司上海分公司:
</strong><br/>
地址:上海市黄浦区黄陂南路838弄中海国际中心A座301
<br/>
邮编:200025
<br/>
电话:(+86)21-63317121
</p><br/>
<p>
<strong>
南京新与力文化传播有限公司广州分公司:
</strong><br/>
地址:广州市天河区林和西路157号保利中汇大厦A座602室
<br/>
邮编:510610
<br/>
电话:(+86)20-83777600
</p><br/>
<p>
<strong>
南京新与力文化传播有限公司香港分公司:
</strong><br/>
地址:香港香港中環嘉咸街41-43號天安城商業大廈11樓全層 (2號升降機)
<br/>
电话:(+852)8523460-2671
</p><br/>
</div>
</div>
...
...
apps/common/models/recent-view.js
View file @
dd1855f
...
...
@@ -9,6 +9,8 @@
const
_
=
require
(
'lodash'
);
const
helper
=
global
.
yoho
.
helpers
;
const
utils
=
require
(
'./utils'
);
/**
* 处理商品
*/
...
...
@@ -33,7 +35,6 @@ function index(skn, limit) {
limit
:
limit
}
}).
then
(
result
=>
{
if
(
result
.
code
===
200
)
{
let
data
=
[];
let
historyProduct
=
result
.
data
.
product_list
;
...
...
@@ -45,12 +46,10 @@ function index(skn, limit) {
let
mp
=
hp
.
market_price
;
let
sp
=
hp
.
sales_price
;
let
goodsImg
=
hp
.
default_images
||
''
;
let
defaultGoods
=
_
.
find
(
hp
.
goods_list
,
{
is_default
:
'Y'
});
// 无默认商品取商品列表第一个
if
(
!
defaultGoods
)
{
defaultGoods
=
hp
.
goods_list
[
0
];
if
(
goodsImg
&&
goodsImg
.
indexOf
(
'static.'
)
<
0
)
{
goodsImg
=
utils
.
getUploadImgAbsoluteUrl
(
goodsImg
,
'goodsimg'
);
}
data
.
push
({
...
...
@@ -58,7 +57,7 @@ function index(skn, limit) {
price
:
`¥
$
{
helper
.
round
(
sp
,
2
)}
`
,
product_name
:
hp
.
product_name
,
url
:
helper
.
getUrlBySkc
(
hp
.
product_skn
),
pic_url
:
defaultGoods
&&
helper
.
image
(
defaultGoods
.
images_url
,
280
,
382
,
2
,
70
)
pic_url
:
goodsImg
&&
helper
.
image
(
goodsImg
,
280
,
382
,
2
,
70
)
});
});
...
...
apps/home/controllers/address.js
View file @
dd1855f
...
...
@@ -41,8 +41,10 @@ exports.editAddress = (req, res, next) => {
// 真实数据输出
req
.
ctx
(
addressModel
).
editAddress
(
req
.
body
,
uid
).
then
(
result
=>
{
result
.
data
.
address
=
cleanHtml
.
htmlDecode
(
result
.
data
.
address
);
result
.
data
.
consignee
=
cleanHtml
.
htmlDecode
(
result
.
data
.
consignee
);
if
(
result
&&
result
.
data
)
{
result
.
data
.
address
=
cleanHtml
.
htmlDecode
(
result
.
data
.
address
);
result
.
data
.
consignee
=
cleanHtml
.
htmlDecode
(
result
.
data
.
consignee
);
}
res
.
json
(
result
);
}).
catch
(
next
);
...
...
apps/home/models/currency-model.js
View file @
dd1855f
...
...
@@ -91,8 +91,7 @@ module.exports = class extends global.yoho.BaseModel {
let
product
=
yield
currencyDataModel
.
getProduct
(
Number
(
val
.
key
),
1
);
if
(
_
.
get
(
product
,
'code'
)
===
200
&&
!
_
.
isEmpty
(
product
.
data
.
product_list
)
&&
!
_
.
isEmpty
(
product
.
data
.
product_list
[
0
].
goods_list
))
{
!
_
.
isEmpty
(
product
.
data
.
product_list
))
{
let
productSkn
=
_
.
get
(
product
,
'data.product_list[0].product_skn'
);
result
.
list
[
key
].
detailUrl
=
helpers
.
getUrlBySkc
(
productSkn
);
...
...
apps/home/views/action/home/orders/order-detail.hbs
View file @
dd1855f
...
...
@@ -167,8 +167,10 @@
<div
class=
"content"
>
<span>
付款方式:
{{
payMode
}}
</span>
<br
/>
{{#if
phone
}}
<br
/>
<span>
电话号码:
{{
phone
}}
</span>
{{/if}}
</div>
</div>
{{/
virtualPayMode
}}
...
...
apps/product/models/detail-service.js
View file @
dd1855f
...
...
@@ -1619,7 +1619,7 @@ function recommendAsync(skn, page, limit) {
// 无默认商品取商品列表第一个
if
(
!
defaultGoods
)
{
defaultGoods
=
rp
.
goods_list
[
0
];
defaultGoods
=
rp
.
goods_list
[
0
]
||
{}
;
}
return
{
...
...
apps/product/models/newArrive-service.js
View file @
dd1855f
...
...
@@ -117,12 +117,6 @@ const _proListHandler = (data, params) => {
// 普通商品
if
(
!
pro
.
recommend_type
)
{
let
defaultGoods
=
_
.
find
(
pro
.
goods_list
,
{
is_default
:
'Y'
});
// 无默认商品取商品列表第一个
if
(
!
defaultGoods
)
{
defaultGoods
=
pro
.
goods_list
[
0
];
}
proObj
=
{
url
:
helpers
.
getUrlBySkc
(
pro
.
product_skn
),
src
:
pro
.
default_images
,
...
...
apps/product/models/search-handler.js
View file @
dd1855f
...
...
@@ -613,7 +613,7 @@ exports.setShopSort = (data, params) => {
if
(
list
.
length
)
{
resData
.
goodsMenu
=
{
menuList
:
list
,
url
:
`
/
product
/
shoplist
?
navBar
=
1
&
shopId
=
$
{
params
.
shopId
}
`
url
:
`
$
{
params
.
baseUrl
}?
navBar
=
1
`
};
}
}
...
...
apps/product/models/shop-service.js
View file @
dd1855f
...
...
@@ -130,7 +130,7 @@ function _getShopData(channel, params, shopInfo) {
if
(
resData
.
allGoods
)
{
Object
.
assign
(
resData
.
allGoods
,
searchHandler
.
setShopSort
(
groupSort
,
Object
.
assign
({},
params
,
{
page
:
1
})),
searchHandler
.
setGenderFilter
(
params
));
params
,
{
baseUrl
,
page
:
1
})),
searchHandler
.
setGenderFilter
(
params
));
}
}
...
...
apps/product/views/partial/product/detail-header.hbs
View file @
dd1855f
...
...
@@ -128,10 +128,10 @@
<div
class=
"line"
></div>
{{#if
virtualGoods
}}
{{!-- 电子门票按钮 --}}
{{#if
isVirtualBtn
}}
{{!-- 电子门票按钮 --}}
{{!-- {{#if isVirtualBtn}}
<span id="buy-ticket" class="buy-ticket buy-now item-buy{{#if dis}} dis{{/if}}" data-base="{{buyNowBase}}">立即购买</span>
{{/if}}
{{/if}}
--}}
{{else}}
{{!-- 各颜色下所有尺码均售罄则只显示售罄按钮 --}}
{{#
unless
soldOut
}}
...
...
@@ -151,9 +151,7 @@
<span
id=
"buy-now"
class=
"item-buy buy-now
{{#if
dis
}}
dis
{{/if}}
"
data-base=
"
{{
buyNowBase
}}
"
>
立即购买
</span>
{{/
buyNow
}}
{{/
unless
}}
{{/if}}
<span
id=
"sold-out"
class=
"buy-btn dis
{{#
unless
soldOut
}}
hide
{{/
unless
}}
"
>
...
...
@@ -163,10 +161,11 @@
<span
id=
"enable-notify"
class=
"buy-btn hide"
>
<i
class=
"iconfont"
>

</i>
<span>
到货通知
</span></span>
<span
id=
"collect-product"
class=
"
{{#if
isCollect
}}
coled
{{/if}}
collect-product"
>
<i
class=
"iconfont"
>

</i>
{{#if
isCollect
}}
<em>
已收藏
</em>
{{^}}
<em>
收藏商品
</em>
{{/if}}
</span>
{{#
unless
isVirtualBtn
}}
<span
id=
"collect-product"
class=
"
{{#if
isCollect
}}
coled
{{/if}}
collect-product"
>
<i
class=
"iconfont"
>

</i>
{{#if
isCollect
}}
<em>
已收藏
</em>
{{^}}
<em>
收藏商品
</em>
{{/if}}
</span>
{{/
unless
}}
<span
id=
"code-buy"
class=
"code-buy"
skn=
"
{{
skn
}}
"
>
<div
class=
"code-box"
>
...
...
doraemon/middleware/csrf.js
View file @
dd1855f
...
...
@@ -7,6 +7,8 @@ module.exports = (req, res, next) => {
return
csrfInit
(
req
,
res
,
(
e
)
=>
{
res
.
locals
.
csrfToken
=
req
.
csrfToken
();
e
&&
(
e
.
code
=
403
);
return
next
(
e
);
});
};
...
...
doraemon/middleware/error-handler.js
View file @
dd1855f
...
...
@@ -57,6 +57,8 @@ exports.notFound = () => {
* @return {[type]}
*/
exports
.
serverError
=
()
=>
{
const
statusCodeList
=
[
403
];
return
async
(
err
,
req
,
res
,
next
)
=>
{
forceNoCache
(
res
);
...
...
@@ -70,6 +72,10 @@ exports.serverError = () => {
err
.
code
=
parseInt
(
err
.
code
||
err
.
statusCode
,
10
)
||
500
;
if
(
statusCodeList
.
indexOf
(
err
.
code
)
>=
0
)
{
errorCode
=
err
.
code
;
}
if
(
req
.
isApmReport
&&
!
err
.
apiError
)
{
// apierror在node lib中已经上报过了 不需要再次上报
// 上报服务端错误
sender
.
addMessage
({
...
...
package.json
View file @
dd1855f
...
...
@@ -88,7 +88,7 @@
"postcss-clearfix"
:
"^2.0.1"
,
"postcss-crip"
:
"^2.0.1"
,
"postcss-import"
:
"^11.1.0"
,
"postcss-loader"
:
"^2.1.
4
"
,
"postcss-loader"
:
"^2.1.
6
"
,
"postcss-opacity"
:
"^5.0.0"
,
"postcss-position"
:
"^1.0.0"
,
"postcss-scss"
:
"^1.0.5"
,
...
...
utils/product-process-simple.js
View file @
dd1855f
...
...
@@ -11,6 +11,33 @@ const genderName = {
};
/**
* 处理接口返回图片链接,兼容非正常链接(如:/2015/10/22/08/023a5aa1cbdac7bdcd1685bfdab118b0c5.jpg)
*
*/
const
handleGoodsThumb
=
(
url
,
bucket
)
=>
{
url
=
url
||
''
;
if
(
!
url
||
url
.
indexOf
(
'http'
)
>=
0
)
{
return
url
;
}
let
urlArr
=
url
.
split
(
'/'
),
stag
=
urlArr
[
urlArr
.
length
-
1
].
substr
(
0
,
2
),
domain
=
`
static
.
yhbimg
.
com
/
$
{
bucket
}
`
;
url
=
domain
+
url
.
split
(
'?'
)[
0
]
+
'?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80'
;
// eslint-disable-line
if
(
stag
===
'01'
)
{
return
`
//img11.${url}`;
}
else
if
(
stag
===
'03'
)
{
return
`
//flv01.${url}`;
}
else
{
return
`
//img12.${url}`;
}
};
/**
* 商品搜索商品数据处理
*/
exports
.
processProductList
=
(
list
,
options
)
=>
{
...
...
@@ -48,10 +75,17 @@ exports.processProductList = (list, options) => {
}
// 商品信息有问题,则不显示
if
(
!
product
||
!
product
.
product_skn
||
!
_
.
get
(
product
,
'goods_list.length'
,
0
)
)
{
if
(
!
product
||
!
product
.
product_skn
)
{
return
;
}
// 6.7 搜索去掉goods_list, 兼容处理
if
(
_
.
isEmpty
(
product
.
goods_list
))
{
product
.
goods_list
=
[{
images_url
:
product
.
default_images
}];
}
let
proInfo
=
{
skn
:
product
.
product_skn
,
product_name
:
product
.
product_name
,
...
...
@@ -105,7 +139,7 @@ exports.processProductList = (list, options) => {
Object
.
assign
(
proInfo
,
{
goods_list
:
goodsList
,
thumb
:
product
.
default_images
||
defaultColorImg
thumb
:
handleGoodsThumb
(
product
.
default_images
||
defaultColorImg
,
'goodsimg'
)
});
// 处理标签
...
...
utils/product-process.js
View file @
dd1855f
...
...
@@ -14,6 +14,34 @@ const logger = global.yoho.logger;
// brand: {domain: 'brand', module: 'b'}, // xxx.yohobuy.com[品牌域名]
// saleSpecial: {domain: 'sale', module: 's'}// sale.yohobuy.com
// };
//
//
/**
* 处理接口返回图片链接,兼容非正常链接(如:/2015/10/22/08/023a5aa1cbdac7bdcd1685bfdab118b0c5.jpg)
*
*/
const
handleGoodsThumb
=
(
url
,
bucket
)
=>
{
url
=
url
||
''
;
if
(
!
url
||
url
.
indexOf
(
'http'
)
>=
0
)
{
return
url
;
}
let
urlArr
=
url
.
split
(
'/'
),
stag
=
urlArr
[
urlArr
.
length
-
1
].
substr
(
0
,
2
),
domain
=
`
static
.
yhbimg
.
com
/
$
{
bucket
}
`
;
url
=
domain
+
url
.
split
(
'?'
)[
0
]
+
'?imageMogr2/thumbnail/{width}x{height}/background/d2hpdGU=/position/center/quality/80'
;
// eslint-disable-line
if
(
stag
===
'01'
)
{
return
`
//img11.${url}`;
}
else
if
(
stag
===
'03'
)
{
return
`
//flv01.${url}`;
}
else
{
return
`
//img12.${url}`;
}
};
/**
* 根据性别来决定 默认图片获取字段 如果是 2、3
...
...
@@ -172,7 +200,7 @@ exports.processProductList = (list, options) => {
}
// 商品信息有问题,则不显示
if
(
!
product
||
!
product
.
product_skn
||
!
_
.
get
(
product
,
'goods_list.length'
,
0
)
)
{
if
(
!
product
||
!
product
.
product_skn
)
{
return
;
}
...
...
@@ -186,6 +214,13 @@ exports.processProductList = (list, options) => {
// 判别默认的商品是否将默认的图片URL赋值到skn
let
flag
=
false
;
// 6.7 搜索去掉goods_list, 兼容处理
if
(
_
.
isEmpty
(
product
.
goods_list
))
{
product
.
goods_list
=
[{
images_url
:
product
.
default_images
}];
}
_
.
remove
(
product
.
goods_list
,
function
(
n
)
{
return
!+
n
.
status
;
});
...
...
@@ -210,6 +245,9 @@ exports.processProductList = (list, options) => {
product
.
default_images
=
procProductImg
(
product
.
goods_list
[
0
]);
}
}
product
.
default_images
=
handleGoodsThumb
(
product
.
default_images
,
'goodsimg'
);
product
=
Object
.
assign
(
product
,
{
id
:
product
.
product_skn
,
thumb
:
product
.
default_images
...
...
Please
register
or
login
to post a comment