SysRoleServiceImpl.java
3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.server.shiro.persistent.service.impl;
import com.server.shiro.persistent.bean.SysMenu;
import com.server.shiro.persistent.bean.SysMenuQuery;
import com.server.shiro.persistent.bean.SysRole;
import com.server.shiro.persistent.bean.SysRoleQuery;
import com.server.shiro.persistent.repository.MenuRepository;
import com.server.shiro.persistent.repository.RoleRepository;
import com.server.shiro.persistent.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
/**
* Created by dell on 2018/3/13.
*/
@Service
public class SysRoleServiceImpl implements SysRoleService {
@Autowired
RoleRepository roleRepository;
@Autowired
MenuRepository menuRepository;
@Override
public Page<SysRole> findSysRolePage(Pageable pageable, SysRoleQuery RoleQuery) {
Page<SysRole> bookPage = roleRepository.findAll(new Specification<SysRole>() {
public Predicate toPredicate(Root<SysRole> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> list = new ArrayList<Predicate>();
if (StringUtils.hasText(RoleQuery.getRoleName())) {
list.add(criteriaBuilder.like(root.get("roleName").as(String.class), "%"+RoleQuery.getRoleName()+"%"));
}
if (StringUtils.hasText(RoleQuery.getRoleCode())) {
list.add(criteriaBuilder.like(root.get("roleCode").as(String.class), "%"+RoleQuery.getRoleCode()+"%"));
}
if (StringUtils.hasText(RoleQuery.getStatus())) {
list.add(criteriaBuilder.equal(root.get("status").as(String.class), RoleQuery.getStatus()));
}
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
}
}, pageable);
return bookPage;
}
@Override
public Page<SysMenu> findSysMenuPage(Pageable pageable, SysMenuQuery menuQuery) {
Page<SysMenu> bookPage = menuRepository.findAll(new Specification<SysMenu>() {
public Predicate toPredicate(Root<SysMenu> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> list = new ArrayList<Predicate>();
if (StringUtils.hasText(menuQuery.getMenuName())) {
list.add(criteriaBuilder.like(root.get("menuName").as(String.class), "%"+menuQuery.getMenuName()+"%"));
}
if (StringUtils.hasText(menuQuery.getMenuCode())) {
list.add(criteriaBuilder.like(root.get("menuCode").as(String.class), "%"+menuQuery.getMenuCode()+"%"));
}
if (StringUtils.hasText(menuQuery.getStatus())) {
list.add(criteriaBuilder.equal(root.get("status").as(String.class), menuQuery.getStatus()));
}
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
}
}, pageable);
return bookPage;
}
}