Files
springboot-payment/boot-service/src/main/java/com/xwbing/service/sys/SysRoleService.java
T
2017-11-17 11:33:07 +08:00

175 lines
5.1 KiB
Java

package com.xwbing.service.sys;
import com.xwbing.entity.sys.SysRole;
import com.xwbing.entity.sys.SysRoleAuthority;
import com.xwbing.entity.sys.SysUserRole;
import com.xwbing.exception.BusinessException;
import com.xwbing.repository.sys.SysRoleRepository;
import com.xwbing.util.PassWordUtil;
import com.xwbing.util.RestMessage;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 项目名称: boot-module-demo
* 创建时间: 2017/11/14 9:24
* 作者: xiangwb
* 说明: 角色服务层
*/
@Service
public class SysRoleService {
@Resource
private SysRoleRepository sysRoleRepository;
@Resource
private SysUserRoleService sysUserRoleService;
@Resource
private SysRoleAuthorityService sysRoleAuthorityService;
/**
* 保存角色
*
* @param sysRole
* @return
*/
public RestMessage save(SysRole sysRole) {
RestMessage result = new RestMessage();
boolean b = uniqueCode(sysRole.getCode(), null);
if (!b)
throw new BusinessException("该编码已存在");
String id = PassWordUtil.createId();
sysRole.setId(id);
sysRole.setCreateTime(new Date());
SysRole save = sysRoleRepository.save(sysRole);
if (save != null) {
result.setSuccess(true);
result.setId(id);
result.setMessage("保存角色成功");
} else {
result.setMessage("保存角色失败");
}
return result;
}
/**
* 删除角色
*
* @param id
* @return
*/
public RestMessage removeById(String id) {
RestMessage result = new RestMessage();
SysRole one = getById(id);
if (one == null)
throw new BusinessException("该角色不存在");
//删除角色
sysRoleRepository.delete(id);
//删除角色权限
List<SysRoleAuthority> roleAuthorities = sysRoleAuthorityService.listByRoleId(id);
if (CollectionUtils.isNotEmpty(roleAuthorities))
sysRoleAuthorityService.removeBatch(roleAuthorities);
result.setMessage("删除成功");
result.setSuccess(true);
return result;
}
/**
* 修改角色
*
* @param sysRole
* @return
*/
public RestMessage update(SysRole sysRole) {
RestMessage result = new RestMessage();
String id = sysRole.getId();
SysRole old = getById(id);
if (old == null)
throw new BusinessException("该角色不存在");
boolean b = uniqueCode(sysRole.getCode(), id);
if (!b)
throw new BusinessException("该编码已存在");
old.setModifiedTime(new Date());
old.setName(sysRole.getName());
old.setCode(sysRole.getCode());
old.setEnable(sysRole.getEnable());
old.setRemark(sysRole.getRemark());
SysRole save = sysRoleRepository.save(old);
if (save != null) {
result.setSuccess(true);
result.setId(id);
result.setMessage("修改角色成功");
} else {
result.setMessage("修改角色失败");
}
return result;
}
/**
* 根据主键查找
*
* @param id
* @return
*/
public SysRole getById(String id) {
return sysRoleRepository.findOne(id);
}
/**
* 根据是否启用列表查询
*
* @param enable
* @return
*/
public List<SysRole> listAllByEnable(String enable) {
if (StringUtils.isNotEmpty(enable))
return sysRoleRepository.getByEnable(enable);
else
return sysRoleRepository.findAll();
}
/**
* 根据用户主键,是否启用状态查询角色列表
*
* @param userId
* @param enable
* @return
*/
public List<SysRole> listByUserIdEnable(String userId, String enable) {
List<SysRole> list = new ArrayList<>();
List<SysUserRole> sysUserRoles = sysUserRoleService.listByUserId(userId);
if (sysUserRoles == null)
return list;
List<String> roleIds = sysUserRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(roleIds))
if (StringUtils.isNotEmpty(enable))
list = sysRoleRepository.getByEnableAndIdIn(enable, roleIds);
else
list = sysRoleRepository.getByIdIn(roleIds);
return list;
}
/**
* 检查code是否唯一 true唯一
*
* @param code
* @param id
* @return
*/
private boolean uniqueCode(String code, String id) {
if (StringUtils.isEmpty(code))
throw new BusinessException("code不能为空");
SysRole one = sysRoleRepository.getByCode(code);
if (one != null) {
return StringUtils.isNotEmpty(id) && id.equals(one.getId());
} else {
return true;
}
}
}