Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
d7d7e657
Commit
d7d7e657
authored
Aug 15, 2018
by
Junling Bu
Browse files
fix[litemall-wx, litemall-wx-api]: 支持微信手机号码绑定
parent
1e34cdf1
Changes
6
Hide whitespace changes
Inline
Side-by-side
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dao/UserToken.java
View file @
d7d7e657
...
...
@@ -5,9 +5,18 @@ import java.time.LocalDateTime;
public
class
UserToken
{
private
Integer
userId
;
private
String
token
;
private
String
sessionKey
;
private
LocalDateTime
expireTime
;
private
LocalDateTime
updateTime
;
public
String
getSessionKey
()
{
return
sessionKey
;
}
public
void
setSessionKey
(
String
sessionKey
)
{
this
.
sessionKey
=
sessionKey
;
}
public
void
setUserId
(
Integer
userId
)
{
this
.
userId
=
userId
;
}
...
...
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/UserTokenManager.java
View file @
d7d7e657
...
...
@@ -15,8 +15,6 @@ public class UserTokenManager {
private
static
Map
<
Integer
,
UserToken
>
idMap
=
new
HashMap
<>();
public
static
Integer
getUserId
(
String
token
)
{
UserToken
userToken
=
tokenMap
.
get
(
token
);
if
(
userToken
==
null
)
{
return
null
;
...
...
@@ -59,4 +57,19 @@ public class UserTokenManager {
return
userToken
;
}
public
static
String
getSessionKey
(
Integer
userId
)
{
UserToken
userToken
=
idMap
.
get
(
userId
);
if
(
userToken
==
null
)
{
return
null
;
}
if
(
userToken
.
getExpireTime
().
isBefore
(
LocalDateTime
.
now
()))
{
tokenMap
.
remove
(
userToken
.
getToken
());
idMap
.
remove
(
userId
);
return
null
;
}
return
userToken
.
getSessionKey
();
}
}
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java
View file @
d7d7e657
...
...
@@ -2,6 +2,7 @@ package org.linlinjava.litemall.wx.web;
import
cn.binarywang.wx.miniapp.api.WxMaService
;
import
cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult
;
import
cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.linlinjava.litemall.core.notify.NotifyService
;
...
...
@@ -13,6 +14,7 @@ import org.linlinjava.litemall.core.util.ResponseUtil;
import
org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder
;
import
org.linlinjava.litemall.db.domain.LitemallUser
;
import
org.linlinjava.litemall.db.service.LitemallUserService
;
import
org.linlinjava.litemall.wx.annotation.LoginUser
;
import
org.linlinjava.litemall.wx.dao.UserInfo
;
import
org.linlinjava.litemall.wx.dao.UserToken
;
import
org.linlinjava.litemall.wx.dao.WxLoginInfo
;
...
...
@@ -169,6 +171,7 @@ public class WxAuthController {
// token
UserToken
userToken
=
UserTokenManager
.
generateToken
(
user
.
getId
());
userToken
.
setSessionKey
(
sessionKey
);
Map
<
Object
,
Object
>
result
=
new
HashMap
<
Object
,
Object
>();
result
.
put
(
"token"
,
userToken
.
getToken
());
...
...
@@ -334,4 +337,17 @@ public class WxAuthController {
return
ResponseUtil
.
ok
();
}
@PostMapping
(
"bindPhone"
)
public
Object
bindPhone
(
@LoginUser
Integer
userId
,
@RequestBody
String
body
)
{
String
sessionKey
=
UserTokenManager
.
getSessionKey
(
userId
);
String
encryptedData
=
JacksonUtil
.
parseString
(
body
,
"encryptedData"
);
String
iv
=
JacksonUtil
.
parseString
(
body
,
"iv"
);
WxMaPhoneNumberInfo
phoneNumberInfo
=
this
.
wxService
.
getUserService
().
getPhoneNoInfo
(
sessionKey
,
encryptedData
,
iv
);
String
phone
=
phoneNumberInfo
.
getPhoneNumber
();
LitemallUser
user
=
userService
.
findById
(
userId
);
user
.
setMobile
(
phone
);
userService
.
update
(
user
);
return
ResponseUtil
.
ok
();
}
}
litemall-wx/config/api.js
View file @
d7d7e657
...
...
@@ -18,6 +18,7 @@ module.exports = {
AuthRegister
:
WxApiRoot
+
'
auth/register
'
,
//账号注册
AuthReset
:
WxApiRoot
+
'
auth/reset
'
,
//账号密码重置
AuthRegisterCaptcha
:
WxApiRoot
+
'
auth/regCaptcha
'
,
//验证码
AuthBindPhone
:
WxApiRoot
+
'
auth/bindPhone
'
,
//绑定微信手机号
GoodsCount
:
WxApiRoot
+
'
goods/count
'
,
//统计商品总数
GoodsList
:
WxApiRoot
+
'
goods/list
'
,
//获得商品列表
...
...
litemall-wx/pages/ucenter/index/index.js
View file @
d7d7e657
...
...
@@ -107,6 +107,31 @@ Page({
});
};
},
bindPhoneNumber
:
function
(
e
)
{
if
(
e
.
detail
.
errMsg
!==
"
getPhoneNumber:ok
"
){
// 拒绝授权
return
;
}
if
(
!
app
.
globalData
.
hasLogin
)
{
wx
.
showToast
({
title
:
'
绑定失败:请先登录
'
,
icon
:
'
none
'
,
duration
:
2000
});
return
;
}
util
.
request
(
api
.
AuthBindPhone
,
{
iv
:
e
.
detail
.
iv
,
encryptedData
:
e
.
detail
.
encryptedData
},
'
POST
'
).
then
(
function
(
res
)
{
if
(
res
.
errno
===
0
)
{
wx
.
showToast
({
title
:
'
绑定手机号码成功
'
,
icon
:
'
success
'
,
duration
:
2000
});
}
});
},
aboutUs
:
function
()
{
wx
.
navigateTo
({
url
:
'
/pages/about/about
'
...
...
litemall-wx/pages/ucenter/index/index.wxml
View file @
d7d7e657
...
...
@@ -64,7 +64,7 @@
<text class="txt">联系客服</text>
</view>
</button>
<button class="item" open-type="getPhoneNumber" bindgetphonenumber="
get
PhoneNumber">
<button class="item" open-type="getPhoneNumber" bindgetphonenumber="
bind
PhoneNumber">
<view class="a">
<image class="user-menu .icon.phone" src="/static/images/mobile.png"></image>
<text class="txt">绑定手机号码</text>
...
...
Write
Preview
Supports
Markdown
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