All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yuweix.kuafu.permission.service.SysRoleServiceImpl Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package com.yuweix.kuafu.permission.service;


import com.yuweix.kuafu.core.DateUtil;
import com.yuweix.kuafu.dao.mybatis.where.Criteria;
import com.yuweix.kuafu.dao.mybatis.where.Operator;
import com.yuweix.kuafu.permission.dao.SysAdminRoleRelDao;
import com.yuweix.kuafu.permission.dao.SysRoleDao;
import com.yuweix.kuafu.permission.dao.SysRolePermissionRelDao;
import com.yuweix.kuafu.permission.dto.RoleDto;
import com.yuweix.kuafu.permission.model.SysRole;
import com.yuweix.kuafu.sequence.base.Sequence;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;


/**
 * @author yuwei
 */
@Service("sysRoleService")
public class SysRoleServiceImpl implements SysRoleService {
	@Resource
	private SysRoleDao sysRoleDao;
	@Resource
	private SysRolePermissionRelDao sysRolePermissionRelDao;
	@Resource
	private SysAdminRoleRelDao sysAdminRoleRelDao;

	@Resource
	private Sequence seqSysRole;


	@Override
	public List queryAllRoleList() {
		List roleList = sysRoleDao.findList(null, null);
		return roleList == null || roleList.size() <= 0
				? new ArrayList<>()
				: roleList.stream().map(this::toRoleDto).collect(Collectors.toList());
	}
	private RoleDto toRoleDto(SysRole role) {
		if (role == null) {
			return null;
		}
		RoleDto dto = new RoleDto();
		dto.setId(role.getId());
		dto.setRoleNo(role.getRoleNo());
		dto.setRoleName(role.getRoleName());
		dto.setCreator(role.getCreator());
		dto.setCreateTime(role.getCreateTime() == null ? "" : DateUtil.formatDate(role.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
		dto.setModifier(role.getModifier());
		dto.setModifyTime(role.getModifyTime() == null ? "" : DateUtil.formatDate(role.getModifyTime(), "yyyy-MM-dd HH:mm:ss"));
		return dto;
	}

	@Override
	public long addRole(String roleNo, String roleName, String creator) {
		if (!StringUtils.hasText(roleName)) {
			throw new RuntimeException("角色名不能为空");
		}
		SysRole role0 = sysRoleDao.queryRoleByNo(roleNo);
		if (role0 != null) {
			throw new RuntimeException("角色编码已存在[" + roleNo + "]");
		}

		long id = seqSysRole.next();
		SysRole role = new SysRole();
		role.setId(id);
		role.setRoleNo(roleNo);
		role.setRoleName(roleName);
		role.setCreator(creator);
		role.setCreateTime(new Date());
		sysRoleDao.insertSelective(role);
		return id;
	}

	@Override
	public int queryRoleCount(String keywords) {
		Criteria criteria = Criteria.of("1", Operator.eq, 1);
		if (keywords != null && !"".equals(keywords.trim())) {
			criteria = Criteria.of("role_no", Operator.like, "%" + keywords + "%")
					.or("role_name", Operator.like, "%" + keywords + "%");
		}
		return sysRoleDao.findCount(criteria);
	}

	@Override
	public List queryRoleList(String keywords, int pageNo, int pageSize) {
		Criteria criteria = Criteria.of("1", Operator.eq, 1);
		if (keywords != null && !"".equals(keywords.trim())) {
			criteria = Criteria.of("role_no", Operator.like, "%" + keywords + "%")
					.or("role_name", Operator.like, "%" + keywords + "%");
		}
		List roleList = sysRoleDao.findPageList(criteria, pageNo, pageSize, null);
		return roleList == null || roleList.size() <= 0
				? new ArrayList<>()
				: roleList.stream().map(this::toRoleDto).collect(Collectors.toList());
	}

	@Override
	public Long queryIdByRoleNo(String roleNo) {
		SysRole role = sysRoleDao.queryRoleByNo(roleNo);
		return role == null ? null : role.getId();
	}

	@Override
	public RoleDto queryRoleById(long roleId) {
		SysRole role = sysRoleDao.get(roleId);
		return toRoleDto(role);
	}

	@Override
	public void updateRole(long id, String roleNo, String roleName, String modifier) {
		if (!StringUtils.hasText(roleName)) {
			throw new RuntimeException("角色名不能为空");
		}

		SysRole role = sysRoleDao.get(id);
		if (role == null) {
			throw new RuntimeException("角色名[id=" + id + "]不存在");
		}
		SysRole role0 = sysRoleDao.queryRoleByNo(roleNo);
		if (role0 != null && role0.getId() != id) {
			throw new RuntimeException("角色编码已存在[" + roleNo + "]");
		}

		role.setRoleNo(roleNo);
		role.setRoleName(roleName);
		role.setModifier(modifier);
		role.setModifyTime(new Date());
		sysRoleDao.updateByPrimaryKeySelective(role);
	}

	@Override
	public void deleteRole(long roleId) {
		int cnt = sysRolePermissionRelDao.findCount(Criteria.of("role_id", Operator.eq, roleId));
		if (cnt > 0) {
			throw new RuntimeException("已绑定权限,不能删除");
		}

		int cnt2 = sysAdminRoleRelDao.findCount(Criteria.of("role_id", Operator.eq, roleId));
		if (cnt2 > 0) {
			throw new RuntimeException("已绑定管理员,不能删除");
		}
		sysRoleDao.deleteByKey(roleId);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy