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
272a6472
Commit
272a6472
authored
Oct 17, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加两个接口:1、根据用户主键批量获取用户实名信息;2、根据手机号或身份证号查询用户UUID
parent
62efa1b3
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
157 additions
and
11 deletions
+157
-11
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+19
-0
SyncUserController.java
...oup/xyqb/controller/external/user/SyncUserController.java
+36
-11
IUserRepository.java
...n/java/cn/quantgroup/xyqb/repository/IUserRepository.java
+16
-0
IUserService.java
...in/java/cn/quantgroup/xyqb/service/user/IUserService.java
+8
-0
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+14
-0
ValidationUtil.java
src/main/java/cn/quantgroup/xyqb/util/ValidationUtil.java
+31
-0
TestJdk8.java
src/test/java/common/TestJdk8.java
+33
-0
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
272a6472
...
...
@@ -38,6 +38,7 @@ import cn.quantgroup.tech.db.DSType;
import
cn.quantgroup.tech.db.TargetDataSource
;
import
cn.quantgroup.user.enums.Relation
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.entity.*
;
import
cn.quantgroup.xyqb.entity.enumerate.*
;
...
...
@@ -104,6 +105,24 @@ public class InnerController implements IBaseController {
'x'
,
'y'
,
'z'
,
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
};
/**
* 根据手机号或身份证号查询用户UUID
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @return user表的uuid
*/
@IpValidator
@RequestMapping
(
"/fetchUuid"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"根据手机号或身份证号查询用户UUID"
)
public
JsonResult
fetchUuid
(
String
phoneNo
,
String
idNo
)
{
String
uuid
=
userService
.
findUuid
(
phoneNo
,
idNo
);
log
.
info
(
"根据手机号或身份证号查询用户UUID,phoneNo:{},idNo:{},uuid:{}"
,
phoneNo
,
idNo
,
uuid
);
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isBlank
(
uuid
))
{
return
JsonResult
.
buildErrorStateResult
(
"未找到该用户"
,
null
);
}
return
JsonResult
.
buildSuccessResult
(
null
,
uuid
);
}
@RequestMapping
(
"/user/search/phoneNo"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据手机号查询用户信息"
)
public
JsonResult
findByPhoneNo
(
String
phoneNo
)
{
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/user/SyncUserController.java
View file @
272a6472
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
.
user
;
import
java.sql.Timestamp
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
cn.quantgroup.xyqb.aspect.accessable.IpValidator
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.model.IdCardInfo
;
...
...
@@ -11,17 +29,6 @@ import cn.quantgroup.xyqb.service.user.IUserDetailService;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
cn.quantgroup.xyqb.validator.ChineseName
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.sql.Timestamp
;
import
java.util.Objects
;
/**
* 同步用户数据,第三方模块访问时
...
...
@@ -130,4 +137,22 @@ public class SyncUserController {
UserModel
userModel
=
new
UserModel
(
user
,
detail
);
return
JsonResult
.
buildSuccessResult
(
null
,
userModel
);
}
/**
* 根据用户主键批量获取用户实名信息
* @param userIds - 多个之间用英文,分隔
* @return List<UserDetail>
*/
@IpValidator
@RequestMapping
(
"/listByUserIds"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"根据用户主键批量获取用户实名信息"
)
public
JsonResult
listByUserIds
(
String
userIds
)
{
if
(!
ValidationUtil
.
validateNumbers
(
userIds
))
{
return
JsonResult
.
buildErrorStateResult
(
"参数不正确"
,
null
);
}
userIds
=
ValidationUtil
.
filterNumbers
(
userIds
);
List
<
Long
>
userIdList
=
Arrays
.
asList
(
userIds
.
split
(
",|;"
)).
stream
().
map
(
userId
->
Long
.
valueOf
(
userId
)).
collect
(
Collectors
.
toList
());
List
<
UserDetail
>
userDetailList
=
userDetailService
.
findByUserIdIn
(
userIdList
);
return
JsonResult
.
buildSuccessResult
(
null
,
userDetailList
);
}
}
src/main/java/cn/quantgroup/xyqb/repository/IUserRepository.java
View file @
272a6472
...
...
@@ -20,6 +20,22 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
User
findByUuid
(
String
uuid
);
/**
* 根据手机号查询用户UUID
* @param phoneNo - 手机号
* @return user表的uuid
*/
@Query
(
value
=
"select uuid from user where phone_no=?1"
,
nativeQuery
=
true
)
String
findUuidByPhoneNo
(
String
phoneNo
);
/**
* 根据身份证号查询用户UUID
* @param idNo - 身份证号
* @return user表的uuid
*/
@Query
(
value
=
"select uuid from user where id=(select user_id from user_detail where id_no=?1) "
,
nativeQuery
=
true
)
String
findUuidByIdNo
(
String
idNo
);
List
<
User
>
findByIdIn
(
List
<
Long
>
ids
);
User
findById
(
Long
id
);
...
...
src/main/java/cn/quantgroup/xyqb/service/user/IUserService.java
View file @
272a6472
...
...
@@ -23,6 +23,14 @@ public interface IUserService {
User
findByUuidInDb
(
String
uuid
);
/**
* 根据手机号或身份证号查询用户UUID
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @return user表的uuid
*/
String
findUuid
(
String
phoneNo
,
String
idNo
);
Map
<
Long
,
String
>
findPhoneByIdsInDb
(
List
<
Long
>
userIds
);
User
saveUser
(
User
user
);
...
...
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
272a6472
...
...
@@ -27,6 +27,7 @@ import cn.quantgroup.xyqb.repository.IUserRepository;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
/**
* Created by Miraculous on 15/7/5.
...
...
@@ -65,6 +66,19 @@ public class UserServiceImpl implements IUserService {
return
userRepository
.
findByUuid
(
uuid
);
}
@Override
public
String
findUuid
(
String
phoneNo
,
String
idNo
)
{
// 优先按手机号查
if
(
ValidationUtil
.
validatePhoneNo
(
phoneNo
)){
return
userRepository
.
findUuidByPhoneNo
(
phoneNo
);
}
// 按身份证号查
if
(
StringUtils
.
isNotBlank
(
idNo
)){
return
userRepository
.
findUuidByIdNo
(
idNo
);
}
return
null
;
}
@Override
@CacheEvict
(
value
=
"usercache"
,
key
=
"'xyqbuser' + #user.phoneNo"
,
cacheManager
=
"cacheManager"
)
public
User
saveUser
(
User
user
)
{
...
...
src/main/java/cn/quantgroup/xyqb/util/ValidationUtil.java
View file @
272a6472
...
...
@@ -25,6 +25,9 @@ public class ValidationUtil {
private
static
final
String
ipv4RegExp
=
"^((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)$"
;
private
static
final
String
localIpv4RegExp
=
"^((172\\.(1[0-6]|2[0-9]|3[01]))|(192\\.168|169\\.254)|((127|10)\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)))(\\.(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)){2}$"
;
private
static
final
String
tokenRegExp
=
"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
;
public
static
final
String
numberRegExp
=
"^([0-9]+)((,|;)+[0-9]+)+$"
;
public
static
final
String
numberFilterRegExp
=
"(,|;)+\\s*(,|;)+"
;
private
static
final
Pattern
phonePattern
=
Pattern
.
compile
(
phoneRegExp
);
private
static
final
Pattern
chinesePattern
=
Pattern
.
compile
(
chineseNameRegExp
);
...
...
@@ -32,6 +35,7 @@ public class ValidationUtil {
private
static
final
Pattern
ipv4Pattern
=
Pattern
.
compile
(
ipv4RegExp
);
private
static
final
Pattern
localIpv4Pattern
=
Pattern
.
compile
(
localIpv4RegExp
);
private
static
final
Pattern
tokenPattern
=
Pattern
.
compile
(
tokenRegExp
);
public
static
final
Pattern
numberPattern
=
Pattern
.
compile
(
numberRegExp
);
/**
* 是否是合法的中国大陆手机号
...
...
@@ -113,6 +117,33 @@ public class ValidationUtil {
return
matcher
.
find
();
}
/**
* 是否是合法的多个数值串
*
* @param numbers
* @return
*/
public
static
boolean
validateNumbers
(
String
numbers
)
{
if
(
StringUtils
.
isBlank
(
numbers
))
{
return
false
;
}
Matcher
matcher
=
numberPattern
.
matcher
(
numbers
);
return
matcher
.
find
();
}
/**
* 过滤掉合法的多个数值串间的空白值
*
* @param numbers
* @return
*/
public
static
String
filterNumbers
(
String
numbers
)
{
if
(!
validateNumbers
(
numbers
))
{
return
null
;
}
return
numbers
.
replaceAll
(
numberFilterRegExp
,
","
);
}
/**
* 验证密令
* 私钥 + 操作 + 时
...
...
src/test/java/common/TestJdk8.java
0 → 100644
View file @
272a6472
package
common
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.JUnit4
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
@Slf4j
@RunWith
(
JUnit4
.
class
)
public
class
TestJdk8
{
@Test
public
void
testString
()
{
String
userIds
=
"1,2;3,4;5,,;6"
;
log
.
info
(
"userIds:{}"
,
userIds
);
Assert
.
assertTrue
(
userIds
,
ValidationUtil
.
validateNumbers
(
userIds
));
String
formatUserIds
=
ValidationUtil
.
filterNumbers
(
userIds
);
log
.
info
(
"formatUserIds:{}"
,
formatUserIds
);
List
<
String
>
userIdStrList
=
Arrays
.
asList
(
formatUserIds
.
split
(
",|;"
));
log
.
info
(
"userIdStrList:{}"
,
userIdStrList
);
List
<
Long
>
userIdList
=
userIdStrList
.
stream
().
map
(
userId
->
Long
.
valueOf
(
userId
)).
collect
(
Collectors
.
toList
());
log
.
info
(
"userIdList:{}"
,
userIdList
);
assert
true
;
}
}
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