Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
5
51business
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
方斌
51business
Commits
ec228901
Commit
ec228901
authored
Oct 23, 2019
by
李尚科
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://t-git.51gjj.com/fangbin/51business
parents
15396eb1
0e9f4cf1
Pipeline
#15275
passed with stage
in 36 seconds
Changes
7
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
143 additions
and
28 deletions
+143
-28
wechat.js
app/controller/course/wechat.js
+47
-0
context.js
app/extend/context.js
+9
-0
mini_auth.js
app/middleware/mini_auth.js
+2
-1
course.js
app/router/course.js
+23
-21
institution.js
app/service/course/institution.js
+4
-4
wechat.js
app/service/course/wechat.js
+56
-0
new_house.js
app/service/house/v2/new_house.js
+2
-2
No files found.
app/controller/course/wechat.js
0 → 100644
View file @
ec228901
'use strict'
;
const
Controller
=
require
(
'egg'
).
Controller
;
const
crypto
=
require
(
'crypto'
);
class
WechatController
extends
Controller
{
async
test
()
{
const
{
ctx
,
service
}
=
this
;
await
service
.
course
.
wechat
.
getAccessToken
();
ctx
.
success
();
}
async
callbackAction
()
{
const
{
ctx
,
service
}
=
this
;
await
service
.
course
.
wechat
.
callbackAction
();
ctx
.
success
(
'success'
);
}
async
check
()
{
const
{
ctx
}
=
this
;
const
params
=
ctx
.
request
.
query
;
const
{
signature
,
timestamp
,
nonce
,
echostr
,
}
=
params
;
const
array
=
[
'51gjj'
,
timestamp
,
nonce
];
array
.
sort
();
// 3.将三个参数字符串拼接成一个字符串进行sha1加密
const
tempStr
=
array
.
join
(
''
);
const
hashCode
=
crypto
.
createHash
(
'sha1'
);
// 创建加密类型
const
resultCode
=
hashCode
.
update
(
tempStr
,
'utf8'
).
digest
(
'hex'
);
console
.
log
(
resultCode
);
// 4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if
(
resultCode
===
signature
)
{
ctx
.
success
(
echostr
);
}
else
{
ctx
.
success
();
}
}
}
module
.
exports
=
WechatController
;
app/extend/context.js
View file @
ec228901
...
@@ -13,6 +13,7 @@ const OLDUSERID = Symbol('Context#oldUserId');
...
@@ -13,6 +13,7 @@ const OLDUSERID = Symbol('Context#oldUserId');
const
USERID
=
Symbol
(
'Context#userId'
);
const
USERID
=
Symbol
(
'Context#userId'
);
const
OLDCOOKIE
=
Symbol
(
'Context#oldCookie'
);
const
OLDCOOKIE
=
Symbol
(
'Context#oldCookie'
);
const
USERUUID
=
Symbol
(
'Context#userUuid'
);
const
USERUUID
=
Symbol
(
'Context#userUuid'
);
const
OPENID
=
Symbol
(
'Context#openId'
);
module
.
exports
=
{
module
.
exports
=
{
failed
(
message
)
{
failed
(
message
)
{
...
@@ -177,6 +178,10 @@ module.exports = {
...
@@ -177,6 +178,10 @@ module.exports = {
return
this
[
USERUUID
];
return
this
[
USERUUID
];
},
},
get
openId
()
{
return
this
[
OPENID
];
},
setAppUserId
(
app_user_id
)
{
setAppUserId
(
app_user_id
)
{
this
[
APPUSERID
]
=
app_user_id
;
this
[
APPUSERID
]
=
app_user_id
;
},
},
...
@@ -212,4 +217,8 @@ module.exports = {
...
@@ -212,4 +217,8 @@ module.exports = {
setUserUuid
(
user_uuid
)
{
setUserUuid
(
user_uuid
)
{
this
[
USERUUID
]
=
user_uuid
;
this
[
USERUUID
]
=
user_uuid
;
},
},
setOpenId
(
openId
)
{
this
[
OPENID
]
=
openId
;
},
};
};
app/middleware/mini_auth.js
View file @
ec228901
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
module
.
exports
=
(
options
,
app
)
=>
{
module
.
exports
=
(
options
,
app
)
=>
{
return
async
function
(
ctx
,
next
)
{
return
async
function
(
ctx
,
next
)
{
const
uuid
=
ctx
.
headers
.
uuid
;
const
uuid
=
ctx
.
headers
.
uuid
;
const
key
=
'course_user_session_'
+
uuid
;
const
key
=
'course_user_session_'
+
uuid
;
...
@@ -21,6 +21,7 @@ module.exports = (options, app) => {
...
@@ -21,6 +21,7 @@ module.exports = (options, app) => {
// console.info('11111111111111111111111111111111');
// console.info('11111111111111111111111111111111');
// console.info(auth_info);
// console.info(auth_info);
ctx
.
setUserUuid
(
user_uuid
);
ctx
.
setUserUuid
(
user_uuid
);
ctx
.
setOpenId
(
openid
);
await
next
();
await
next
();
};
};
...
...
app/router/course.js
View file @
ec228901
...
@@ -2,30 +2,32 @@
...
@@ -2,30 +2,32 @@
module
.
exports
=
app
=>
{
module
.
exports
=
app
=>
{
const
router
=
app
.
router
.
namespace
(
app
.
config
.
projectRootPath
+
'/course'
);
const
router
=
app
.
router
.
namespace
(
app
.
config
.
projectRootPath
+
'/course'
);
const
loginAuth
=
app
.
middleware
.
loginAuth
({
type
:
'new'
});
//
登录中间件
const
loginAuth
=
app
.
middleware
.
loginAuth
({
type
:
'new'
});
//
登录中间件
const
miniAuth
=
app
.
middleware
.
miniAuth
();
//
因为不跟现有的用户中心系统,所以使用单独的登录中间件
const
miniAuth
=
app
.
middleware
.
miniAuth
();
//
因为不跟现有的用户中心系统,所以使用单独的登录中间件
router
.
get
(
'third'
,
'/options'
,
'course.option.getOptions'
);
//
筛选项
router
.
get
(
'third'
,
'/options'
,
'course.option.getOptions'
);
//
筛选项
router
.
post
(
'third'
,
'/address'
,
miniAuth
,
'course.location.getAddress'
);
//
根据经纬度或ip获取地理位置信息
router
.
post
(
'third'
,
'/address'
,
miniAuth
,
'course.location.getAddress'
);
//
根据经纬度或ip获取地理位置信息
router
.
post
(
'third'
,
'/institutions'
,
miniAuth
,
'course.institution.institutionList'
);
//
机构列表
router
.
post
(
'third'
,
'/institutions'
,
miniAuth
,
'course.institution.institutionList'
);
//
机构列表
router
.
get
(
'third'
,
'/institutions'
,
miniAuth
,
'course.institution.institutionList'
);
//
机构列表
router
.
get
(
'third'
,
'/institutions'
,
miniAuth
,
'course.institution.institutionList'
);
//
机构列表
router
.
get
(
'third'
,
'/institution/:institution_id/:area_id'
,
miniAuth
,
'course.institution.institutionInfo'
);
//
机构详情
router
.
get
(
'third'
,
'/institution/:institution_id/:area_id'
,
miniAuth
,
'course.institution.institutionInfo'
);
//
机构详情
router
.
post
(
'third'
,
'/classes'
,
miniAuth
,
'course.institution.classList'
);
//
课程列表
router
.
post
(
'third'
,
'/classes'
,
miniAuth
,
'course.institution.classList'
);
//
课程列表
router
.
get
(
'third'
,
'/classes'
,
miniAuth
,
'course.institution.classList'
);
//
课程列表
router
.
get
(
'third'
,
'/classes'
,
miniAuth
,
'course.institution.classList'
);
//
课程列表
router
.
get
(
'third'
,
'/class/:class_id'
,
miniAuth
,
'course.institution.classInfo'
);
//
课程详情
router
.
get
(
'third'
,
'/class/:class_id'
,
miniAuth
,
'course.institution.classInfo'
);
//
课程详情
router
.
post
(
'third'
,
'/teachers'
,
miniAuth
,
'course.institution.teacherList'
);
//
老师列表
router
.
post
(
'third'
,
'/teachers'
,
miniAuth
,
'course.institution.teacherList'
);
//
老师列表
router
.
get
(
'third'
,
'/teachers'
,
miniAuth
,
'course.institution.teacherList'
);
//
老师详情
router
.
get
(
'third'
,
'/teachers'
,
miniAuth
,
'course.institution.teacherList'
);
//
老师详情
router
.
get
(
'third'
,
'/teacher/:teacher_id'
,
miniAuth
,
'course.institution.teacherInfo'
);
//
老师详情
router
.
get
(
'third'
,
'/teacher/:teacher_id'
,
miniAuth
,
'course.institution.teacherInfo'
);
//
老师详情
router
.
post
(
'third'
,
'/user/auth'
,
'course.user.auth'
);
//
微信授权登录
router
.
post
(
'third'
,
'/user/auth'
,
'course.user.auth'
);
//
微信授权登录
router
.
post
(
'third'
,
'/user/register_user'
,
miniAuth
,
'course.user.registerUserInfo'
);
//
授权后注册用户
router
.
post
(
'third'
,
'/user/register_user'
,
miniAuth
,
'course.user.registerUserInfo'
);
//
授权后注册用户
router
.
get
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.getBabyInfo'
);
//
获取baby信息
router
.
get
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.getBabyInfo'
);
//
获取baby信息
router
.
post
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.saveBabyInfo'
);
//
保存baby信息
router
.
post
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.saveBabyInfo'
);
//
保存baby信息
router
.
delete
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.delBabyInfo'
);
//
删除baby信息
router
.
delete
(
'third'
,
'/user/baby'
,
miniAuth
,
'course.user.delBabyInfo'
);
//
删除baby信息
router
.
get
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.getCollectInstitutions'
);
//
收藏的机构列表
router
.
get
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.getCollectInstitutions'
);
//
收藏的机构列表
router
.
post
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.collectInstitution'
);
//
收藏机构
router
.
post
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.collectInstitution'
);
//
收藏机构
router
.
delete
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.delCollectInstitution'
);
//
取消收藏机构
router
.
delete
(
'third'
,
'/user/collection/institution'
,
miniAuth
,
'course.user.delCollectInstitution'
);
//
取消收藏机构
router
.
get
(
'third'
,
'/wechat/callbackAction'
,
'course.wechat.check'
);
router
.
post
(
'third'
,
'/wechat/callbackAction'
,
'course.wechat.callbackAction'
);
};
};
app/service/course/institution.js
View file @
ec228901
...
@@ -56,10 +56,8 @@ class InstitutionService extends Service {
...
@@ -56,10 +56,8 @@ class InstitutionService extends Service {
// const area_lbs = await this.computeDistance(institution_area_list, { lat, lng });// 计算距离信息
// const area_lbs = await this.computeDistance(institution_area_list, { lat, lng });// 计算距离信息
const
area_distance_list
=
await
this
.
calcDistance
(
institution_area_list
,
{
lat
,
lng
},
page
,
distance
);
const
area_distance_list
=
await
this
.
calcDistance
(
institution_area_list
,
{
lat
,
lng
},
page
,
distance
);
const
area_distance
=
area_distance_list
.
rows
;
const
area_distance
=
area_distance_list
.
rows
;
console
.
log
(
area_distance
);
console
.
log
(
area_distance_list
);
console
.
log
(
distance
);
const
institution_areas
=
await
this
.
computeDistance
(
area_distance
,
{
lat
,
lng
});
const
institution_areas
=
await
this
.
computeDistance
(
area_distance
,
{
lat
,
lng
});
console
.
log
(
institution_areas
.
length
);
for
(
const
i
in
institution_areas
)
{
for
(
const
i
in
institution_areas
)
{
area_distance
[
i
].
distance
=
Number
(
institution_areas
[
i
].
distance
)
===
0
?
999999999.0
:
parseFloat
(
institution_areas
[
i
].
distance
);
area_distance
[
i
].
distance
=
Number
(
institution_areas
[
i
].
distance
)
===
0
?
999999999.0
:
parseFloat
(
institution_areas
[
i
].
distance
);
area_distance
[
i
].
duration
=
institution_areas
[
i
].
duration
;
area_distance
[
i
].
duration
=
institution_areas
[
i
].
duration
;
...
@@ -425,7 +423,7 @@ class InstitutionService extends Service {
...
@@ -425,7 +423,7 @@ class InstitutionService extends Service {
ctx
.
failed
(
error
);
ctx
.
failed
(
error
);
});
});
cons
t
ret
=
[];
le
t
ret
=
[];
for
(
const
i
in
result
)
{
for
(
const
i
in
result
)
{
const
tmp
=
lbs_array
[
i
];
const
tmp
=
lbs_array
[
i
];
tmp
.
distance
=
result
[
i
];
tmp
.
distance
=
result
[
i
];
...
@@ -438,6 +436,8 @@ class InstitutionService extends Service {
...
@@ -438,6 +436,8 @@ class InstitutionService extends Service {
return
a
.
distance
-
b
.
distance
;
return
a
.
distance
-
b
.
distance
;
};
};
ret
=
R
.
sort
(
sort
)(
ret
);
const
institutions
=
[];
const
institutions
=
[];
for
(
const
v
of
ret
)
{
for
(
const
v
of
ret
)
{
if
(
!
institutions
[
v
.
id
]
&&
!
ctx
.
isEmpty
(
v
))
{
if
(
!
institutions
[
v
.
id
]
&&
!
ctx
.
isEmpty
(
v
))
{
...
...
app/service/course/wechat.js
0 → 100644
View file @
ec228901
'use strict'
;
const
Service
=
require
(
'egg'
).
Service
;
const
APPID
=
'wx4769ebba9b91f8ec'
;
const
SECRET
=
'680440637b4e38c9b66529cfd5dc590e'
;
class
WechatService
extends
Service
{
async
getAccessToken
()
{
const
{
ctx
}
=
this
;
const
url
=
'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='
+
APPID
+
'&secret='
+
SECRET
;
// 先从redis中取
let
token
=
await
this
.
app
.
memcache
.
get
(
'wechat_course_accessToken'
);
if
(
ctx
.
isEmpty
(
token
))
{
const
resp
=
await
ctx
.
helper
.
send_request
(
url
,
{},
{
method
:
'GET'
});
if
(
resp
.
status
===
200
&&
!
ctx
.
isEmpty
(
resp
.
data
)
&&
!
ctx
.
isEmpty
(
resp
.
data
.
access_token
))
{
token
=
resp
.
data
.
access_token
;
await
this
.
app
.
memcache
.
set
(
'wechat_course_accessToken'
,
token
,
resp
.
data
.
expires_in
);
}
}
return
token
;
}
async
callbackAction
()
{
const
{
ctx
}
=
this
;
ctx
.
logger
.
info
(
'course_wechat_receive: '
+
JSON
.
stringify
(
ctx
.
request
.
body
));
await
this
.
sendMsg
(
ctx
.
request
.
body
);
}
async
sendMsg
(
data
)
{
const
{
ctx
}
=
this
;
if
(
ctx
.
isEmpty
(
data
))
{
return
;
}
//只有MsgType为miniprogrampage才发送
if
(
ctx
.
isEmpty
(
data
.
MsgType
)
||
ctx
.
isEmpty
(
data
.
Title
)
||
data
.
MsgType
!==
'miniprogrampage'
||
data
.
Title
!==
'趣选课'
)
{
return
;
}
const
token
=
await
this
.
getAccessToken
();
const
url
=
'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='
+
token
;
const
params
=
{
access_token
:
token
,
touser
:
data
.
FromUserName
,
msgtype
:
'text'
,
text
:
{
content
:
'hello world'
},
};
const
resp
=
await
ctx
.
helper
.
send_request
(
url
,
params
,
{
method
:
'POST'
});
ctx
.
logger
.
info
(
'course_wechat_resp: '
+
JSON
.
stringify
(
resp
));
return
;
}
}
module
.
exports
=
WechatService
;
app/service/house/v2/new_house.js
View file @
ec228901
...
@@ -194,8 +194,8 @@ class NewHouseService extends Service {
...
@@ -194,8 +194,8 @@ class NewHouseService extends Service {
description
:
data
.
description
||
''
,
//描述
description
:
data
.
description
||
''
,
//描述
tags
:
data
.
tags
?
eval
(
data
.
tags
)
:
[],
//项目特色
tags
:
data
.
tags
?
eval
(
data
.
tags
)
:
[],
//项目特色
favourable_info
:
data
.
favourable_info
||
''
,
//优惠
favourable_info
:
data
.
favourable_info
||
''
,
//优惠
reference_avg_price
:
data
.
reference_avg_price
===
0
?
'--'
:
Number
(
data
.
reference_avg_price
),
//均价
reference_avg_price
:
Number
(
data
.
reference_avg_price
)
===
0
?
'--'
:
Number
(
data
.
reference_avg_price
),
//均价
reference_total_price
:
data
.
reference_total_price
===
0
?
'--'
:
Number
(
data
.
reference_total_price
),
//总价
reference_total_price
:
Number
(
data
.
reference_total_price
)
===
0
?
'--'
:
Number
(
data
.
reference_total_price
),
//总价
property_type
:
data
.
house_type
.
split
(
','
).
slice
(
0
,
2
),
//物业类型
property_type
:
data
.
house_type
.
split
(
','
).
slice
(
0
,
2
),
//物业类型
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment