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
7aab6542
Commit
7aab6542
authored
Apr 25, 2017
by
minminyan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改searchUserDetailList,支持返回用户的状态,并且限制前端必须至少传一个非空的条件,防止全表返回
parent
d3956a85
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
144 additions
and
48 deletions
+144
-48
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+5
-1
IUserRepository.java
...n/java/cn/quantgroup/xyqb/repository/IUserRepository.java
+2
-1
IUserDetailService.java
...a/cn/quantgroup/xyqb/service/user/IUserDetailService.java
+6
-5
UserDetailServiceImpl.java
...ntgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
+72
-41
UserDetailVO.java
...java/cn/quantgroup/xyqb/service/user/vo/UserDetailVO.java
+59
-0
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
7aab6542
...
@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.*;
...
@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.model.*;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
import
cn.quantgroup.xyqb.service.auth.IIdCardService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.user.*
;
import
cn.quantgroup.xyqb.service.user.*
;
import
cn.quantgroup.xyqb.service.user.vo.UserDetailVO
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
...
@@ -329,7 +330,10 @@ public class InnerController {
...
@@ -329,7 +330,10 @@ public class InnerController {
@RequestMapping
(
"/user_detail/search_list"
)
@RequestMapping
(
"/user_detail/search_list"
)
public
JsonResult
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
public
JsonResult
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
List
<
UserDetail
>
userDetails
=
userDetailService
.
searchUserDetailList
(
name
,
phoneNo
,
idNo
);
if
(
StringUtils
.
isBlank
(
name
)
&&
StringUtils
.
isBlank
(
phoneNo
)
&&
StringUtils
.
isBlank
(
idNo
))
{
return
JsonResult
.
buildErrorStateResult
(
"至少必须满足一个条件不为空"
,
null
);
}
List
<
UserDetailVO
>
userDetails
=
userDetailService
.
searchUserDetailList
(
name
,
phoneNo
,
idNo
);
return
JsonResult
.
buildSuccessResult
(
"success"
,
userDetails
);
return
JsonResult
.
buildSuccessResult
(
"success"
,
userDetails
);
}
}
...
...
src/main/java/cn/quantgroup/xyqb/repository/IUserRepository.java
View file @
7aab6542
...
@@ -2,11 +2,12 @@ package cn.quantgroup.xyqb.repository;
...
@@ -2,11 +2,12 @@ package cn.quantgroup.xyqb.repository;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.User
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
/**
* Created by Miraculous on 15/7/4.
* Created by Miraculous on 15/7/4.
*/
*/
public
interface
IUserRepository
extends
JpaRepository
<
User
,
Long
>
{
public
interface
IUserRepository
extends
JpaRepository
<
User
,
Long
>
,
JpaSpecificationExecutor
<
User
>
{
User
findByPhoneNo
(
String
phoneNo
);
User
findByPhoneNo
(
String
phoneNo
);
...
...
src/main/java/cn/quantgroup/xyqb/service/user/IUserDetailService.java
View file @
7aab6542
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
package
cn
.
quantgroup
.
xyqb
.
service
.
user
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.service.user.vo.UserDetailVO
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
java.util.List
;
import
java.util.List
;
...
@@ -9,13 +10,13 @@ import java.util.List;
...
@@ -9,13 +10,13 @@ import java.util.List;
* Created by 11 on 2016/12/29.
* Created by 11 on 2016/12/29.
*/
*/
public
interface
IUserDetailService
{
public
interface
IUserDetailService
{
UserDetail
findByUserId
(
Long
userId
);
UserDetail
findByUserId
(
Long
userId
);
UserDetail
saveUserDetail
(
UserDetail
userDetail
)
throws
DataIntegrityViolationException
;
UserDetail
saveUserDetail
(
UserDetail
userDetail
)
throws
DataIntegrityViolationException
;
UserDetail
findByPhoneNo
(
String
phoneNo
);
UserDetail
findByPhoneNo
(
String
phoneNo
);
void
updateUserQQ
(
Long
userId
,
String
qq
);
void
updateUserQQ
(
Long
userId
,
String
qq
);
List
<
UserDetail
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
);
List
<
UserDetailVO
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
);
}
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserDetailServiceImpl.java
View file @
7aab6542
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
impl
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.repository.IUserDetailRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.IUserDetailService
;
import
cn.quantgroup.xyqb.service.user.vo.UserDetailVO
;
import
com.google.common.collect.Maps
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.persistence.criteria.*
;
import
javax.persistence.criteria.*
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* Created by 11 on 2016/12/29.
* Created by 11 on 2016/12/29.
...
@@ -18,53 +25,77 @@ import java.util.List;
...
@@ -18,53 +25,77 @@ import java.util.List;
@Service
@Service
public
class
UserDetailServiceImpl
implements
IUserDetailService
{
public
class
UserDetailServiceImpl
implements
IUserDetailService
{
@Autowired
@Autowired
private
IUserDetailRepository
userDetailRepository
;
private
IUserDetailRepository
userDetailRepository
;
@Autowired
private
IUserRepository
userRepository
;
@Override
@Override
public
UserDetail
findByUserId
(
Long
userId
)
{
public
UserDetail
findByUserId
(
Long
userId
)
{
return
userDetailRepository
.
findByUserId
(
userId
);
return
userDetailRepository
.
findByUserId
(
userId
);
}
}
@Override
@Override
public
UserDetail
saveUserDetail
(
UserDetail
userDetail
)
throws
DataIntegrityViolationException
{
public
UserDetail
saveUserDetail
(
UserDetail
userDetail
)
throws
DataIntegrityViolationException
{
return
userDetailRepository
.
save
(
userDetail
);
return
userDetailRepository
.
save
(
userDetail
);
}
}
@Override
@Override
public
UserDetail
findByPhoneNo
(
String
phoneNo
)
{
public
UserDetail
findByPhoneNo
(
String
phoneNo
)
{
return
userDetailRepository
.
findByPhoneNo
(
phoneNo
);
return
userDetailRepository
.
findByPhoneNo
(
phoneNo
);
}
}
@Override
@Override
public
void
updateUserQQ
(
Long
userId
,
String
qq
)
{
public
void
updateUserQQ
(
Long
userId
,
String
qq
)
{
userDetailRepository
.
updateUserQQ
(
qq
,
userId
);
userDetailRepository
.
updateUserQQ
(
qq
,
userId
);
}
}
@Override
@Override
public
List
<
UserDetail
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
public
List
<
UserDetailVO
>
searchUserDetailList
(
String
name
,
String
phoneNo
,
String
idNo
)
{
return
userDetailRepository
.
findAll
(
getSpecification
(
name
,
phoneNo
,
idNo
));
// return
List
<
UserDetail
>
details
=
userDetailRepository
.
findAll
(
getSpecification
(
name
,
phoneNo
,
idNo
));
Map
<
Long
,
User
>
userMap
=
Maps
.
newHashMap
();
if
(!
CollectionUtils
.
isEmpty
(
details
))
{
List
<
Long
>
userIds
=
details
.
stream
().
map
(
d
->
d
.
getUserId
()).
collect
(
Collectors
.
toList
());
List
<
User
>
users
=
userRepository
.
findAll
((
root
,
query
,
cb
)
->
{
query
.
where
(
root
.
get
(
"id"
).
in
(
userIds
));
return
query
.
getRestriction
();
});
userMap
=
users
.
stream
().
collect
(
Collectors
.
toMap
(
User:
:
getId
,
o
->
o
));
}
}
Map
<
Long
,
User
>
finalUserMap
=
userMap
;
List
<
UserDetailVO
>
userDetailVOS
=
details
.
stream
().
map
(
o
->
fromUserDetailAndUserMap
(
o
,
finalUserMap
)).
collect
(
Collectors
.
toList
());
return
userDetailVOS
;
}
private
Specification
<
UserDetail
>
getSpecification
(
String
name
,
String
phoneNo
,
String
idNo
)
{
private
UserDetailVO
fromUserDetailAndUserMap
(
UserDetail
userDetail
,
Map
<
Long
,
User
>
userMap
)
{
Specification
<
UserDetail
>
specification
=
new
Specification
<
UserDetail
>()
{
UserDetailVO
userDetailVO
=
UserDetailVO
.
fromUserDetail
(
userDetail
);
@Override
User
user
=
userMap
.
get
(
userDetail
.
getUserId
());
public
Predicate
toPredicate
(
Root
<
UserDetail
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
criteriaBuilder
)
{
if
(
user
!=
null
)
{
if
(!
StringUtils
.
isEmpty
(
name
))
{
userDetailVO
.
setEnable
(
user
.
getEnable
());
Path
<
String
>
namePath
=
root
.
get
(
"name"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
namePath
,
name
));
}
if
(!
StringUtils
.
isEmpty
(
phoneNo
))
{
Path
<
String
>
phonePath
=
root
.
get
(
"phoneNo"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
phonePath
,
phoneNo
));
}
if
(!
StringUtils
.
isEmpty
(
idNo
))
{
Path
<
String
>
idNoPath
=
root
.
get
(
"idNo"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
idNoPath
,
idNo
));
}
return
null
;
}
};
return
specification
;
}
}
return
userDetailVO
;
}
private
Specification
<
UserDetail
>
getSpecification
(
String
name
,
String
phoneNo
,
String
idNo
)
{
Specification
<
UserDetail
>
specification
=
new
Specification
<
UserDetail
>()
{
@Override
public
Predicate
toPredicate
(
Root
<
UserDetail
>
root
,
CriteriaQuery
<?>
criteriaQuery
,
CriteriaBuilder
criteriaBuilder
)
{
if
(!
StringUtils
.
isEmpty
(
name
))
{
Path
<
String
>
namePath
=
root
.
get
(
"name"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
namePath
,
name
));
}
if
(!
StringUtils
.
isEmpty
(
phoneNo
))
{
Path
<
String
>
phonePath
=
root
.
get
(
"phoneNo"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
phonePath
,
phoneNo
));
}
if
(!
StringUtils
.
isEmpty
(
idNo
))
{
Path
<
String
>
idNoPath
=
root
.
get
(
"idNo"
);
criteriaQuery
.
where
(
criteriaBuilder
.
equal
(
idNoPath
,
idNo
));
}
return
null
;
}
};
return
specification
;
}
}
}
src/main/java/cn/quantgroup/xyqb/service/user/vo/UserDetailVO.java
0 → 100644
View file @
7aab6542
package
cn
.
quantgroup
.
xyqb
.
service
.
user
.
vo
;
import
cn.quantgroup.xyqb.entity.UserDetail
;
import
cn.quantgroup.xyqb.model.Gender
;
import
cn.quantgroup.xyqb.model.IdType
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@NoArgsConstructor
public
class
UserDetailVO
{
private
Long
id
;
private
Long
userId
;
private
String
phoneNo
;
private
String
name
;
private
String
idNo
;
private
IdType
idType
;
private
Boolean
isAuthenticated
=
false
;
private
Gender
gender
;
private
String
email
;
private
String
qq
;
private
Boolean
enable
;
private
Long
createdAt
;
private
Long
updatedAt
;
public
static
UserDetailVO
fromUserDetail
(
UserDetail
userDetail
)
{
UserDetailVO
userDetailVO
=
new
UserDetailVO
();
userDetailVO
.
id
=
userDetail
.
getId
();
userDetailVO
.
userId
=
userDetail
.
getUserId
();
userDetailVO
.
phoneNo
=
userDetail
.
getPhoneNo
();
userDetailVO
.
name
=
userDetail
.
getName
();
userDetailVO
.
idNo
=
userDetail
.
getIdNo
();
userDetailVO
.
idType
=
userDetail
.
getIdType
();
userDetailVO
.
isAuthenticated
=
userDetail
.
getIsAuthenticated
();
userDetailVO
.
gender
=
userDetail
.
getGender
();
userDetailVO
.
email
=
userDetail
.
getEmail
();
userDetailVO
.
qq
=
userDetail
.
getQq
();
if
(
userDetail
.
getCreatedAt
()
!=
null
)
{
userDetailVO
.
createdAt
=
userDetail
.
getCreatedAt
().
getTime
();
}
if
(
userDetail
.
getUpdatedAt
()
!=
null
)
{
userDetailVO
.
updatedAt
=
userDetail
.
getUpdatedAt
().
getTime
();
}
return
userDetailVO
;
}
}
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