Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
head_group
xyqb-user2
Commits
f1ad8b38
Commit
f1ad8b38
authored
Jul 26, 2022
by
李健华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登陆日志增加登陆方式
parent
5de7af9d
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
95 additions
and
81 deletions
+95
-81
LoginType.java
src/main/java/cn/quantgroup/user/enums/LoginType.java
+30
-0
UserController.java
...n/quantgroup/xyqb/controller/external/UserController.java
+6
-2
WeChatController.java
...quantgroup/xyqb/controller/external/WeChatController.java
+5
-5
AppController.java
...antgroup/xyqb/controller/internal/user/AppController.java
+5
-4
InnerController.java
...tgroup/xyqb/controller/internal/user/InnerController.java
+14
-3
LoginModule.java
...group/xyqb/controller/middleoffice/login/LoginModule.java
+3
-2
LoginRecord.java
src/main/java/cn/quantgroup/xyqb/entity/LoginRecord.java
+3
-0
UserRegisterServiceImpl.java
...p/xyqb/service/register/impl/UserRegisterServiceImpl.java
+1
-1
ISessionService.java
...a/cn/quantgroup/xyqb/service/session/ISessionService.java
+12
-10
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+3
-2
ILoginRecordService.java
.../cn/quantgroup/xyqb/service/user/ILoginRecordService.java
+2
-14
LoginRecordServiceImpl.java
...tgroup/xyqb/service/user/impl/LoginRecordServiceImpl.java
+9
-37
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+2
-1
No files found.
src/main/java/cn/quantgroup/user/enums/LoginType.java
0 → 100644
View file @
f1ad8b38
package
cn
.
quantgroup
.
user
.
enums
;
/**
* Created by FrankChow on 15/7/15.
*/
public
enum
LoginType
{
ACCOUNTPASSWORD
(
"账密登陆"
),
VERIFICATIONCODE
(
"验证码登陆"
),
AUTHLOGIN
(
"一键登录"
),
WECHATLOGIN
(
"微信登陆"
),
APPLETLOGIN
(
"小程序登陆"
),
SUPERLOGIN
(
"免密登陆"
),
SUPERLOGINTWO
(
"免密登陆2, 新手机不注册"
),
;
private
String
name
;
LoginType
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
@Override
public
String
toString
()
{
return
name
;
}
}
src/main/java/cn/quantgroup/xyqb/controller/external/UserController.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
import
cn.quantgroup.user.enums.LoginType
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
...
@@ -707,7 +708,7 @@ public class UserController implements IBaseController {
...
@@ -707,7 +708,7 @@ public class UserController implements IBaseController {
return
JsonResult
.
buildErrorStateResult
(
"登录时微信关联失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录时微信关联失败"
,
null
);
}
}
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
1
,
channelId
,
createdFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
1
,
channelId
,
createdFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
()
);
if
(
authBean
!=
null
){
if
(
authBean
!=
null
){
authBean
.
setRegister
(
false
);
authBean
.
setRegister
(
false
);
}
}
...
@@ -768,6 +769,9 @@ public class UserController implements IBaseController {
...
@@ -768,6 +769,9 @@ public class UserController implements IBaseController {
lockIpv4Service
.
countErrorByPhoneNo
(
phoneNo
);
lockIpv4Service
.
countErrorByPhoneNo
(
phoneNo
);
return
null
;
return
null
;
}
}
// 校验老密码正确更新新加密方式
user
.
setEncryptedPassword
(
BctyptPasswordUtil
.
BCryptWithSalt
(
pass
));
userService
.
saveUser
(
user
);
}
}
// 向该ipv4添加成功计数器
// 向该ipv4添加成功计数器
...
@@ -796,7 +800,7 @@ public class UserController implements IBaseController {
...
@@ -796,7 +800,7 @@ public class UserController implements IBaseController {
geetestLogService
.
updateByUidGeetestLog
(
geetestLogId
,
user
.
getId
());
geetestLogService
.
updateByUidGeetestLog
(
geetestLogId
,
user
.
getId
());
}
}
//更新session
//更新session
return
new
JsonResult
(
sessionService
.
createSession
(
user
,
loginProperties
));
return
new
JsonResult
(
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
()
));
}
}
/**
/**
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/WeChatController.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
;
import
cn.quantgroup.user.enums.LoginType
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.Merchant
;
...
@@ -15,7 +16,6 @@ import cn.quantgroup.xyqb.service.user.IUserService;
...
@@ -15,7 +16,6 @@ import cn.quantgroup.xyqb.service.user.IUserService;
import
cn.quantgroup.xyqb.service.wechat.IWechatFollowService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatFollowService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.util.EmojiUtil
;
import
cn.quantgroup.xyqb.util.EmojiUtil
;
import
cn.quantgroup.xyqb.util.TenantUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
import
com.google.common.base.Joiner
;
import
com.google.common.base.Joiner
;
...
@@ -362,14 +362,14 @@ public class WeChatController implements IBaseController {
...
@@ -362,14 +362,14 @@ public class WeChatController implements IBaseController {
if
(
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
()))
{
if
(
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
()))
{
return
loginInWechatWithSessionCreated
(
user
,
merchant
,
"cashTarget5"
,
Constants
.
Channel
.
BAITIAO
,
domain
,
Constants
.
Channel
.
WECHAT
);
return
loginInWechatWithSessionCreated
(
user
,
merchant
,
"cashTarget5"
,
Constants
.
Channel
.
BAITIAO
,
domain
,
Constants
.
Channel
.
WECHAT
);
}
else
if
(
Constants
.
MERCHANT_WECHAT_PAY
.
equals
(
merchant
.
getName
()))
{
}
else
if
(
Constants
.
MERCHANT_WECHAT_PAY
.
equals
(
merchant
.
getName
()))
{
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
()
);
return
domain
+
"/landing?token="
+
authBean
.
getToken
()
+
"®isterFrom="
+
registerFrom
+
"&channelId="
+
Constants
.
Channel
.
WECHAT
+
"&key="
+
merchant
.
getName
()
+
"&target=cashTarget5"
;
return
domain
+
"/landing?token="
+
authBean
.
getToken
()
+
"®isterFrom="
+
registerFrom
+
"&channelId="
+
Constants
.
Channel
.
WECHAT
+
"&key="
+
merchant
.
getName
()
+
"&target=cashTarget5"
;
}
else
{
}
else
{
return
loginInWechatWithSessionCreated
(
user
,
merchant
,
"cashTarget4"
,
1L
,
domain
,
registerFrom
);
return
loginInWechatWithSessionCreated
(
user
,
merchant
,
"cashTarget4"
,
1L
,
domain
,
registerFrom
);
}
}
}
else
if
(
Constants
.
LOCAL
.
equals
(
redirect
))
{
}
else
if
(
Constants
.
LOCAL
.
equals
(
redirect
))
{
log
.
info
(
"微信登录:redirect不为null,创建session跳到指定前端页面."
);
log
.
info
(
"微信登录:redirect不为null,创建session跳到指定前端页面."
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
()
);
log
.
info
(
"微信登录:跳转地址{}"
,
domain
+
"/weixin/callback?phoneNo="
+
user
.
getPhoneNo
()
+
"&token="
+
authBean
.
getToken
());
log
.
info
(
"微信登录:跳转地址{}"
,
domain
+
"/weixin/callback?phoneNo="
+
user
.
getPhoneNo
()
+
"&token="
+
authBean
.
getToken
());
Long
channelId
=
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
())
?
Constants
.
Channel
.
BAITIAO
:
1L
;
Long
channelId
=
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
())
?
Constants
.
Channel
.
BAITIAO
:
1L
;
String
target
=
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
())
?
"cashTarget5"
:
"cashTarget4"
;
String
target
=
Constants
.
MERCHANT_BAITIAO
.
equals
(
merchant
.
getName
())
?
"cashTarget5"
:
"cashTarget4"
;
...
@@ -377,7 +377,7 @@ public class WeChatController implements IBaseController {
...
@@ -377,7 +377,7 @@ public class WeChatController implements IBaseController {
"&channelId="
+
channelId
+
"&key="
+
merchant
.
getName
()
+
"&target="
+
target
+
"&isWechat=true"
;
"&channelId="
+
channelId
+
"&key="
+
merchant
.
getName
()
+
"&target="
+
target
+
"&isWechat=true"
;
}
else
if
(
Constants
.
REDIRECT_ORDER
.
equals
(
redirect
)){
}
else
if
(
Constants
.
REDIRECT_ORDER
.
equals
(
redirect
)){
log
.
info
(
"微信登录:redirect为orders,创建session跳到指定前端页面.(兼容多订单页面)"
);
log
.
info
(
"微信登录:redirect为orders,创建session跳到指定前端页面.(兼容多订单页面)"
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
()
);
return
String
.
format
(
"%s/loan-list?token=%s®isterFrom=%s&key=%s"
,
xjdDomain
,
authBean
.
getToken
(),
registerFrom
,
merchant
.
getName
());
return
String
.
format
(
"%s/loan-list?token=%s®isterFrom=%s&key=%s"
,
xjdDomain
,
authBean
.
getToken
(),
registerFrom
,
merchant
.
getName
());
}
}
return
null
;
return
null
;
...
@@ -385,7 +385,7 @@ public class WeChatController implements IBaseController {
...
@@ -385,7 +385,7 @@ public class WeChatController implements IBaseController {
private
String
loginInWechatWithSessionCreated
(
User
user
,
Merchant
merchant
,
String
target
,
Long
channelId
,
String
domain
,
Long
registerFrom
)
{
private
String
loginInWechatWithSessionCreated
(
User
user
,
Merchant
merchant
,
String
target
,
Long
channelId
,
String
domain
,
Long
registerFrom
)
{
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
String
.
valueOf
(
Constants
.
Channel
.
WECHAT
),
merchant
.
getId
(),
merchant
.
getName
(),
null
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
String
.
valueOf
(
Constants
.
Channel
.
WECHAT
),
merchant
.
getId
(),
merchant
.
getName
(),
null
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
()
);
log
.
info
(
"[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}"
,
user
,
merchant
,
target
,
channelId
,
domain
,
registerFrom
);
log
.
info
(
"[WeChatController][loginInWechatWithSessionCreated]微信授权及跳转:user:{},merchant:{},target:{},channelId:{},domain:{},registerFrom:{}"
,
user
,
merchant
,
target
,
channelId
,
domain
,
registerFrom
);
return
domain
+
"/landing?token="
+
authBean
.
getToken
()
+
"®isterFrom="
+
registerFrom
+
"&channelId="
+
channelId
+
"&key="
+
merchant
.
getName
()
+
"&target="
+
target
;
return
domain
+
"/landing?token="
+
authBean
.
getToken
()
+
"®isterFrom="
+
registerFrom
+
"&channelId="
+
channelId
+
"&key="
+
merchant
.
getName
()
+
"&target="
+
target
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/AppController.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
import
cn.quantgroup.user.enums.LoginType
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.LoginInterceptor
;
import
cn.quantgroup.xyqb.aspect.captcha.LoginInterceptor
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
...
@@ -103,7 +104,7 @@ public class AppController implements IBaseController {
...
@@ -103,7 +104,7 @@ public class AppController implements IBaseController {
result
=
JsonResult
.
buildErrorStateResult
(
"无效的商户"
,
null
);
result
=
JsonResult
.
buildErrorStateResult
(
"无效的商户"
,
null
);
}
else
{
}
else
{
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
AUTHLOGIN
.
ordinal
()
);
LoginInfo
.
LoginContext
context
=
new
LoginInfo
.
LoginContext
();
LoginInfo
.
LoginContext
context
=
new
LoginInfo
.
LoginContext
();
context
.
setChannelId
(
channelId
);
context
.
setChannelId
(
channelId
);
context
.
setCreatedFrom
(
registerFrom
);
context
.
setCreatedFrom
(
registerFrom
);
...
@@ -173,7 +174,7 @@ public class AppController implements IBaseController {
...
@@ -173,7 +174,7 @@ public class AppController implements IBaseController {
}
}
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
null
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
SUPERLOGIN
.
ordinal
()
);
log
.
info
(
"第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}"
,
registerFrom
,
phoneNo
,
appChannel
);
log
.
info
(
"第三方用户登录成功 [AppController] login --> loginFrom:{}, phoneNo:{},appChannel:{}"
,
registerFrom
,
phoneNo
,
appChannel
);
return
JsonResult
.
buildSuccessResult
(
"登录成功"
,
bean
);
return
JsonResult
.
buildSuccessResult
(
"登录成功"
,
bean
);
}
}
...
@@ -242,7 +243,7 @@ public class AppController implements IBaseController {
...
@@ -242,7 +243,7 @@ public class AppController implements IBaseController {
log
.
info
(
"=addLoginInfo end"
);
log
.
info
(
"=addLoginInfo end"
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
tenantId
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
tenantId
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
SUPERLOGIN
.
ordinal
()
);
log
.
info
(
"=createSession end"
);
log
.
info
(
"=createSession end"
);
LoginInfo
loginInfo
=
new
LoginInfo
();
LoginInfo
loginInfo
=
new
LoginInfo
();
loginInfo
.
setUser
(
new
UserRet
(
user
));
loginInfo
.
setUser
(
new
UserRet
(
user
));
...
@@ -339,7 +340,7 @@ public class AppController implements IBaseController {
...
@@ -339,7 +340,7 @@ public class AppController implements IBaseController {
//校验租户ID tenantId
//校验租户ID tenantId
oauthLoginInfoService
.
addLoginInfo
(
user
,
tenantId
);
oauthLoginInfoService
.
addLoginInfo
(
user
,
tenantId
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
null
,
""
,
tenantId
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
4
,
channelId
,
registerFrom
,
appChannel
,
null
,
""
,
tenantId
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
bean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
SUPERLOGINTWO
.
ordinal
()
);
log
.
info
(
"第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}"
,
registerFrom
,
phoneNo
,
appChannel
);
log
.
info
(
"第三方用户登录成功 [AppController] login2 --> loginFrom:{}, phoneNo:{},appChannel:{}"
,
registerFrom
,
phoneNo
,
appChannel
);
return
JsonResult
.
buildSuccessResult
(
"登录成功"
,
bean
);
return
JsonResult
.
buildSuccessResult
(
"登录成功"
,
bean
);
}
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/InnerController.java
View file @
f1ad8b38
...
@@ -1366,10 +1366,21 @@ public class InnerController implements IBaseController {
...
@@ -1366,10 +1366,21 @@ public class InnerController implements IBaseController {
if
(
Objects
.
isNull
(
user
)
||
Objects
.
equals
(
Boolean
.
FALSE
,
user
.
getEnable
()))
{
if
(
Objects
.
isNull
(
user
)
||
Objects
.
equals
(
Boolean
.
FALSE
,
user
.
getEnable
()))
{
return
null
;
return
null
;
}
}
// 有限校验新密码加密方式
if
(
StringUtils
.
isNotBlank
(
user
.
getEncryptedPassword
()))
{
if
(!
BctyptPasswordUtil
.
BCryptCheckPw
(
password
,
user
.
getEncryptedPassword
()))
{
return
null
;
}
}
else
{
//验证密码
//验证密码
if
(!
PasswordUtil
.
validatePassword
(
bufPassword
,
user
.
getPassword
()))
{
if
(!
PasswordUtil
.
validatePassword
(
bufPassword
,
user
.
getPassword
()))
{
return
null
;
return
null
;
}
}
// 老密码校验后更新新密码加密方式
user
.
setEncryptedPassword
(
BctyptPasswordUtil
.
BCryptWithSalt
(
password
));
userService
.
saveUser
(
user
);
}
return
user
;
return
user
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/middleoffice/login/LoginModule.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
login
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
middleoffice
.
login
;
import
cn.quantgroup.user.enums.LoginType
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyStrategyFactory
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyStrategyFactory
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum
;
import
cn.quantgroup.xyqb.controller.middleoffice.common.VerifyTypeEnum
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
...
@@ -61,7 +62,7 @@ public class LoginModule implements ILoginModule {
...
@@ -61,7 +62,7 @@ public class LoginModule implements ILoginModule {
.
channelId
(
channelId
)
.
channelId
(
channelId
)
.
merchantName
(
"xyqb"
)
.
merchantName
(
"xyqb"
)
.
build
();
.
build
();
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
()
);
return
LoginVo
.
builder
()
return
LoginVo
.
builder
()
.
hasPassword
(
user
.
getHasPassword
())
.
hasPassword
(
user
.
getHasPassword
())
.
phoneNo
(
phoneNo
)
.
phoneNo
(
phoneNo
)
...
@@ -94,7 +95,7 @@ public class LoginModule implements ILoginModule {
...
@@ -94,7 +95,7 @@ public class LoginModule implements ILoginModule {
.
channelId
(
channelId
)
.
channelId
(
channelId
)
.
tenantId
(
tenantId
)
.
tenantId
(
tenantId
)
.
build
();
.
build
();
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
APPLETLOGIN
.
ordinal
()
);
return
LoginVo
.
builder
()
return
LoginVo
.
builder
()
.
hasPassword
(
user
.
getHasPassword
())
.
hasPassword
(
user
.
getHasPassword
())
.
phoneNo
(
user
.
getPhoneNo
())
.
phoneNo
(
user
.
getPhoneNo
())
...
...
src/main/java/cn/quantgroup/xyqb/entity/LoginRecord.java
View file @
f1ad8b38
...
@@ -46,4 +46,7 @@ public class LoginRecord extends BaseEntity implements Serializable {
...
@@ -46,4 +46,7 @@ public class LoginRecord extends BaseEntity implements Serializable {
@Column
(
name
=
"app_channel"
)
@Column
(
name
=
"app_channel"
)
private
String
appChannel
;
private
String
appChannel
;
@Column
(
name
=
"login_type"
)
private
Integer
loginType
;
}
}
src/main/java/cn/quantgroup/xyqb/service/register/impl/UserRegisterServiceImpl.java
View file @
f1ad8b38
...
@@ -166,7 +166,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService {
...
@@ -166,7 +166,7 @@ public class UserRegisterServiceImpl implements IUserRegisterService {
user
=
userService
.
saveUser
(
user
);
user
=
userService
.
saveUser
(
user
);
// 注册添加日志
// 注册添加日志
loginRecordService
.
saveLoginRecord
(
user
.
getId
(),
RecordType
.
REGISTERRECORD
.
getName
());
loginRecordService
.
saveLoginRecord
(
user
.
getId
(),
RecordType
.
REGISTERRECORD
.
getName
()
,
0
);
userRegisterParam
.
setUser
(
user
);
userRegisterParam
.
setUser
(
user
);
return
user
;
return
user
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/service/session/ISessionService.java
View file @
f1ad8b38
...
@@ -13,16 +13,6 @@ import java.util.List;
...
@@ -13,16 +13,6 @@ import java.util.List;
*/
*/
public
interface
ISessionService
{
public
interface
ISessionService
{
/**
* 更新session
* 用户信息存在,更新session中的最后访问时间,重新写入缓存.
* 存在则保存用户session信息,userId为uuid
*
* @param user - 登录用户
* @param loginProperties - 登录参数
* @return
*/
AuthBean
createSession
(
User
user
,
LoginProperties
loginProperties
);
SessionStruct
createSessionAndPersist
(
User
user
,
LoginProperties
loginProperties
);
SessionStruct
createSessionAndPersist
(
User
user
,
LoginProperties
loginProperties
);
...
@@ -45,4 +35,16 @@ public interface ISessionService {
...
@@ -45,4 +35,16 @@ public interface ISessionService {
void
persistSessionExchange
(
String
token
,
SessionValue
sessionValue
,
long
expire
);
void
persistSessionExchange
(
String
token
,
SessionValue
sessionValue
,
long
expire
);
void
kdspDeleteSession
(
Long
userId
,
LoginProperties
loginProperties
);
void
kdspDeleteSession
(
Long
userId
,
LoginProperties
loginProperties
);
/**
* 更新session
* 用户信息存在,更新session中的最后访问时间,重新写入缓存.
* 存在则保存用户session信息,userId为uuid
*
* @param user - 登录用户
* @param loginProperties - 登录参数
* @param ordinal - 登录方式
* @return
*/
AuthBean
createSession
(
User
user
,
LoginProperties
loginProperties
,
int
ordinal
);
}
}
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
View file @
f1ad8b38
...
@@ -47,6 +47,7 @@ public class SessionServiceImpl implements ISessionService {
...
@@ -47,6 +47,7 @@ public class SessionServiceImpl implements ISessionService {
@Value
(
"${token.prefix}"
)
@Value
(
"${token.prefix}"
)
private
String
prefix
;
private
String
prefix
;
/**
/**
* 更新session
* 更新session
* 用户信息存在,更新session中的最后访问时间,重新写入缓存.
* 用户信息存在,更新session中的最后访问时间,重新写入缓存.
...
@@ -56,7 +57,7 @@ public class SessionServiceImpl implements ISessionService {
...
@@ -56,7 +57,7 @@ public class SessionServiceImpl implements ISessionService {
* @return
* @return
*/
*/
@Override
@Override
public
AuthBean
createSession
(
User
user
,
LoginProperties
properties
)
{
public
AuthBean
createSession
(
User
user
,
LoginProperties
properties
,
int
loginType
)
{
//找到用户
//找到用户
//TODO: 使用userId
//TODO: 使用userId
String
sessionId
=
findSessionIdByUserIdLoginProperties
(
user
.
getId
(),
properties
);
String
sessionId
=
findSessionIdByUserIdLoginProperties
(
user
.
getId
(),
properties
);
...
@@ -82,7 +83,7 @@ public class SessionServiceImpl implements ISessionService {
...
@@ -82,7 +83,7 @@ public class SessionServiceImpl implements ISessionService {
log
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}"
,
properties
.
getCreatedFrom
(),
user
.
getPhoneNo
(),
properties
.
getAppChannel
(),
properties
.
getChannelId
());
log
.
info
(
"用户登录成功, loginFrom:{}, phoneNo:{},appChannel:{},channelId:{}"
,
properties
.
getCreatedFrom
(),
user
.
getPhoneNo
(),
properties
.
getAppChannel
(),
properties
.
getChannelId
());
// 添加登陆日志
// 添加登陆日志
loginRecordService
.
saveLoginRecord
(
user
.
getId
(),
RecordType
.
LOGINRECORD
.
getName
());
loginRecordService
.
saveLoginRecord
(
user
.
getId
(),
RecordType
.
LOGINRECORD
.
getName
()
,
loginType
);
return
authBean
;
return
authBean
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/service/user/ILoginRecordService.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
import
cn.quantgroup.user.enums.RecordType
;
import
cn.quantgroup.xyqb.controller.internal.user.resp.UserFullResp
;
import
cn.quantgroup.xyqb.entity.LoginRecord
;
import
cn.quantgroup.xyqb.entity.LoginRecord
;
import
cn.quantgroup.xyqb.entity.Merchant
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
cn.quantgroup.xyqb.model.UserInfo
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* Created by Miraculous on 15/7/5.
* Created by Miraculous on 15/7/5.
*/
*/
public
interface
ILoginRecordService
{
public
interface
ILoginRecordService
{
void
saveLoginRecord
(
Long
id
,
String
name
);
LoginRecord
findFirstLoginRecord
(
String
deviceId
);
LoginRecord
findFirstLoginRecord
(
String
deviceId
);
void
saveLoginRecord
(
Long
id
,
String
name
,
int
loginType
);
}
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/LoginRecordServiceImpl.java
View file @
f1ad8b38
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
import
cn.quantgroup.tech.db.DSType
;
import
cn.quantgroup.user.enums.RecordType
;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.user.enums.BizType
;
import
cn.quantgroup.user.enums.IncomeRangeEnum
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.internal.user.resp.UserFullResp
;
import
cn.quantgroup.xyqb.entity.LoginRecord
;
import
cn.quantgroup.xyqb.entity.*
;
import
cn.quantgroup.xyqb.repository.ILoginRecordRepository
;
import
cn.quantgroup.xyqb.event.PhoneNoUpdateEvent
;
import
cn.quantgroup.xyqb.service.user.ILoginRecordService
;
import
cn.quantgroup.xyqb.exception.DataException
;
import
cn.quantgroup.xyqb.exception.UserNotExistException
;
import
cn.quantgroup.xyqb.exception.UserRegisterLoginException
;
import
cn.quantgroup.xyqb.model.*
;
import
cn.quantgroup.xyqb.repository.*
;
import
cn.quantgroup.xyqb.service.register.IUserDeregisterService
;
import
cn.quantgroup.xyqb.service.register.IUserRegisterService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.user.*
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.util.*
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.sensorsdata.analytics.javasdk.ISensorsAnalytics
;
import
com.sensorsdata.analytics.javasdk.bean.EventRecord
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Caching
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
/**
/**
* Created by Miraculous on 15/7/5.
* Created by Miraculous on 15/7/5.
...
@@ -56,11 +24,15 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl
...
@@ -56,11 +24,15 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl
private
ILoginRecordRepository
loginRecordRepository
;
private
ILoginRecordRepository
loginRecordRepository
;
@Override
@Override
public
void
saveLoginRecord
(
Long
userId
,
String
name
)
{
public
void
saveLoginRecord
(
Long
userId
,
String
name
,
int
loginType
)
{
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
LoginRecord
loginRecord
=
new
LoginRecord
();
LoginRecord
loginRecord
=
new
LoginRecord
();
loginRecord
.
setUserId
(
userId
);
loginRecord
.
setUserId
(
userId
);
loginRecord
.
setType
(
name
);
loginRecord
.
setType
(
name
);
// 如果登陆记录登陆方式
if
(
RecordType
.
LOGINRECORD
.
getName
().
equals
(
name
))
{
loginRecord
.
setLoginType
(
loginType
);
}
String
qgTenantId
=
request
.
getHeader
(
"qg-tenant-id"
);
String
qgTenantId
=
request
.
getHeader
(
"qg-tenant-id"
);
String
vccChannel
=
request
.
getHeader
(
"vccChannel"
);
String
vccChannel
=
request
.
getHeader
(
"vccChannel"
);
if
(
null
!=
qgTenantId
&&
!
""
.
equals
(
qgTenantId
))
{
if
(
null
!=
qgTenantId
&&
!
""
.
equals
(
qgTenantId
))
{
...
...
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
f1ad8b38
...
@@ -4,6 +4,7 @@ import cn.quantgroup.tech.db.DSType;
...
@@ -4,6 +4,7 @@ import cn.quantgroup.tech.db.DSType;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.user.enums.BizType
;
import
cn.quantgroup.user.enums.BizType
;
import
cn.quantgroup.user.enums.IncomeRangeEnum
;
import
cn.quantgroup.user.enums.IncomeRangeEnum
;
import
cn.quantgroup.user.enums.LoginType
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
...
@@ -429,7 +430,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
...
@@ -429,7 +430,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
geetestLogService
.
updateByUidGeetestLog
(
geetestLogId
,
user
.
getId
());
geetestLogService
.
updateByUidGeetestLog
(
geetestLogId
,
user
.
getId
());
}
}
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
3
,
channelId
,
createdFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
tenantId
);
LoginProperties
loginProperties
=
new
LoginProperties
(
""
,
3
,
channelId
,
createdFrom
,
appChannel
,
merchant
.
getId
(),
merchant
.
getName
(),
tenantId
);
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
);
AuthBean
session
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
()
);
session
.
setRegister
(
register
);
session
.
setRegister
(
register
);
lockIpv4Service
.
unLockPhone
(
phoneNo
);
lockIpv4Service
.
unLockPhone
(
phoneNo
);
return
new
JsonResult
(
session
);
return
new
JsonResult
(
session
);
...
...
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