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
c1430d93
Commit
c1430d93
authored
Nov 01, 2019
by
xiaoguang.xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加修改手机号接口.
parent
01111283
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
148 additions
and
17 deletions
+148
-17
CacheEvictPhoneNoUpdateEventListener.java
...roup/xyqb/event/CacheEvictPhoneNoUpdateEventListener.java
+25
-0
PhoneNoUpdateEvent.java
...ain/java/cn/quantgroup/xyqb/event/PhoneNoUpdateEvent.java
+30
-0
RecordPhoneNoUpdateEventListener.java
...antgroup/xyqb/event/RecordPhoneNoUpdateEventListener.java
+24
-0
UserDetailHashEventListener.java
...cn/quantgroup/xyqb/event/UserDetailHashEventListener.java
+7
-16
IUserService.java
...in/java/cn/quantgroup/xyqb/service/user/IUserService.java
+15
-0
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+47
-1
No files found.
src/main/java/cn/quantgroup/xyqb/event/CacheEvictPhoneNoUpdateEventListener.java
0 → 100644
View file @
c1430d93
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
CacheEvictPhoneNoUpdateEventListener
implements
ApplicationListener
<
PhoneNoUpdateEvent
>
{
@Autowired
private
IUserService
userService
;
@Override
public
void
onApplicationEvent
(
PhoneNoUpdateEvent
event
)
{
String
oldPhoneNo
=
event
.
getOldPhoneNo
();
User
user
=
event
.
getUser
();
userService
.
userCacheEvict
(
user
.
getUuid
(),
oldPhoneNo
);
//todo session 处理
}
}
src/main/java/cn/quantgroup/xyqb/event/PhoneNoUpdateEvent.java
0 → 100644
View file @
c1430d93
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.User
;
import
lombok.Getter
;
import
org.springframework.context.ApplicationEvent
;
/**
* @author 徐小光
*/
@Getter
public
class
PhoneNoUpdateEvent
extends
ApplicationEvent
{
private
User
user
;
private
String
oldPhoneNo
;
/**
* Create a new ApplicationEvent.
*
* @param source the object on which the event initially occurred (never {@code null})
*/
public
PhoneNoUpdateEvent
(
Object
source
)
{
super
(
source
);
}
public
PhoneNoUpdateEvent
(
Object
source
,
User
user
,
String
oldPhoneNo
)
{
super
(
source
);
this
.
user
=
user
;
this
.
oldPhoneNo
=
oldPhoneNo
;
}
}
src/main/java/cn/quantgroup/xyqb/event/RecordPhoneNoUpdateEventListener.java
0 → 100644
View file @
c1430d93
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.User
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
/**
* 记录手机号变更情况
*
* @author 徐小光
*/
@Slf4j
@Component
public
class
RecordPhoneNoUpdateEventListener
implements
ApplicationListener
<
PhoneNoUpdateEvent
>
{
@Override
public
void
onApplicationEvent
(
PhoneNoUpdateEvent
event
)
{
String
oldPhoneNo
=
event
.
getOldPhoneNo
();
User
user
=
event
.
getUser
();
//todo 表纪录
log
.
info
(
"userId:{},¬旧手机号:{},新手机号:{}"
,
user
.
getId
(),
oldPhoneNo
,
user
.
getPhoneNo
());
}
}
src/main/java/cn/quantgroup/xyqb/event/UserDetailHashEventListener.java
View file @
c1430d93
...
...
@@ -16,14 +16,13 @@ import javax.persistence.PersistenceException;
/**
* userDetail 更新时, 保存 hashMapping 数据
*/
@Component
@Slf4j
@Component
public
class
UserDetailHashEventListener
implements
ApplicationListener
<
UserDetailUpdateEvent
>
{
@Autowired
private
IUserHashMappingRepository
userHashMappingRepository
;
@Override
public
void
onApplicationEvent
(
UserDetailUpdateEvent
event
)
{
UserDetail
userDetail
=
event
.
getUserDetail
();
...
...
@@ -33,27 +32,19 @@ public class UserDetailHashEventListener implements ApplicationListener<UserDeta
//如果不存在, 我先保存一下
if
(
userHashMapping
==
null
)
{
userHashMapping
=
new
UserHashMapping
(
userDetail
.
getUserId
());
String
phoneNo
=
userDetail
.
getPhoneNo
();
userHashMapping
.
setPhoneNoMd5
(
MD5Util
.
build
(
phoneNo
));
}
String
idNoMd5
=
userHashMapping
.
getIdNoMd5
();
//可能存在手机号修改. 搞一下.
String
phoneNo
=
userDetail
.
getPhoneNo
();
userHashMapping
.
setPhoneNoMd5
(
MD5Util
.
build
(
phoneNo
));
//可能存在身份证号修改. 搞一下.
String
idNo
=
userDetail
.
getIdNo
().
toUpperCase
();
String
idNoMd5New
=
MD5Util
.
build
(
idNo
);
//新旧相同, 直接跳过
if
(
StringUtils
.
equals
(
idNoMd5
,
idNoMd5New
))
{
return
;
}
userHashMapping
.
setIdNoMd5
(
idNoMd5New
);
userHashMapping
.
setIdNoMd5
(
MD5Util
.
build
(
idNo
));
try
{
userHashMappingRepository
.
save
(
userHashMapping
);
}
catch
(
PersistenceException
e
){
}
catch
(
PersistenceException
e
)
{
log
.
error
(
"保存userHashMapping重复, 无需再保存, userId:{}"
,
userDetail
.
getUserId
());
}
}
}
src/main/java/cn/quantgroup/xyqb/service/user/IUserService.java
View file @
c1430d93
...
...
@@ -52,4 +52,19 @@ public interface IUserService {
List
<
UserInfo
>
findUserInfosByPhones
(
List
<
String
>
phones
);
User
findByMd5
(
Integer
type
,
String
md5Value
);
/**
* 修改手机号码.
* @param oldPhoneNo 旧手机号
* @param newPhoneNo 新手机号
* @return 返回用户信息
*/
User
modifyPhoneNo
(
String
oldPhoneNo
,
String
newPhoneNo
);
/**
* 删除这个用户相关缓存
* @param uuid 根据 uuid
* @param phoneNo 根据手机号
*/
void
userCacheEvict
(
String
uuid
,
String
phoneNo
);
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
c1430d93
...
...
@@ -4,6 +4,7 @@ import cn.quantgroup.xyqb.Constants;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserHashMapping
;
import
cn.quantgroup.xyqb.event.PhoneNoUpdateEvent
;
import
cn.quantgroup.xyqb.model.UserInfo
;
import
cn.quantgroup.xyqb.repository.IUserHashMappingRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
...
...
@@ -19,14 +20,18 @@ import org.apache.commons.lang.StringUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
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.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.sql.Timestamp
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -47,6 +52,9 @@ public class UserServiceImpl implements IUserService {
@Autowired
private
IUserDetailService
userDetailService
;
@Autowired
private
ApplicationEventPublisher
applicationEventPublisher
;
@Override
@Cacheable
(
value
=
"usercache"
,
key
=
"'xyqbuser' + #phone"
,
unless
=
"#result == null"
,
cacheManager
=
"cacheManager"
)
...
...
@@ -139,7 +147,6 @@ public class UserServiceImpl implements IUserService {
user
=
userRepository
.
save
(
user
);
stringRedisTemplate
.
expire
(
"usercache:xyqbuser"
+
phoneNo
,
1L
,
TimeUnit
.
MILLISECONDS
);
return
PasswordUtil
.
validatePassword
(
password
,
user
.
getPassword
());
}
@Override
...
...
@@ -200,4 +207,43 @@ public class UserServiceImpl implements IUserService {
return
userRepository
.
findById
(
userId
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
User
modifyPhoneNo
(
String
oldPhoneNo
,
String
newPhoneNo
)
{
//1. 判断新手机号是否存在
User
newPhoneUser
=
userRepository
.
findByPhoneNo
(
newPhoneNo
);
if
(
Objects
.
isNull
(
newPhoneUser
))
{
//新手机号已存在
return
null
;
}
User
oldPhoneUser
=
userRepository
.
findByPhoneNo
(
oldPhoneNo
);
if
(
Objects
.
isNull
(
oldPhoneUser
))
{
//这不是扯了.旧手机号也不存在.
return
null
;
}
//2. 执行修改
//2.1 修改 user 表
oldPhoneUser
.
setPhoneNo
(
newPhoneNo
);
User
user
=
userRepository
.
saveAndFlush
(
oldPhoneUser
);
//2.2 修改 user_detail 表
UserDetail
oldPhoneUserDetail
=
userDetailService
.
findByPhoneNo
(
oldPhoneNo
);
oldPhoneUserDetail
.
setPhoneNo
(
newPhoneNo
);
userDetailService
.
saveUserDetail
(
oldPhoneUserDetail
);
//3. 发送事件
PhoneNoUpdateEvent
phoneNoUpdateEvent
=
new
PhoneNoUpdateEvent
(
this
,
user
,
oldPhoneNo
);
applicationEventPublisher
.
publishEvent
(
phoneNoUpdateEvent
);
return
oldPhoneUser
;
}
@Override
@Caching
(
evict
=
{
@CacheEvict
(
value
=
"usercache"
,
key
=
"'xyqbuser' + #phoneNo"
,
cacheManager
=
"cacheManager"
),
@CacheEvict
(
value
=
"usercache"
,
key
=
"'xyqbuser' + #uuid"
,
cacheManager
=
"cacheManager"
)
})
public
void
userCacheEvict
(
String
uuid
,
String
phoneNo
)
{
log
.
info
(
"清理用户缓存成功,uuid:{},phoneNo:{}"
,
uuid
,
phoneNo
);
}
}
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