"eladmin-tools/vscode:/vscode.git/clone" did not exist on "48570fcb7fda88665b7faf1223af50b8e806826b"
Commit 9f43851e authored by zhengjie's avatar zhengjie
Browse files

1.7版本发布,详情查看版本说明

parent 1402e584
package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.system.domain.DictDetail;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.DictDetailRepository;
import me.zhengjie.modules.system.service.DictDetailService;
import me.zhengjie.modules.system.service.dto.DictDetailDTO;
import me.zhengjie.modules.system.service.mapper.DictDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
/**
* @author jie
* @date 2019-04-10
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictDetailServiceImpl implements DictDetailService {
@Autowired
private DictDetailRepository dictDetailRepository;
@Autowired
private DictDetailMapper dictDetailMapper;
@Override
public DictDetailDTO findById(Long id) {
Optional<DictDetail> dictDetail = dictDetailRepository.findById(id);
ValidationUtil.isNull(dictDetail,"DictDetail","id",id);
return dictDetailMapper.toDto(dictDetail.get());
}
@Override
@Transactional(rollbackFor = Exception.class)
public DictDetailDTO create(DictDetail resources) {
return dictDetailMapper.toDto(dictDetailRepository.save(resources));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DictDetail resources) {
Optional<DictDetail> optionalDictDetail = dictDetailRepository.findById(resources.getId());
ValidationUtil.isNull( optionalDictDetail,"DictDetail","id",resources.getId());
DictDetail dictDetail = optionalDictDetail.get();
// 此处需自己修改
resources.setId(dictDetail.getId());
dictDetailRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
dictDetailRepository.deleteById(id);
}
}
\ No newline at end of file
package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.DictRepository;
import me.zhengjie.modules.system.service.DictService;
import me.zhengjie.modules.system.service.dto.DictDTO;
import me.zhengjie.modules.system.service.mapper.DictMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
/**
* @author jie
* @date 2019-04-10
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictServiceImpl implements DictService {
@Autowired
private DictRepository dictRepository;
@Autowired
private DictMapper dictMapper;
@Override
public DictDTO findById(Long id) {
Optional<Dict> dict = dictRepository.findById(id);
ValidationUtil.isNull(dict,"Dict","id",id);
return dictMapper.toDto(dict.get());
}
@Override
@Transactional(rollbackFor = Exception.class)
public DictDTO create(Dict resources) {
return dictMapper.toDto(dictRepository.save(resources));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Dict resources) {
Optional<Dict> optionalDict = dictRepository.findById(resources.getId());
ValidationUtil.isNull( optionalDict,"Dict","id",resources.getId());
Dict dict = optionalDict.get();
// 此处需自己修改
resources.setId(dict.getId());
dictRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
dictRepository.deleteById(id);
}
}
\ No newline at end of file
package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.system.domain.Job;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.JobRepository;
import me.zhengjie.modules.system.service.JobService;
import me.zhengjie.modules.system.service.dto.JobDTO;
import me.zhengjie.modules.system.service.mapper.JobMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
/**
* @author jie
* @date 2019-03-29
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class JobServiceImpl implements JobService {
@Autowired
private JobRepository jobRepository;
@Autowired
private JobMapper jobMapper;
@Override
public JobDTO findById(Long id) {
Optional<Job> job = jobRepository.findById(id);
ValidationUtil.isNull(job,"Job","id",id);
return jobMapper.toDto(job.get());
}
@Override
@Transactional(rollbackFor = Exception.class)
public JobDTO create(Job resources) {
return jobMapper.toDto(jobRepository.save(resources));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(Job resources) {
Optional<Job> optionalJob = jobRepository.findById(resources.getId());
ValidationUtil.isNull( optionalJob,"Job","id",resources.getId());
Job job = optionalJob.get();
// 此处需自己修改
resources.setId(job.getId());
jobRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
jobRepository.deleteById(id);
}
}
\ No newline at end of file
...@@ -37,7 +37,7 @@ public class MenuServiceImpl implements MenuService { ...@@ -37,7 +37,7 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
public List<MenuDTO> findByRoles(Set<Role> roles) { public List<MenuDTO> findByRoles(List<Role> roles) {
Set<Menu> menus = new LinkedHashSet<>(); Set<Menu> menus = new LinkedHashSet<>();
for (Role role : roles) { for (Role role : roles) {
List<Menu> menus1 = menuRepository.findByRoles_IdOrderBySortAsc(role.getId()).stream().collect(Collectors.toList()); List<Menu> menus1 = menuRepository.findByRoles_IdOrderBySortAsc(role.getId()).stream().collect(Collectors.toList());
...@@ -61,6 +61,9 @@ public class MenuServiceImpl implements MenuService { ...@@ -61,6 +61,9 @@ public class MenuServiceImpl implements MenuService {
@Override @Override
public void update(Menu resources) { public void update(Menu resources) {
if(resources.getId().equals(resources.getPid())) {
throw new BadRequestException("上级不能为自己");
}
Optional<Menu> optionalPermission = menuRepository.findById(resources.getId()); Optional<Menu> optionalPermission = menuRepository.findById(resources.getId());
ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId());
...@@ -87,10 +90,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -87,10 +90,6 @@ public class MenuServiceImpl implements MenuService {
@Override @Override
public void delete(Long id) { public void delete(Long id) {
List<Menu> menuList = menuRepository.findByPid(id);
for (Menu menu : menuList) {
menuRepository.delete(menu);
}
menuRepository.deleteById(id); menuRepository.deleteById(id);
} }
...@@ -193,4 +192,11 @@ public class MenuServiceImpl implements MenuService { ...@@ -193,4 +192,11 @@ public class MenuServiceImpl implements MenuService {
); );
return list; return list;
} }
@Override
public Menu findOne(Long id) {
Optional<Menu> menu = menuRepository.findById(id);
ValidationUtil.isNull(menu,"Menu","id",id);
return menu.get();
}
} }
...@@ -47,8 +47,10 @@ public class PermissionServiceImpl implements PermissionService { ...@@ -47,8 +47,10 @@ public class PermissionServiceImpl implements PermissionService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Permission resources) { public void update(Permission resources) {
Optional<Permission> optionalPermission = permissionRepository.findById(resources.getId()); Optional<Permission> optionalPermission = permissionRepository.findById(resources.getId());
if(resources.getId().equals(resources.getPid())) {
throw new BadRequestException("上级不能为自己");
}
ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId());
Permission permission = optionalPermission.get(); Permission permission = optionalPermission.get();
......
package me.zhengjie.modules.system.service.impl; package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.system.domain.Menu;
import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.domain.Role;
import me.zhengjie.exception.BadRequestException; import me.zhengjie.exception.BadRequestException;
import me.zhengjie.exception.EntityExistException; import me.zhengjie.exception.EntityExistException;
...@@ -13,6 +14,7 @@ import org.springframework.stereotype.Service; ...@@ -13,6 +14,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author jie * @author jie
...@@ -61,6 +63,8 @@ public class RoleServiceImpl implements RoleService { ...@@ -61,6 +63,8 @@ public class RoleServiceImpl implements RoleService {
role.setName(resources.getName()); role.setName(resources.getName());
role.setRemark(resources.getRemark()); role.setRemark(resources.getRemark());
role.setDataScope(resources.getDataScope());
role.setDepts(resources.getDepts());
roleRepository.save(role); roleRepository.save(role);
} }
...@@ -79,28 +83,23 @@ public class RoleServiceImpl implements RoleService { ...@@ -79,28 +83,23 @@ public class RoleServiceImpl implements RoleService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) public void untiedMenu(Menu menu) {
public void delete(Long id) { Set<Role> roles = roleRepository.findByMenus_Id(menu.getId());
roleRepository.deleteById(id); for (Role role : roles) {
menu.getRoles().remove(role);
role.getMenus().remove(menu);
roleRepository.save(role);
}
} }
@Override @Override
public Object getRoleTree() { @Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
List<Role> roleList = roleRepository.findAll(); roleRepository.deleteById(id);
List<Map<String, Object>> list = new ArrayList<>();
for (Role role : roleList) {
Map<String, Object> map = new HashMap<>();
map.put("id",role.getId());
map.put("label",role.getName());
list.add(map);
}
return list;
} }
@Override @Override
public Set<Role> findByUsers_Id(Long id) { public List<Role> findByUsers_Id(Long id) {
return roleRepository.findByUsers_Id(id); return roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList());
} }
} }
package me.zhengjie.modules.system.service.impl; package me.zhengjie.modules.system.service.impl;
import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.domain.User;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.exception.EntityExistException; import me.zhengjie.exception.EntityExistException;
import me.zhengjie.exception.EntityNotFoundException; import me.zhengjie.exception.EntityNotFoundException;
import me.zhengjie.modules.system.repository.UserRepository; import me.zhengjie.modules.system.repository.UserRepository;
import me.zhengjie.modules.security.security.JwtUser;
import me.zhengjie.modules.security.utils.JwtTokenUtil;
import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.UserService;
import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserDTO;
import me.zhengjie.modules.system.service.mapper.UserMapper; import me.zhengjie.modules.system.service.mapper.UserMapper;
...@@ -32,9 +29,6 @@ public class UserServiceImpl implements UserService { ...@@ -32,9 +29,6 @@ public class UserServiceImpl implements UserService {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Override @Override
public UserDTO findById(long id) { public UserDTO findById(long id) {
Optional<User> user = userRepository.findById(id); Optional<User> user = userRepository.findById(id);
...@@ -54,20 +48,15 @@ public class UserServiceImpl implements UserService { ...@@ -54,20 +48,15 @@ public class UserServiceImpl implements UserService {
throw new EntityExistException(User.class,"email",resources.getEmail()); throw new EntityExistException(User.class,"email",resources.getEmail());
} }
if(resources.getRoles() == null || resources.getRoles().size() == 0){ // 默认密码 123456,此密码是加密后的字符
throw new BadRequestException("角色不能为空"); resources.setPassword("e10adc3949ba59abbe56e057f20f883e");
} resources.setAvatar("https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg");
// 默认密码 123456,此密码是 MD5加密后的字符
resources.setPassword("14e1b600b1fd579f47433b88e8d85291");
resources.setAvatar("https://i.loli.net/2018/12/06/5c08894d8de21.jpg");
return userMapper.toDto(userRepository.save(resources)); return userMapper.toDto(userRepository.save(resources));
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(User resources) { public void update(User resources) {
Optional<User> userOptional = userRepository.findById(resources.getId()); Optional<User> userOptional = userRepository.findById(resources.getId());
ValidationUtil.isNull(userOptional,"User","id",resources.getId()); ValidationUtil.isNull(userOptional,"User","id",resources.getId());
...@@ -76,10 +65,6 @@ public class UserServiceImpl implements UserService { ...@@ -76,10 +65,6 @@ public class UserServiceImpl implements UserService {
User user1 = userRepository.findByUsername(user.getUsername()); User user1 = userRepository.findByUsername(user.getUsername());
User user2 = userRepository.findByEmail(user.getEmail()); User user2 = userRepository.findByEmail(user.getEmail());
if(resources.getRoles() == null || resources.getRoles().size() == 0){
throw new BadRequestException("角色不能为空");
}
if(user1 !=null&&!user.getId().equals(user1.getId())){ if(user1 !=null&&!user.getId().equals(user1.getId())){
throw new EntityExistException(User.class,"username",resources.getUsername()); throw new EntityExistException(User.class,"username",resources.getUsername());
} }
...@@ -92,7 +77,9 @@ public class UserServiceImpl implements UserService { ...@@ -92,7 +77,9 @@ public class UserServiceImpl implements UserService {
user.setEmail(resources.getEmail()); user.setEmail(resources.getEmail());
user.setEnabled(resources.getEnabled()); user.setEnabled(resources.getEnabled());
user.setRoles(resources.getRoles()); user.setRoles(resources.getRoles());
user.setDept(resources.getDept());
user.setJob(resources.getJob());
user.setPhone(resources.getPhone());
userRepository.save(user); userRepository.save(user);
} }
...@@ -120,19 +107,19 @@ public class UserServiceImpl implements UserService { ...@@ -120,19 +107,19 @@ public class UserServiceImpl implements UserService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updatePass(JwtUser jwtUser, String pass) { public void updatePass(String username, String pass) {
userRepository.updatePass(jwtUser.getId(),pass,new Date()); userRepository.updatePass(username,pass,new Date());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateAvatar(JwtUser jwtUser, String url) { public void updateAvatar(String username, String url) {
userRepository.updateAvatar(jwtUser.getId(),url); userRepository.updateAvatar(username,url);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateEmail(JwtUser jwtUser, String email) { public void updateEmail(String username, String email) {
userRepository.updateEmail(jwtUser.getId(),email); userRepository.updateEmail(username,email);
} }
} }
package me.zhengjie.modules.system.service.mapper;
import me.zhengjie.mapper.EntityMapper;
import me.zhengjie.modules.system.domain.Dept;
import me.zhengjie.modules.system.service.dto.DeptDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author jie
* @date 2019-03-25
*/
@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DeptMapper extends EntityMapper<DeptDTO, Dept> {
}
\ No newline at end of file
package me.zhengjie.modules.system.service.mapper;
import me.zhengjie.mapper.EntityMapper;
import me.zhengjie.modules.system.domain.DictDetail;
import me.zhengjie.modules.system.service.dto.DictDetailDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author jie
* @date 2019-04-10
*/
@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DictDetailMapper extends EntityMapper<DictDetailDTO, DictDetail> {
}
\ No newline at end of file
package me.zhengjie.modules.system.service.mapper;
import me.zhengjie.mapper.EntityMapper;
import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.modules.system.service.dto.DictDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author jie
* @date 2019-04-10
*/
@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DictMapper extends EntityMapper<DictDTO, Dict> {
}
\ No newline at end of file
package me.zhengjie.modules.system.service.mapper;
import me.zhengjie.mapper.EntityMapper;
import me.zhengjie.modules.system.domain.Job;
import me.zhengjie.modules.system.service.dto.JobDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author jie
* @date 2019-03-29
*/
@Mapper(componentModel = "spring",uses = {DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface JobMapper extends EntityMapper<JobDTO, Job> {
}
\ No newline at end of file
...@@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; ...@@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy;
* @author jie * @author jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Mapper(componentModel = "spring", uses = {PermissionMapper.class, MenuMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring", uses = {PermissionMapper.class, MenuMapper.class, DeptMapper.class}, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface RoleMapper extends EntityMapper<RoleDTO, Role> { public interface RoleMapper extends EntityMapper<RoleDTO, Role> {
} }
...@@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; ...@@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy;
* @author jie * @author jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Mapper(componentModel = "spring",uses = {RoleMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserMapper extends EntityMapper<UserDTO, User> { public interface UserMapper extends EntityMapper<UserDTO, User> {
} }
package me.zhengjie.modules.system.service.query;
import me.zhengjie.modules.system.domain.Dept;
import me.zhengjie.modules.system.service.dto.DeptDTO;
import me.zhengjie.modules.system.repository.DeptRepository;
import me.zhengjie.modules.system.service.mapper.DeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
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;
import java.util.Set;
/**
* @author jie
* @date 2018-12-03
*/
@Service
@CacheConfig(cacheNames = "dept")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DeptQueryService {
@Autowired
private DeptRepository deptRepository;
@Autowired
private DeptMapper deptMapper;
/**
* 不分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public List queryAll(DeptDTO dept, Set<Long> deptIds){
return deptMapper.toDto(deptRepository.findAll(new Spec(dept, deptIds)));
}
class Spec implements Specification<Dept> {
private DeptDTO dept;
private Set<Long> deptIds;
public Spec(DeptDTO dept, Set<Long> deptIds){
this.dept = dept;
this.deptIds = deptIds;
}
@Override
public Predicate toPredicate(Root<Dept> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if(!ObjectUtils.isEmpty(dept.getName())){
/**
* 模糊
*/
list.add(cb.like(root.get("name").as(String.class),"%"+dept.getName()+"%"));
}
if(!ObjectUtils.isEmpty(dept.getEnabled())){
/**
* 相等
*/
list.add(cb.equal(root.get("enabled").as(Boolean.class),dept.getEnabled()));
}
if(!ObjectUtils.isEmpty(dept.getPid())){
/**
* 相等
*/
list.add(cb.equal(root.get("pid").as(Boolean.class),dept.getPid()));
}
if (!CollectionUtils.isEmpty(deptIds)) {
list.add(root.get("id").in(deptIds));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
}
}
\ No newline at end of file
package me.zhengjie.modules.system.service.query;
import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.modules.system.domain.DictDetail;
import me.zhengjie.modules.system.service.dto.DictDetailDTO;
import me.zhengjie.modules.system.repository.DictDetailRepository;
import me.zhengjie.modules.system.service.mapper.DictDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
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.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author jie
* @date 2018-12-03
*/
@Service
@CacheConfig(cacheNames = "dictDetail")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictDetailQueryService {
@Autowired
private DictDetailRepository dictDetailRepository;
@Autowired
private DictDetailMapper dictDetailMapper;
/**
* 分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(DictDetailDTO dictDetail, Pageable pageable){
Page<DictDetail> page = dictDetailRepository.findAll(new Spec(dictDetail),pageable);
return PageUtil.toPage(page.map(dictDetailMapper::toDto));
}
class Spec implements Specification<DictDetail> {
private DictDetailDTO dictDetail;
public Spec(DictDetailDTO dictDetail){
this.dictDetail = dictDetail;
}
@Override
public Predicate toPredicate(Root<DictDetail> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
Join<Dict,DictDetail> join = root.join("dict",JoinType.LEFT);
if(!ObjectUtils.isEmpty(dictDetail.getLabel())){
/**
* 模糊
*/
list.add(cb.like(root.get("label").as(String.class),"%"+dictDetail.getLabel()+"%"));
}
if(!ObjectUtils.isEmpty(dictDetail.getDictName())){
list.add(cb.equal(join.get("name").as(String.class),dictDetail.getDictName()));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
}
}
\ No newline at end of file
package me.zhengjie.modules.system.service.query;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.modules.system.service.dto.DictDTO;
import me.zhengjie.modules.system.repository.DictRepository;
import me.zhengjie.modules.system.service.mapper.DictMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
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.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
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;
/**
* @author jie
* @date 2018-12-03
*/
@Service
@CacheConfig(cacheNames = "dict")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictQueryService {
@Autowired
private DictRepository dictRepository;
@Autowired
private DictMapper dictMapper;
/**
* 分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(DictDTO dict, Pageable pageable){
Page<Dict> page = dictRepository.findAll(new Spec(dict),pageable);
return PageUtil.toPage(page.map(dictMapper::toDto));
}
/**
* 不分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(DictDTO dict){
return dictMapper.toDto(dictRepository.findAll(new Spec(dict)));
}
class Spec implements Specification<Dict> {
private DictDTO dict;
public Spec(DictDTO dict){
this.dict = dict;
}
@Override
public Predicate toPredicate(Root<Dict> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if(!ObjectUtils.isEmpty(dict.getName())){
/**
* 模糊
*/
list.add(cb.like(root.get("name").as(String.class),"%"+dict.getName()+"%"));
}
if(!ObjectUtils.isEmpty(dict.getRemark())){
/**
* 模糊
*/
list.add(cb.like(root.get("remark").as(String.class),"%"+dict.getRemark()+"%"));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
}
}
\ No newline at end of file
package me.zhengjie.modules.system.service.query;
import me.zhengjie.modules.system.domain.Dept;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.modules.system.domain.Job;
import me.zhengjie.modules.system.service.dto.JobDTO;
import me.zhengjie.modules.system.repository.JobRepository;
import me.zhengjie.modules.system.service.mapper.JobMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
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.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* @author jie
* @date 2018-12-03
*/
@Service
@CacheConfig(cacheNames = "job")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class JobQueryService {
@Autowired
private JobRepository jobRepository;
@Autowired
private JobMapper jobMapper;
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(String name , Boolean enabled, Set<Long> deptIds, Long deptId, Pageable pageable){
Page<Job> page = jobRepository.findAll(new Spec(new JobDTO(name,enabled), deptIds, deptId),pageable);
return PageUtil.toPage(page.map(jobMapper::toDto));
}
class Spec implements Specification<Job> {
private JobDTO job;
private Long deptId;
private Set<Long> deptIds;
public Spec(JobDTO job, Set<Long> deptIds, Long deptId){
this.job = job;
this.deptId = deptId;
this.deptIds = deptIds;
}
@Override
public Predicate toPredicate(Root<Job> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
// 数据权限
Join<Dept, Job> join = root.join("dept",JoinType.LEFT);
if (!CollectionUtils.isEmpty(deptIds)) {
list.add(join.get("id").in(deptIds));
}
if(!ObjectUtils.isEmpty(job.getEnabled())){
/**
* 精确
*/
list.add(cb.equal(root.get("enabled").as(Boolean.class),job.getEnabled()));
}
if(!ObjectUtils.isEmpty(job.getName())){
/**
* 模糊
*/
list.add(cb.like(root.get("name").as(String.class),"%"+job.getName()+"%"));
}
if (deptId != null) {
/**
* 精确
*/
list.add(cb.equal(join.get("id").as(Long.class),deptId));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
}
}
\ No newline at end of file
...@@ -45,6 +45,15 @@ public class RoleQueryService { ...@@ -45,6 +45,15 @@ public class RoleQueryService {
return PageUtil.toPage(page.map(roleMapper::toDto)); return PageUtil.toPage(page.map(roleMapper::toDto));
} }
/**
* 分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(){
List<Role> roles = roleRepository.findAll(new Spec(null));
return roleMapper.toDto(roles);
}
class Spec implements Specification<Role> { class Spec implements Specification<Role> {
private String name; private String name;
......
package me.zhengjie.modules.system.service.query; package me.zhengjie.modules.system.service.query;
import me.zhengjie.modules.system.domain.Dept;
import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.domain.User;
import me.zhengjie.modules.system.repository.UserRepository; import me.zhengjie.modules.system.repository.UserRepository;
import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserDTO;
...@@ -14,13 +15,13 @@ import org.springframework.data.jpa.domain.Specification; ...@@ -14,13 +15,13 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.*;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author jie * @author jie
...@@ -41,24 +42,20 @@ public class UserQueryService { ...@@ -41,24 +42,20 @@ public class UserQueryService {
* 分页 * 分页
*/ */
@Cacheable(keyGenerator = "keyGenerator") @Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(UserDTO user, Pageable pageable){ public Object queryAll(UserDTO user, Set<Long> deptIds,Pageable pageable){
Page<User> page = userRepo.findAll(new Spec(user),pageable); Page<User> page = userRepo.findAll(new Spec(user,deptIds),pageable);
return PageUtil.toPage(page.map(userMapper::toDto)); return PageUtil.toPage(page.map(userMapper::toDto));
} }
/**
* 不分页
*/
@Cacheable(keyGenerator = "keyGenerator")
public Object queryAll(UserDTO user){
return userMapper.toDto(userRepo.findAll(new Spec(user)));
}
class Spec implements Specification<User> { class Spec implements Specification<User> {
private UserDTO user; private UserDTO user;
public Spec(UserDTO user){ private Set<Long> deptIds;
public Spec(UserDTO user, Set<Long> deptIds){
this.deptIds = deptIds;
this.user = user; this.user = user;
} }
...@@ -67,6 +64,12 @@ public class UserQueryService { ...@@ -67,6 +64,12 @@ public class UserQueryService {
List<Predicate> list = new ArrayList<Predicate>(); List<Predicate> list = new ArrayList<Predicate>();
// 数据权限, 关联查询
Join<Dept,User> join = root.join("dept",JoinType.LEFT);
if (!CollectionUtils.isEmpty(deptIds)) {
list.add(join.get("id").in(deptIds));
}
if(!ObjectUtils.isEmpty(user.getId())){ if(!ObjectUtils.isEmpty(user.getId())){
/** /**
* 相等 * 相等
......
...@@ -60,3 +60,10 @@ jwt: ...@@ -60,3 +60,10 @@ jwt:
#是否允许生成代码,生产环境设置为false #是否允许生成代码,生产环境设置为false
generator: generator:
enabled: false enabled: false
#如果生产环境要开启swagger,需要配置请求地址
#springfox:
# documentation:
# swagger:
# v2:
# host: # 接口域名或外网ip
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment