package com.ylcm.sys.service.impl;

import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ylcm.sys.domain.Role;
import com.ylcm.sys.mapper.RoleMapper;
import com.ylcm.sys.service.RoleService;


@SuppressWarnings({ "unchecked", "rawtypes" })
@Service
public class RoleServceImpl implements RoleService {

	@Autowired
	private RoleMapper roleMapper;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#addRole(com.yaozhitech.dspoms
	 * .domain.Role)
	 */
	@Override
	public void addRole(Role role) {

		/**
		 * 1、调用添加角色接口
		 */
		roleMapper.addRole(role);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#updRole(com.yaozhitech.dspoms
	 * .domain.Role)
	 */
	@Override
	public void updRole(Role role) {

		/**
		 * 1、调用修改角色接口
		 */
		roleMapper.updRole(role);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#delRole(int)
	 */
	@Override
	public void delRole(int roleId) {

		/**
		 * 1、调用删除角色接口
		 */
		roleMapper.delRole(roleId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#getRowCount(java.lang.String,
	 * java.lang.String, int, int)
	 */
	@Override
	public int getRowCount(String name, String code, int pageIndex, int pageSize) {
		/**
		 * * 1、组装查询条件map
		 */
		Map map = new HashMap();
		map.put("name", name);
		map.put("code", code);
		map.put("pageIndex", (pageIndex - 1) * pageSize);
		map.put("pageSize", pageSize);
		/**
		 * 2、调用接口（根据条件查询角色总数）
		 */
		return roleMapper.getRowCount(map);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#getRoleList(java.lang.String,
	 * java.lang.String, int, int)
	 */
	@Override
	public List<Role> getRoleList(String name, String code, int pageIndex,
			int pageSize) {
		/**
		 * * 1、组装查询条件map
		 */
		Map map = new HashMap();
		map.put("name", name);
		map.put("code", code);
		map.put("pageIndex", (pageIndex - 1) * pageSize);
		map.put("pageSize", pageSize);
		/**
		 * 2、调用接口（根据条件查询角色列表）
		 */
		return roleMapper.getRoleList(map);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#getRoleList()
	 */
	@Override
	public List<Role> getRoleList() {

		/**
		 * 1、调用接口（查询角色列表）
		 */
		return roleMapper.getRolesList();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#getRoleById(int)
	 */
	@Override
	public Role getRoleById(int roleId) {

		/**
		 * 1、调用接口（根据角色标识获取角色信息）
		 */
		return roleMapper.getRoleById(roleId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#getRoleByCode(java.lang.String)
	 */
	@Override
	public Role getRoleByCode(String code) {

		/**
		 * 1、调用接口（根据角色编码获取角色）
		 */
		return roleMapper.getRoleByCode(code);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#getRolesByUserId(int)
	 */
	@Override
	public Role getRolesByUserId(int userId) {

		/**
		 * 1、调用接口（根据用户标识获取用户角色）
		 */
		return roleMapper.getRolesByUserId(userId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.yaozhitech.dspoms.service.RoleService#delRolesByIds(java.lang.String
	 * [])
	 */
	@Override
	public void delRolesByIds(String[] ids) {

		/**
		 * 1、调用接口（删除角色信息(只删除未关联用户的权限)）
		 */
		roleMapper.delRolesByIds(ids);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#delUserRolesByUserId(int)
	 */
	@Override
	public void delUserRolesByUserId(int userId) {

		/**
		 * 1、调用接口（根据用户标识删除用户角色）
		 */
		roleMapper.delUserRolesByUserId(userId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#addUserRole(int, int)
	 */
	@Override
	public void addUserRole(int userId, int roleId) {

		/**
		 * 1、组装查询条件map
		 */
		Map map = new HashMap();
		map.put("userId", userId);
		map.put("roleId", roleId);
		Timestamp timestamp = new Timestamp(new Date().getTime());
		map.put("crtTime", timestamp);
		map.put("updTime", timestamp);

		/**
		 * 2、调用接口（新增用户角色关联信息）
		 */
		roleMapper.addUserRole(map);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#delRolePermsByRoleId(int)
	 */
	@Override
	public void delRolePermsByRoleId(int roleId) {

		/**
		 * 1、调用接口（根据角色标识删除角色权限）
		 */
		roleMapper.delRolePermsByRoleId(roleId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.yaozhitech.dspoms.service.RoleService#addRolePerm(java.util.Map)
	 */
	@Override
	public void addRolePerm(Map map) {

		/**
		 * 1、调用接口（新增角色权限）
		 */
		roleMapper.addRolePerm(map);
	}
}