Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gdtel-gztel-school-center
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
吴学德
gdtel-gztel-school-center
Commits
8abd77cb
Commit
8abd77cb
authored
Jan 31, 2021
by
罗承锋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改微信登录方法
parent
a28cb087
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
15 deletions
+76
-15
core-service/src/main/java/com/winsun/item/modular/system/controller/GetPhoneCodeController.java
+2
-2
core-service/src/main/java/com/winsun/item/modular/system/controller/LoginPwdController.java
+74
-13
No files found.
core-service/src/main/java/com/winsun/item/modular/system/controller/GetPhoneCodeController.java
View file @
8abd77cb
...
...
@@ -45,8 +45,8 @@ public class GetPhoneCodeController extends BaseController {
//登录验证码标识
private
static
String
CODE
=
"getPhoneCode"
;
//
5
分钟内有效
private
static
long
CODETIME
=
1000
*
60
*
5
;
//
30
分钟内有效
private
static
long
CODETIME
=
1000
*
60
*
30
;
//短信验证码错误key
private
static
String
ERRCODENAME
=
"ERRCODENAME"
;
...
...
core-service/src/main/java/com/winsun/item/modular/system/controller/LoginPwdController.java
View file @
8abd77cb
...
...
@@ -5,15 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.winsun.auth.core.base.controller.BaseController
;
import
com.winsun.auth.core.base.tips.ErrorTip
;
import
com.winsun.auth.core.common.model.ResponseData
;
import
com.winsun.auth.core.support.HttpKit
;
import
com.winsun.auth.core.util.DateUtil
;
import
com.winsun.auth.model.user.User
;
import
com.winsun.bean.HhrUser
;
import
com.winsun.bean.School
;
import
com.winsun.bean.SysUser
;
import
com.winsun.item.core.shiro.ShiroKit
;
import
com.winsun.item.core.util.AccLoginUtil
;
import
com.winsun.item.core.util.IPUtils
;
import
com.winsun.item.core.util.ResponseEntity
;
import
com.winsun.item.modular.system.service.IUserService
;
import
com.winsun.item.modular.system.service.impl.AccServiceImpl
;
import
com.winsun.item.util.LoginUtils
;
import
com.winsun.mapper.HhrUserMapper
;
import
com.winsun.mapper.SchoolMapper
;
...
...
@@ -23,10 +28,14 @@ import com.winsun.utils.*;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -59,12 +68,15 @@ public class LoginPwdController extends BaseController {
private
static
String
ERRCODENAME
=
"ForgeERRCODENAME"
;
private
static
long
CODETIME
=
1000
*
60
*
5
;
private
static
long
CODETIME
=
1000
*
60
*
30
;
private
static
int
ERRACCOUNT
=
10
;
private
static
String
APPID
=
"wxfc18f5186b729d15"
;
private
static
String
APPSECRET
=
"122278f3fb555468848ff040620505ad"
;
@Value
(
"${weixin.appid}"
)
private
String
APPID
=
""
;
@Value
(
"${weixin.appsecret}"
)
private
String
APPSECRET
=
""
;
//登录验证码标识
private
static
String
GETPHONECODE
=
"getPhoneCode"
;
...
...
@@ -107,32 +119,31 @@ public class LoginPwdController extends BaseController {
/*jsonObject = HttpHelper.doGet(url);*/
Map
<
String
,
Object
>
hashMap
=
new
HashMap
<>();
log
.
info
(
jsonObject
);
hashMap
.
put
(
"info"
,
JSONObject
.
parseObject
(
jsonObject
));
/* Map<String,Object> map = JSON.toJavaObject(jsonObject,Map.class);*/
Map
<
String
,
Object
>
map
=
JSON
.
parseObject
(
jsonObject
,
Map
.
class
);
String
openId
=
map
.
get
(
"openid"
).
toString
();
Wrapper
<
HhrUser
>
wrapper
=
new
EntityWrapper
<>();
wrapper
.
eq
(
"open_id"
,
openId
);
log
.
info
(
"openId:"
+
openId
);
List
<
HhrUser
>
hhrUsers
=
hhrUserMapper
.
selectList
(
wrapper
);
if
(
hhrUsers
.
size
()
==
0
)
{
hashMap
.
put
(
"info"
,
JSONObject
.
parseObject
(
jsonObject
));
return
ResponseData
.
error
(
hashMap
,
"当前微信未绑定账号,请先登录绑定账号!"
);
}
HhrUser
hhrUser
=
hhrUsers
.
get
(
0
);
SysUser
sysUser
=
sysUserMapper
.
selectById
(
hhrUser
.
getId
());
if
(
StringUtils
.
isBlank
(
sysUser
.
getAccount
()))
{
hashMap
.
put
(
"info"
,
JSONObject
.
parseObject
(
jsonObject
));
return
ResponseData
.
error
(
hashMap
,
"当前账号异常!"
);
}
hashMap
.
put
(
"username"
,
sysUser
.
getAccount
());
hashMap
.
put
(
"openId"
,
openId
);
return
ResponseData
.
success
(
hashMap
);
// 信息正确,调用登录
return
this
.
loginvalid
(
hashMap
,
sysUser
.
getAccount
(),
openId
);
}
/**
* 微信登录
* 微信登录
-- 前端未调用
*
* @param openid
* @return
...
...
@@ -161,6 +172,50 @@ public class LoginPwdController extends BaseController {
}
/**
* 重写微信openId登录方法
* @param username 用户名
* @param openId 用户openId
* @return
*/
private
ResponseData
<
Map
<
String
,
Object
>>
loginvalid
(
Map
<
String
,
Object
>
hashMap
,
String
username
,
String
openId
)
{
try
{
// 关闭错误登录校验
stringRedisTemplate
.
opsForValue
().
set
(
"SYS_LOGIN_ERROR"
+
username
,
"1"
);
String
password
=
null
;
ResponseData
<
String
>
canLogin
=
LoginUtils
.
canLogin
(
username
);
if
(!
canLogin
.
isSuccess
())
{
log
.
info
(
"统一账号或子统一账号错误登录次数较多,不允许登录;请稍后再试!"
);
return
ResponseData
.
error
(
hashMap
,
"登录失败,由于账号被锁定,请联系管理员或稍后重试!"
);
}
ResponseData
<
String
>
checkUserName
=
LoginUtils
.
checkUserName
(
username
);
if
(!
checkUserName
.
isSuccess
())
{
return
ResponseData
.
error
(
hashMap
,
canLogin
.
getMsg
());
}
// 获取数据库中的账号密码,准备比对
User
user
=
userService
.
getByAccount
(
username
);
if
(
null
==
user
)
{
log
.
info
(
"统一账号或子统一账号在系统中找不到或被冻结!"
);
return
ResponseData
.
error
(
hashMap
,
"统一账号或子统一账号在系统中找不到或被冻结!"
);
}
// 所有信息正确
Object
object
=
AccLoginUtil
.
normalLogin
(
username
,
user
.
getPassword
(),
openId
);
if
(
object
instanceof
ErrorTip
)
{
return
ResponseData
.
error
(
hashMap
,
"授权登录错误"
);
}
Map
<
String
,
Object
>
map
=
(
Map
<
String
,
Object
>)
object
;
log
.
info
(
"login result :{}"
,
JSON
.
toJSONString
(
object
));
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
resultMap
.
put
(
"sessionId"
,
map
.
get
(
"sessionId"
));
resultMap
.
put
(
"id"
,
map
.
get
(
"id"
));
return
ResponseData
.
success
(
resultMap
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
return
ResponseData
.
error
(
hashMap
,
"内部异常"
);
}
}
/**
* 微信解绑
*
* @param openid
...
...
@@ -212,8 +267,10 @@ public class LoginPwdController extends BaseController {
* @return
*/
@RequestMapping
(
"bindingAccount"
)
public
ResponseData
<
String
>
bindingAccount
(
String
openid
,
String
accessToken
,
String
username
,
String
verificationCode
)
{
log
.
info
(
accessToken
+
":"
+
openid
+
":"
+
":"
+
username
+
":"
+
verificationCode
);
public
ResponseData
<
Map
<
String
,
Object
>>
bindingAccount
(
String
openid
,
String
accessToken
,
String
username
,
String
verificationCode
,
@RequestParam
(
value
=
"remember"
,
defaultValue
=
"false"
)
boolean
remember
)
{
log
.
info
(
accessToken
+
":"
+
openid
+
":"
+
":"
+
username
+
":"
+
verificationCode
+
":"
+
remember
);
if
(
StringUtils
.
isBlank
(
accessToken
)
||
StringUtils
.
isBlank
(
openid
)
||
StringUtils
.
isBlank
(
username
)
||
StringUtils
.
isBlank
(
verificationCode
))
{
return
ResponseData
.
error
(
"绑定失败,授权失效或账号验证码为空!"
);
}
...
...
@@ -252,12 +309,16 @@ public class LoginPwdController extends BaseController {
Wrapper
wrapper
=
new
EntityWrapper
<>();
wrapper
.
eq
(
"id"
,
sysUser
.
getId
());
Map
<
String
,
Object
>
dataMapping
=
new
HashMap
<>();
dataMapping
.
put
(
"open_id"
,
openid
);
// 不绑定微信则不保存openId
if
(
remember
)
{
dataMapping
.
put
(
"open_id"
,
openid
);
}
dataMapping
.
put
(
"wx_head_img_url"
,
headimgurl
);
dataMapping
.
put
(
"wx_nick_name"
,
nickname
);
Integer
integer
=
hhrUserMapper
.
updateForSet
(
MyBatisPlusUpdateUtils
.
toUpdateSet
(
dataMapping
),
wrapper
);
if
(
integer
==
1
)
{
return
ResponseData
.
success
(
openid
);
return
this
.
loginvalid
(
null
,
sysUser
.
getAccount
(),
openid
);
}
return
ResponseData
.
error
(
"绑定失败!"
);
}
...
...
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