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
db9b88d2
Commit
db9b88d2
authored
Jul 27, 2023
by
王亮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed an issues.
parent
9939b6e0
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
31 additions
and
35 deletions
+31
-35
UserLoginEvent.java
src/main/java/cn/quantgroup/xyqb/event/UserLoginEvent.java
+11
-4
UserTagLoginEventListener.java
...a/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
+4
-16
LoginBean.java
src/main/java/cn/quantgroup/xyqb/model/LoginBean.java
+6
-1
LoginContext.java
...main/java/cn/quantgroup/xyqb/service/v2/LoginContext.java
+2
-5
SMSDirectJiLoginStrategy.java
.../quantgroup/xyqb/service/v2/SMSDirectJiLoginStrategy.java
+2
-1
WechatMiniPhoneLoginStrategy.java
...ntgroup/xyqb/service/v2/WechatMiniPhoneLoginStrategy.java
+6
-8
No files found.
src/main/java/cn/quantgroup/xyqb/event/UserLoginEvent.java
View file @
db9b88d2
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.model.LoginBean
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.context.ApplicationEvent
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author :hongzhi
...
...
@@ -19,6 +15,10 @@ public class UserLoginEvent extends ApplicationEvent {
private
UserTag
userTag
;
private
String
geetestId
;
/**
* 是否首次注册新用户
*/
private
boolean
register
=
false
;
public
UserLoginEvent
(
Object
source
)
{
super
(
source
);
...
...
@@ -33,4 +33,11 @@ public class UserLoginEvent extends ApplicationEvent {
this
.
userTag
=
userTag
;
this
.
geetestId
=
geetestId
;
}
public
UserLoginEvent
(
Object
source
,
UserTag
userTag
,
String
geetestId
,
boolean
register
)
{
super
(
source
);
this
.
userTag
=
userTag
;
this
.
geetestId
=
geetestId
;
this
.
register
=
register
;
}
}
src/main/java/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
View file @
db9b88d2
...
...
@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.entity.User;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.repository.IUserTagRepository
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.util.RedisLock
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -63,22 +62,11 @@ public class UserTagLoginEventListener implements ApplicationListener<UserLoginE
User
user
=
userService
.
findById
(
preTag
.
getUserId
(),
preTag
.
getTenantId
());
//补签合同,如果需要补签
String
lockKey
=
"user:signcontrac:"
.
concat
(
user
.
getId
().
toString
());
RedisLock
lock
=
new
RedisLock
(
redisTemplate
,
lockKey
);
try
{
if
(
lock
.
lock
())
{
//补签合同,如果需要补签 BlackHoleRegisteredEventListener 签署注册和隐私协议
//此处补签,对于合同中心,可能会重新签署,后续待合同中心处理并发问题或者重复签署逻辑
//Thread.sleep(2000);
userService
.
channelUserSignContract
(
user
,
userTag
.
getRegisteredFrom
(),
userTag
.
getTenantId
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"补签合同异常:事件:{},异常:{}"
,
JSONObject
.
toJSONString
(
userLoginEvent
),
e
.
getMessage
(),
e
);
}
finally
{
lock
.
unlock
();
//只有非首次登录才需要补签
if
(!
userLoginEvent
.
isRegister
()){
userService
.
channelUserSignContract
(
user
,
userTag
.
getRegisteredFrom
(),
userTag
.
getTenantId
());
}
}
}
}
src/main/java/cn/quantgroup/xyqb/model/LoginBean.java
View file @
db9b88d2
...
...
@@ -5,11 +5,16 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
LoginBean
extends
AuthBean
{
public
class
LoginBean
extends
AuthBean
{
private
Long
userId
;
private
String
openId
;
private
String
unionId
;
private
UserInfo
info
;
private
Integer
tenantId
;
/**
* 是否首次注册新用户
*/
private
boolean
register
=
false
;
}
src/main/java/cn/quantgroup/xyqb/service/v2/LoginContext.java
View file @
db9b88d2
...
...
@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.controller.req.v2.LoginReq;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserInfoEntity
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.entity.WechatUserInfo
;
import
cn.quantgroup.xyqb.event.UserLoginEvent
;
import
cn.quantgroup.xyqb.exception.BizException
;
import
cn.quantgroup.xyqb.exception.BizExceptionEnum
;
...
...
@@ -14,9 +13,7 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
import
cn.quantgroup.xyqb.model.v2.login.BaseLoginParam
;
import
cn.quantgroup.xyqb.repository.IUserInfoRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Service
;
...
...
@@ -35,7 +32,7 @@ public class LoginContext {
private
final
Map
<
Integer
,
LoginStrategy
>
interloginStrategyMap
=
new
HashMap
<>();
public
LoginContext
(
List
<
LoginStrategy
>
loginStrategies
,
ApplicationEventPublisher
applicationEventPublisher
,
I
WechatService
wechatService
,
I
UserRepository
userRepository
,
IUserInfoRepository
userInfoRepository
)
{
public
LoginContext
(
List
<
LoginStrategy
>
loginStrategies
,
ApplicationEventPublisher
applicationEventPublisher
,
IUserRepository
userRepository
,
IUserInfoRepository
userInfoRepository
)
{
this
.
applicationEventPublisher
=
applicationEventPublisher
;
this
.
userRepository
=
userRepository
;
this
.
userInfoRepository
=
userInfoRepository
;
...
...
@@ -80,7 +77,7 @@ public class LoginContext {
geetestId
=
sessionStruct
.
getGeetestId
();
}
UserLoginEvent
userLoginEvent
=
new
UserLoginEvent
(
this
,
userTag
,
geetestId
);
UserLoginEvent
userLoginEvent
=
new
UserLoginEvent
(
this
,
userTag
,
geetestId
,
loginBean
.
getRegister
()
);
applicationEventPublisher
.
publishEvent
(
userLoginEvent
);
...
...
src/main/java/cn/quantgroup/xyqb/service/v2/SMSDirectJiLoginStrategy.java
View file @
db9b88d2
...
...
@@ -78,6 +78,7 @@ public class SMSDirectJiLoginStrategy implements LoginStrategy {
smsLoginParam
.
setPhone
(
jiGuangResponseParam
.
getPhone
());
}
LoginBean
loginBean
=
new
LoginBean
();
User
user
=
userService
.
findByPhoneWithCache
(
smsLoginParam
.
getPhone
(),
sessionStruct
.
getTenantId
());
//需要返回用户是否首次注册
...
...
@@ -89,6 +90,7 @@ public class SMSDirectJiLoginStrategy implements LoginStrategy {
//用户用户为空,则注册一个新用户
if
(
user
==
null
)
{
user
=
userRegisterService
.
register
(
sessionStruct
.
getRegisteredFrom
(),
smsLoginParam
.
getPhone
(),
sessionStruct
.
getTenantId
());
loginBean
.
setRegister
(
true
);
}
}
...
...
@@ -124,7 +126,6 @@ public class SMSDirectJiLoginStrategy implements LoginStrategy {
LoginProperties
loginProperties
=
new
LoginProperties
(
1
,
sessionStruct
.
getRegisteredFrom
(),
sessionStruct
.
getTenantId
());
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
AUTHLOGIN
.
ordinal
(),
sessionStruct
.
getTenantId
(),
false
);
LoginBean
loginBean
=
new
LoginBean
();
if
(
authBean
!=
null
)
{
loginBean
.
setToken
(
authBean
.
getToken
());
loginBean
.
setPhoneNo
(
authBean
.
getPhoneNo
());
...
...
src/main/java/cn/quantgroup/xyqb/service/v2/WechatMiniPhoneLoginStrategy.java
View file @
db9b88d2
...
...
@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.service.v2;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.config.data.WechatConfiguration
;
import
cn.quantgroup.xyqb.constant.UserConstant
;
import
cn.quantgroup.xyqb.constant.enums.LoginType
;
import
cn.quantgroup.xyqb.controller.req.v2.LoginReq
;
import
cn.quantgroup.xyqb.entity.User
;
...
...
@@ -21,9 +20,7 @@ import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import
cn.quantgroup.xyqb.service.register.IUserRegisterService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
cn.quantgroup.xyqb.util.StringUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -107,12 +104,13 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
boolean
register
=
false
;
User
user
;
phoneParam
.
put
(
"code"
,
loginParam
.
getPhoneCode
());
AccessTokenResponse
accessTokenResponse
=
JSON
.
parseObject
(
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
sessionStruct
.
getTenantId
()+
":"
+
loginParam
.
getAppId
()),
AccessTokenResponse
.
class
);
if
(
Objects
.
isNull
(
accessTokenResponse
))
{
throw
new
BizException
(
BizExceptionEnum
.
EXPIRE_WECHAT_TOKEN
);
AccessTokenResponse
accessTokenResponse
=
JSON
.
parseObject
(
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
sessionStruct
.
getTenantId
()
+
":"
+
loginParam
.
getAppId
()),
AccessTokenResponse
.
class
);
if
(
Objects
.
isNull
(
accessTokenResponse
))
{
throw
new
BizException
(
BizExceptionEnum
.
EXPIRE_WECHAT_TOKEN
);
}
WechatPhoneBean
wechatPhoneBean
=
wechatRemoteService
.
getUserPhoneNumber
(
accessTokenResponse
.
getAccessToken
(),
phoneParam
);
LoginBean
loginBean
=
new
LoginBean
();
if
(
wechatPhoneBean
.
getErrcode
()
==
0
)
{
//1、查询库中是否存在用户
...
...
@@ -120,6 +118,7 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
//2、如果没有用户,新建一条
if
(
user
==
null
)
{
user
=
userRegisterService
.
register
(
sessionStruct
.
getRegisteredFrom
(),
wechatPhoneBean
.
getPhone_info
().
getPurePhoneNumber
(),
sessionStruct
.
getTenantId
());
loginBean
.
setRegister
(
true
);
}
if
(
user
==
null
)
{
throw
new
BizException
(
BizExceptionEnum
.
UN_EXIT_USER
);
...
...
@@ -146,8 +145,7 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
}
LoginProperties
loginProperties
=
new
LoginProperties
(
1
,
sessionStruct
.
getRegisteredFrom
(),
sessionStruct
.
getTenantId
());
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
(),
sessionStruct
.
getTenantId
(),
false
);
LoginBean
loginBean
=
new
LoginBean
();
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
WECHATLOGIN
.
ordinal
(),
sessionStruct
.
getTenantId
(),
false
);
loginBean
.
setOpenId
(
openid
);
loginBean
.
setUnionId
(
unionId
);
if
(
authBean
!=
null
)
{
...
...
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