RoleServiceImpl.java 3.63 KB
package com.bjivt.service.showtime.impl;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.bjivt.dao.showtime.CompetenceDao;
import com.bjivt.dao.showtime.RoleDao;
import com.bjivt.entity.showtime.Competence;
import com.bjivt.entity.showtime.Role;
import com.bjivt.service.showtime.CompetenceService;
import com.bjivt.service.showtime.RoleService;
import com.bjivt.util.Pager;

 
@Component
public class RoleServiceImpl implements RoleService {
	@Autowired(required = true)  
	private RoleDao roleDao;
	@Autowired(required = true)  
	private CompetenceService competenceService;
	@Autowired(required = true)  
	private CompetenceDao competenceDao;
	@Override
	public List<Role> findRoles(Role role,Pager page) {
		page.setCount(roleDao.getRoleCount(role));
		role.setStartRow(page.from);
		role.setSizeRow(page.getSize());
		return roleDao.rolePageList(role);
	}
	@Override
	public List<Role> findAllRoles(Role role) {
		role.setStartRow(null);
		role.setSizeRow(null);
		return roleDao.rolePageList(role);
	}
	@Override
	public int insertRole(Role role,String[] competenceIds,String[] elists) throws Exception {
		 int r = roleDao.saveRole(role);
		 Role role2=roleDao.rolePageList(role).get(0);
		 Integer roleId = role2.getId();
		 
		 Set<Integer> competenceIdSet = new HashSet<Integer>();
		 Set<Integer> parentIds = null;
		 for(String id : competenceIds){
			 competenceIdSet.add(Integer.valueOf(id));
			 parentIds = competenceService.getParentCompetences(Integer.valueOf(id));
			if(null != parentIds){
				competenceIdSet.addAll(parentIds);
			} 
		 }
		 for(Integer competenceId : competenceIdSet){
		 	try{
		 		//如果存在,执行保存方法会报错
				roleDao.saveRoleCompetence(roleId, competenceId);
			}catch (Exception e){}
		 }
		 return r;
	}

	@Override
	public Role getRoleById(Integer roleId) {
		Role role=roleDao.getRoleById(roleId);
		List<Competence> compentences = roleDao.findCompetencesForRoleId(roleId);
		role.setCompetences(compentences);
		return role;
	}
	 
	public void getCompetenceTree(Integer roleId) {
		List<Integer> competenceIds = roleDao.findCompetenceIdsForRoleId(roleId);
		List<Competence> list = competenceDao.findCompetenceById(competenceIds);
	}
/***
 * 根据角色 ID 获得 对应的权限对象IDs
 */
	@Override
	public List<Integer> findCompetenceIdsForRoleId(Integer roleId) {
		return roleDao.findCompetenceIdsForRoleId(roleId);
	}
	
	
		@Override
		public List<Competence> findCompetencesForRoleId(Integer roleId) {
			return roleDao.findCompetencesForRoleId(roleId);
		}
	
	@Override
	public int deleteRole(Integer roleId) {
		roleDao.deleteCompetenceForRole(roleId);
		//roleDao.deleteRoleState(roleId);
		return roleDao.deleteRole(roleId);
	}

	@Override
	@Transactional
	public int updateRole(Role role,String[] competenceIds,String[] elists) throws Exception {
		roleDao.updateRole(role);
		roleDao.deleteCompetenceForRole( role.getId());
		//保存新的权限资源
		 Set<Integer> competenceIdSet = new HashSet<Integer>();
		 Set<Integer> parentIds = null;
		 for(String id : competenceIds){
			 competenceIdSet.add(Integer.valueOf(id));
			 parentIds = competenceService.getParentCompetences(Integer.valueOf(id));
			if(null != parentIds){
				competenceIdSet.addAll(parentIds);
			}
		 }
		 for(Integer competenceId : competenceIdSet){
			 roleDao.saveRoleCompetence( role.getId(), competenceId);
		 }
		return 0;
	}

	@Override
	public List<Role> findRoleByIds(List<Integer> ids) {
		return roleDao.findRoleByIds(ids);
	}
}