Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
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
段启岩
beyond-clouds
Commits
0f729c81
Commit
0f729c81
authored
Feb 15, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户昵称自动生成
parent
c5439361
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
115 additions
and
3 deletions
+115
-3
src/main/java/cn/meteor/beyondclouds/core/generator/Generator.java
+13
-0
src/main/java/cn/meteor/beyondclouds/core/redis/RedisKey.java
+4
-0
src/main/java/cn/meteor/beyondclouds/modules/user/generator/UserNickGenerator.java
+88
-0
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserServiceImpl.java
+10
-3
No files found.
src/main/java/cn/meteor/beyondclouds/core/generator/Generator.java
0 → 100644
View file @
0f729c81
package
cn
.
meteor
.
beyondclouds
.
core
.
generator
;
/**
* 生成器接口
* @author meteor
*/
public
interface
Generator
<
T
>
{
/**
* 获取下一个生产的对象
* @return
*/
T
next
();
}
src/main/java/cn/meteor/beyondclouds/core/redis/RedisKey.java
View file @
0f729c81
...
...
@@ -77,4 +77,8 @@ public final class RedisKey {
public
static
String
IP_FILED_LATEST_VISIT_TIME
(
String
ipAddress
,
ParamType
paramType
,
String
paramValue
)
{
return
"IP_FILED_LATEST_VISIT_TIME:"
+
ipAddress
+
":"
+
paramType
.
name
()
+
":"
+
paramValue
;
}
public
static
String
USER_NICK_GEN
(
String
datePrefix
)
{
return
"USER_NICK_GEN:"
+
datePrefix
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/user/generator/UserNickGenerator.java
0 → 100644
View file @
0f729c81
package
cn
.
meteor
.
beyondclouds
.
modules
.
user
.
generator
;
import
cn.meteor.beyondclouds.common.helper.IRedisHelper
;
import
cn.meteor.beyondclouds.core.generator.Generator
;
import
cn.meteor.beyondclouds.core.lock.RedisLockFactory
;
import
cn.meteor.beyondclouds.core.redis.RedisKey
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.concurrent.locks.Lock
;
/**
* 用户昵称生成器
* @author meteor
*/
@Component
public
class
UserNickGenerator
implements
Generator
<
String
>
{
private
static
final
String
NICK_PREFIX
=
"y"
;
private
IUserService
userService
;
private
IRedisHelper
redisHelper
;
private
RedisLockFactory
redisLockFactory
;
@Autowired
public
UserNickGenerator
(
IUserService
userService
,
IRedisHelper
redisHelper
,
RedisLockFactory
redisLockFactory
)
{
this
.
userService
=
userService
;
this
.
redisHelper
=
redisHelper
;
this
.
redisLockFactory
=
redisLockFactory
;
}
@Override
public
String
next
()
{
boolean
repeat
;
String
nickName
;
do
{
nickName
=
generateNickName
();
QueryWrapper
<
User
>
userQueryWrapper
=
new
QueryWrapper
<>();
userQueryWrapper
.
eq
(
"nick_name"
,
nickName
);
userService
.
list
(
userQueryWrapper
);
if
(
userService
.
list
(
userQueryWrapper
).
size
()
>
0
)
{
repeat
=
true
;
}
else
{
repeat
=
false
;
}
}
while
(
repeat
);
return
nickName
;
}
private
String
generateNickName
()
{
LocalDateTime
localDateTime
=
LocalDateTime
.
now
();
int
year
=
localDateTime
.
getYear
();
year
=
year
%
10
;
int
month
=
localDateTime
.
getMonthValue
();
int
day
=
localDateTime
.
getMonthValue
();
String
datePrefix
=
String
.
format
(
"%d%d%d"
,
year
,
month
,
day
);
datePrefix
.
replaceAll
(
"0"
,
""
);
int
count
=
getAndIncreaseNickCount
(
datePrefix
);
return
NICK_PREFIX
+
datePrefix
+
count
;
}
/**
* @param datePrefix
* @return
*/
private
int
getAndIncreaseNickCount
(
String
datePrefix
)
{
Lock
lock
=
redisLockFactory
.
createLock
(
datePrefix
);
// 获取redis锁
while
(!
lock
.
tryLock
())
{};
Integer
count
=
redisHelper
.
get
(
RedisKey
.
USER_NICK_GEN
(
datePrefix
),
Integer
.
class
);
if
(
null
==
count
)
{
count
=
1
;
redisHelper
.
set
(
RedisKey
.
USER_NICK_GEN
(
datePrefix
),
1
);
}
else
{
redisHelper
.
set
(
RedisKey
.
USER_NICK_GEN
(
datePrefix
),
count
+
1
);
}
// 释放锁
lock
.
unlock
();
return
count
;
}
}
src/main/java/cn/meteor/beyondclouds/modules/user/service/impl/UserServiceImpl.java
View file @
0f729c81
...
...
@@ -5,6 +5,7 @@ import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO;
import
cn.meteor.beyondclouds.common.exception.OssException
;
import
cn.meteor.beyondclouds.common.helper.IOssHelper
;
import
cn.meteor.beyondclouds.common.helper.IRedisHelper
;
import
cn.meteor.beyondclouds.core.generator.Generator
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemType
;
import
cn.meteor.beyondclouds.core.redis.RedisKey
;
...
...
@@ -23,6 +24,7 @@ import cn.meteor.beyondclouds.modules.user.enums.AuthStatus;
import
cn.meteor.beyondclouds.modules.user.enums.ThirdPartyAppType
;
import
cn.meteor.beyondclouds.modules.user.enums.UserErrorCode
;
import
cn.meteor.beyondclouds.modules.user.exception.UserServiceException
;
import
cn.meteor.beyondclouds.modules.user.generator.UserNickGenerator
;
import
cn.meteor.beyondclouds.modules.user.mapper.UserMapper
;
import
cn.meteor.beyondclouds.modules.user.service.*
;
import
cn.meteor.beyondclouds.util.*
;
...
...
@@ -58,7 +60,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
private
IMailService
mailService
;
private
IUserStatisticsService
userStatisticsService
;
private
UserMapper
userMapper
;
private
UserNickGenerator
userNickGenerator
;
private
IUserFollowService
userFollowService
;
private
IMessageQueueService
messageQueueService
;
...
...
@@ -71,6 +73,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}
@Autowired
public
void
setUserNickGenerator
(
UserNickGenerator
userNickGenerator
)
{
this
.
userNickGenerator
=
userNickGenerator
;
}
@Autowired
public
void
setOssHelper
(
IOssHelper
ossHelper
)
{
this
.
ossHelper
=
ossHelper
;
}
...
...
@@ -124,7 +131,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}
//3. 创建用户
User
user
=
new
User
();
user
.
setNickName
(
"昵称"
);
user
.
setNickName
(
userNickGenerator
.
next
()
);
user
.
setSignature
(
"该用户很懒,还没设置签名"
);
user
.
setUserAvatar
(
avatar
);
user
.
setMobile
(
mobile
);
...
...
@@ -179,7 +186,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
//3. 创建用户
User
user
=
new
User
();
user
.
setNickName
(
"昵称"
);
user
.
setNickName
(
userNickGenerator
.
next
()
);
user
.
setSignature
(
"默认签名"
);
user
.
setUserAvatar
(
avatar
);
user
.
setEmail
(
email
);
...
...
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