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
a7bbd26c
Commit
a7bbd26c
authored
Jul 04, 2023
by
王亮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
log user tag(create session and save user)
parent
6cfd9390
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
175 additions
and
49 deletions
+175
-49
update-20230630.sql
doc/sql/update-20230630.sql
+3
-0
AutoConfiguration.java
...ain/java/cn/quantgroup/xyqb/config/AutoConfiguration.java
+18
-0
UserController.java
...n/quantgroup/xyqb/controller/external/UserController.java
+1
-0
UserTag.java
src/main/java/cn/quantgroup/xyqb/entity/UserTag.java
+27
-0
UserLoginEvent.java
src/main/java/cn/quantgroup/xyqb/event/UserLoginEvent.java
+19
-18
UserTagLoginEventListener.java
...a/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
+42
-0
IUserTagRepository.java
...ava/cn/quantgroup/xyqb/repository/IUserTagRepository.java
+11
-0
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+11
-0
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+43
-31
No files found.
doc/sql/update-20230630.sql
View file @
a7bbd26c
...
...
@@ -50,8 +50,11 @@ CREATE TABLE `xyqb_user`.`user_tag` (
`id`
BIGINT
(
20
)
NOT
NULL
AUTO_INCREMENT
,
`user_id`
BIGINT
(
20
)
NOT
NULL
COMMENT
'用户表id'
,
`registered_from`
BIGINT
(
20
)
NULL
COMMENT
'来源(之前字段)'
,
`tenant_id`
INT
NOT
NULL
COMMENT
'租户id'
,
`created_at`
TIMESTAMP
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
TIMESTAMP
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
UNIQUE
`udx_user_id`
(
`user_id`
ASC
),
INDEX
`idx_user_phone`
(
`registered_from`
ASC
),
PRIMARY
KEY
(
`id`
));
...
...
src/main/java/cn/quantgroup/xyqb/config/AutoConfiguration.java
View file @
a7bbd26c
...
...
@@ -3,13 +3,19 @@ package cn.quantgroup.xyqb.config;
import
cn.quantgroup.xyqb.util.DefaultSequencer
;
import
cn.quantgroup.xyqb.util.IdentitySequencer
;
import
cn.quantgroup.xyqb.util.ServerUtils
;
import
com.sensorsdata.analytics.javasdk.ISensorsAnalytics
;
import
com.sensorsdata.analytics.javasdk.SensorsAnalytics
;
import
com.sensorsdata.analytics.javasdk.consumer.BatchConsumer
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
import
java.io.IOException
;
/**
* Created by hechao on 2020/1/22.
*/
...
...
@@ -38,4 +44,16 @@ public class AutoConfiguration {
return
new
DefaultSequencer
(
workId
,
sequencerProperties
);
}
}
@Value
(
"${sc.url}"
)
private
String
dataUrl
;
@Bean
(
destroyMethod
=
"shutdown"
)
public
ISensorsAnalytics
init
()
throws
IOException
{
// //本地日志模式(此模式会在指定路径生成相应的日志文件)
// return new SensorsAnalytics(new ConcurrentLoggingConsumer("/Users/hongzhi/scEvent/"));
//网络批量发送模式(此模式在容器关闭的时候,如果存在数据还没有发送完毕,就会丢失未发送的数据!!!)
return
new
SensorsAnalytics
(
new
BatchConsumer
(
dataUrl
));
}
}
\ No newline at end of file
src/main/java/cn/quantgroup/xyqb/controller/external/UserController.java
View file @
a7bbd26c
...
...
@@ -800,6 +800,7 @@ public class UserController implements IBaseController {
if
(
geetestLogId
!=
null
)
{
geetestLogService
.
updateByUidGeetestLog
(
geetestLogId
,
user
.
getId
());
}
//更新session
return
new
JsonResult
(
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
(),
tenantId
));
}
...
...
src/main/java/cn/quantgroup/xyqb/entity/UserTag.java
0 → 100644
View file @
a7bbd26c
package
cn
.
quantgroup
.
xyqb
.
entity
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@Entity
@Table
(
name
=
"user_tag"
)
@Builder
public
class
UserTag
extends
BaseEntity
implements
Serializable
{
@Column
(
name
=
"user_id"
)
private
Long
userId
;
//第一次用户来源 channel_id
@Column
(
name
=
"registered_from"
)
private
Long
registeredFrom
;
@Column
(
name
=
"tenant_id"
)
private
Integer
tenantId
;
}
src/main/java/cn/quantgroup/xyqb/event/UserLoginEvent.java
View file @
a7bbd26c
package
cn
.
quantgroup
.
xyqb
.
event
;
import
com.sensorsdata.analytics.javasdk.ISensorsAnalytics
;
import
com.sensorsdata.analytics.javasdk.SensorsAnalytics
;
import
com.sensorsdata.analytics.javasdk.consumer.BatchConsumer
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.context.ApplicationEvent
;
import
org.springframework.context.annotation.Configuration
;
import
java.io.IOException
;
/**
* @author :hongzhi
*/
@Configuration
public
class
UserLoginEvent
{
@Value
(
"${sc.url}"
)
private
String
dataUrl
;
@Bean
(
destroyMethod
=
"shutdown"
)
public
ISensorsAnalytics
init
()
throws
IOException
{
// //本地日志模式(此模式会在指定路径生成相应的日志文件)
// return new SensorsAnalytics(new ConcurrentLoggingConsumer("/Users/hongzhi/scEvent/"));
//网络批量发送模式(此模式在容器关闭的时候,如果存在数据还没有发送完毕,就会丢失未发送的数据!!!)
return
new
SensorsAnalytics
(
new
BatchConsumer
(
dataUrl
));
}
@Getter
@Setter
public
class
UserLoginEvent
extends
ApplicationEvent
{
private
UserTag
userTag
;
public
UserLoginEvent
(
Object
source
)
{
super
(
source
);
}
public
UserLoginEvent
(
Object
source
,
UserTag
userTag
)
{
super
(
source
);
this
.
userTag
=
userTag
;
}
}
src/main/java/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
0 → 100644
View file @
a7bbd26c
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.repository.IUserTagRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
/**
* user_tag表,用来监听
*/
@Component
public
class
UserTagLoginEventListener
implements
ApplicationListener
<
UserLoginEvent
>
{
@Autowired
private
IUserTagRepository
userTagRepository
;
/**
* 逻辑 每次登录发送UserLoginEvent,落user_tag表
* 如果没有就新增,如果有就更新
* @param userLoginEvent UserLoginEvent
*/
@Override
public
void
onApplicationEvent
(
UserLoginEvent
userLoginEvent
)
{
if
(
userLoginEvent
.
getUserTag
()
!=
null
)
{
UserTag
userTag
=
userLoginEvent
.
getUserTag
();
UserTag
preTag
=
userTagRepository
.
findByUserIdAndTenantId
(
userTag
.
getUserId
(),
userTag
.
getTenantId
());
if
(
preTag
==
null
)
{
preTag
=
userTag
;
}
preTag
.
setCreatedAt
(
LocalDateTime
.
now
());
preTag
.
setUpdatedAt
(
LocalDateTime
.
now
());
userTagRepository
.
save
(
preTag
);
}
}
}
src/main/java/cn/quantgroup/xyqb/repository/IUserTagRepository.java
0 → 100644
View file @
a7bbd26c
package
cn
.
quantgroup
.
xyqb
.
repository
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
public
interface
IUserTagRepository
extends
JpaRepository
<
UserTag
,
Long
>,
JpaSpecificationExecutor
<
UserTag
>
{
UserTag
findByUserIdAndTenantId
(
Long
userId
,
Integer
tenantId
);
void
deleteByUserIdAndTenantId
(
Long
userId
,
Integer
tenantId
);
}
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
View file @
a7bbd26c
...
...
@@ -3,6 +3,8 @@ package cn.quantgroup.xyqb.service.session.impl;
import
cn.quantgroup.xyqb.constant.enums.RecordType
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.event.UserLoginEvent
;
import
cn.quantgroup.xyqb.model.AuthBean
;
import
cn.quantgroup.xyqb.model.LoginProperties
;
import
cn.quantgroup.xyqb.model.UserStatistics
;
...
...
@@ -17,9 +19,11 @@ import com.alibaba.fastjson.JSON;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
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.util.CollectionUtils
;
...
...
@@ -47,6 +51,9 @@ public class SessionServiceImpl implements ISessionService {
@Value
(
"${token.prefix}"
)
private
String
prefix
;
@Autowired
private
ApplicationEventPublisher
applicationEventPublisher
;
/**
* 更新session
...
...
@@ -85,6 +92,10 @@ public class SessionServiceImpl implements ISessionService {
// 添加登陆日志
loginRecordService
.
saveLoginRecord
(
user
.
getId
(),
RecordType
.
LOGINRECORD
.
getName
(),
loginType
);
//更新user_tag记录
applicationEventPublisher
.
publishEvent
(
new
UserLoginEvent
(
this
,
UserTag
.
builder
()
.
userId
(
user
.
getId
()).
registeredFrom
(
user
.
getRegisteredFrom
()).
tenantId
(
user
.
getTenantId
()).
build
()));
return
authBean
;
}
...
...
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
a7bbd26c
This diff is collapsed.
Click to expand it.
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