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
b59276a3
Commit
b59276a3
authored
Nov 13, 2018
by
xiaoguang.xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加phoneNoHash接口
parent
891fd168
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
168 additions
and
65 deletions
+168
-65
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+65
-43
UserHashMapping.java
src/main/java/cn/quantgroup/xyqb/entity/UserHashMapping.java
+52
-0
IUserHashMappingRepository.java
...uantgroup/xyqb/repository/IUserHashMappingRepository.java
+10
-0
IUserService.java
...in/java/cn/quantgroup/xyqb/service/user/IUserService.java
+4
-3
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+37
-19
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
b59276a3
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
.
user
;
import
java.io.UnsupportedEncodingException
;
import
java.sql.Timestamp
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.validation.constraints.Min
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
org.apache.http.HttpStatus
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.google.common.base.MoreObjects
;
import
com.google.common.collect.Maps
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.extern.slf4j.Slf4j
;
import
cn.quantgroup.acolyte.buddhistscriptures.pojo.Login
;
import
cn.quantgroup.tech.db.DSType
;
import
cn.quantgroup.tech.db.TargetDataSource
;
...
...
@@ -57,6 +24,35 @@ import cn.quantgroup.xyqb.service.wechat.IWechatService;
import
cn.quantgroup.xyqb.util.*
;
import
cn.quantgroup.xyqb.util.encrypt.MD5Util
;
import
cn.quantgroup.xyqb.validator.ChineseName
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.google.common.base.MoreObjects
;
import
com.google.common.collect.Maps
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
org.apache.http.HttpStatus
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.validation.constraints.Min
;
import
java.io.UnsupportedEncodingException
;
import
java.sql.Timestamp
;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -107,8 +103,9 @@ public class InnerController implements IBaseController {
/**
* 根据手机号或身份证号查询用户UUID
*
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @param idNo
- 身份证号
* @return user表的uuid
*/
@IpValidator
...
...
@@ -146,6 +143,28 @@ public class InnerController implements IBaseController {
return
JsonResult
.
buildSuccessResult
(
""
,
userRet
);
}
@GetMapping
(
"/user/search/hash"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据md5(手机号)或md5(身份证号)查询用户信息"
)
public
JsonResult
findByUuid
(
@RequestParam
String
md5Value
,
@RequestParam
(
defaultValue
=
"1"
)
Integer
type
)
{
if
(
type
!=
1
)
{
return
JsonResult
.
buildErrorStateResult
(
"尚未开放身份证号md5"
,
null
);
}
if
(
md5Value
==
null
)
{
return
JsonResult
.
buildErrorStateResult
(
"参数错误"
,
null
);
}
if
(
md5Value
.
length
()
!=
32
)
{
return
JsonResult
.
buildErrorStateResult
(
"参数长度有误"
,
null
);
}
User
user
=
userService
.
findByPhoneMd5
(
md5Value
);
if
(
user
==
null
)
{
return
JsonResult
.
buildSuccessResult
(
""
,
null
);
}
UserRet
userRet
=
new
UserRet
(
user
);
return
JsonResult
.
buildSuccessResult
(
""
,
userRet
);
}
@RequestMapping
(
"/userInfo/search/uuid"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"根据UUID查询用户详细信息"
)
public
JsonResult
findUserInfoByUuid
(
@RequestParam
(
value
=
"uuid"
)
String
uuid
)
{
...
...
@@ -600,10 +619,11 @@ public class InnerController implements IBaseController {
/**
* 按照姓名、份证号或手机号查询用户实名信息 - 精确查询,供客服用,不限制入参正确性
* @param name - 姓名
*
* @param name - 姓名
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @return JsonResult<List
<
UserDetail>>
* @param idNo
- 身份证号
* @return JsonResult<List
<
UserDetail>>
*/
@RequestMapping
(
"/user_detail/search_list"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"按照姓名、份证号或手机号查询用户实名信息 - 精确查询,供客服用,不限制入参正确性"
)
...
...
@@ -619,9 +639,10 @@ public class InnerController implements IBaseController {
/**
* 按照身份证号和手机号查询用户实名信息查询 - 模糊查询
*
* @param phoneNo - 手机号
* @param idNo - 身份证号
* @return JsonResult<List
<
UserDetail>>
* @param idNo
- 身份证号
* @return JsonResult<List
<
UserDetail>>
*/
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"按照身份证号和手机号查询用户实名信息查询 - 模糊查询"
)
@RequestMapping
(
"/user_detail/fuzzyQuery"
)
...
...
@@ -636,7 +657,7 @@ public class InnerController implements IBaseController {
int
idNoMaskSize
=
16
;
int
idNoFullSize
=
18
;
boolean
phoneNoValid
=
Objects
.
equals
(
phoneNo
.
length
(),
phoneNoMaskSize
)
||
ValidationUtil
.
validatePhoneNo
(
phoneNo
);
boolean
idNoValid
=
Objects
.
equals
(
idNo
.
length
(),
idNoMaskSize
)
||
Objects
.
equals
(
idNo
.
length
(),
idNoFullSize
);
boolean
idNoValid
=
Objects
.
equals
(
idNo
.
length
(),
idNoMaskSize
)
||
Objects
.
equals
(
idNo
.
length
(),
idNoFullSize
);
if
(
phoneNoValid
&&
idNoValid
)
{
List
<
UserDetail
>
userDetailList
=
userDetailService
.
fuzzyQueryByPhoneNoAndIdNo
(
phoneNo
,
idNo
);
return
JsonResult
.
buildSuccessResult
(
"success"
,
userDetailList
);
...
...
@@ -1109,7 +1130,8 @@ public class InnerController implements IBaseController {
List
<
Contact
>
contactList
=
null
;
// 目前对空白字符串和null值容错,因是api调用,不考虑对非法格式容错(会阻断注册)
if
(
StringUtils
.
isNotBlank
(
contacts
))
{
contactList
=
JSONObject
.
parseObject
(
contacts
,
new
TypeReference
<
List
<
Contact
>>(){});
contactList
=
JSONObject
.
parseObject
(
contacts
,
new
TypeReference
<
List
<
Contact
>>()
{
});
for
(
Contact
contact
:
contactList
)
{
contact
.
setRelation
(
contact
.
getRelation
()
==
null
?
Relation
.
OTHER
:
contact
.
getRelation
());
Tuple
<
String
,
Boolean
>
stringBooleanTuple
=
contact
.
validAndResult
();
...
...
@@ -1331,7 +1353,7 @@ public class InnerController implements IBaseController {
User
user
=
userService
.
findById
(
userId
);
int
rows
=
userDetailService
.
updateNameAndIdCard
(
name
,
idNo
,
user
.
getPhoneNo
());
log
.
info
(
"重置用户实名信息,userId:{},name:{},idNo:{},result:[{}]"
,
userId
,
name
,
idNo
,
rows
);
if
(
rows
>
0
)
{
if
(
rows
>
0
)
{
return
JsonResult
.
buildSuccessResult
(
"用户实名信息已重置."
,
name
.
concat
(
","
).
concat
(
idNo
).
concat
(
","
).
concat
(
userId
.
toString
()));
}
}
catch
(
Exception
e
)
{
...
...
@@ -1395,7 +1417,7 @@ public class InnerController implements IBaseController {
try
{
int
rows
=
userDetailService
.
updateNameAndIdCard
(
name
,
idNo
,
phoneNo
);
log
.
info
(
"重置用户实名信息,phoneNo:{},name:{},idNo:{},result:[{}],操作的理由reason:{}"
,
phoneNo
,
name
,
idNo
,
rows
,
reason
);
if
(
rows
>
0
)
{
if
(
rows
>
0
)
{
return
JsonResult
.
buildSuccessResult
(
"用户实名信息已重置."
,
phoneNo
.
concat
(
","
).
concat
(
name
).
concat
(
","
).
concat
(
idNo
));
}
}
catch
(
Exception
e
)
{
...
...
src/main/java/cn/quantgroup/xyqb/entity/UserHashMapping.java
0 → 100644
View file @
b59276a3
package
cn
.
quantgroup
.
xyqb
.
entity
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
@Data
@Entity
@Table
(
name
=
"user_hash_mapping"
)
public
class
UserHashMapping
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1L
;
@Id
@Column
(
name
=
"id"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
name
=
"user_id"
)
private
Long
userId
;
@Column
(
name
=
"phone_no_md5"
)
private
String
phoneNoMd5
;
@Column
(
name
=
"id_no_md5"
)
private
String
idNoMd5
;
@Column
(
name
=
"phone_no_md5_short"
)
private
Long
phoneNoMd5Short
;
@Column
(
name
=
"id_no_md5_short"
)
private
Long
idNoMd5Short
;
@Column
(
name
=
"created_at"
)
private
Timestamp
createdAt
;
@Column
(
name
=
"updated_at"
)
private
Timestamp
updatedAt
;
@PrePersist
public
void
prePersist
()
{
Timestamp
timestamp
=
new
Timestamp
(
System
.
currentTimeMillis
());
createdAt
=
timestamp
;
updatedAt
=
timestamp
;
}
@PreUpdate
public
void
preUpdate
()
{
updatedAt
=
new
Timestamp
(
System
.
currentTimeMillis
());
}
}
\ No newline at end of file
src/main/java/cn/quantgroup/xyqb/repository/IUserHashMappingRepository.java
0 → 100644
View file @
b59276a3
package
cn
.
quantgroup
.
xyqb
.
repository
;
import
cn.quantgroup.xyqb.entity.UserHashMapping
;
import
org.springframework.data.jpa.repository.JpaRepository
;
public
interface
IUserHashMappingRepository
extends
JpaRepository
<
UserHashMapping
,
Long
>
{
UserHashMapping
findByPhoneNoMd5ShortAndPhoneNoMd5
(
Long
phoneNoMd5Short
,
String
phoneNoMd5
);
}
src/main/java/cn/quantgroup/xyqb/service/user/IUserService.java
View file @
b59276a3
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
import
java.util.List
;
import
java.util.Map
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.model.UserInfo
;
import
java.util.List
;
import
java.util.Map
;
/**
* Created by Miraculous on 15/7/5.
*/
...
...
@@ -50,4 +50,5 @@ public interface IUserService {
List
<
UserInfo
>
findUserInfosByPhones
(
List
<
String
>
phones
);
User
findByPhoneMd5
(
String
md5Value
);
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
b59276a3
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
import
java.sql.Timestamp
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
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.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
lombok.extern.slf4j.Slf4j
;
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.model.UserInfo
;
import
cn.quantgroup.xyqb.repository.IUserHashMappingRepository
;
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
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
lombok.extern.slf4j.Slf4j
;
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.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.sql.Timestamp
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.zip.CRC32
;
/**
* Created by Miraculous on 15/7/5.
...
...
@@ -40,6 +40,10 @@ public class UserServiceImpl implements IUserService {
RedisTemplate
<
String
,
String
>
stringRedisTemplate
;
@Autowired
private
IUserRepository
userRepository
;
@Autowired
private
IUserHashMappingRepository
userHashMappingRepository
;
@Autowired
private
IUserDetailService
userDetailService
;
...
...
@@ -180,4 +184,18 @@ public class UserServiceImpl implements IUserService {
return
Collections
.
emptyList
();
}
@Override
public
User
findByPhoneMd5
(
String
md5Value
)
{
md5Value
=
md5Value
.
toLowerCase
();
CRC32
crc32
=
new
CRC32
();
crc32
.
update
(
md5Value
.
getBytes
());
long
value
=
crc32
.
getValue
();
UserHashMapping
userHashMapping
=
userHashMappingRepository
.
findByPhoneNoMd5ShortAndPhoneNoMd5
(
value
,
md5Value
);
if
(
userHashMapping
==
null
)
{
return
null
;
}
Long
userId
=
userHashMapping
.
getUserId
();
return
userRepository
.
findById
(
userId
);
}
}
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