package com.sp2p.service.admin;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.shove.base.BaseService;
import com.shove.data.DataException;
import com.shove.data.dao.MySQL;
import com.shove.vo.PageBean;
import com.sp2p.constants.IConstants;
import com.sp2p.dao.admin.RoleDao;
import com.sp2p.dao.admin.RoleRightsDao;
public class RoleService extends BaseService {
public static Log log = LogFactory.getLog(RoleService.class);
private RoleDao roleDao;
private RoleRightsDao roleRightsDao;
public Long addRole(long[] rightsIds,String roleName,String description) throws Exception{
Connection conn = MySQL.getConnection();
Long roleId = -1L;
try{
roleId = roleDao.addRole(conn, roleName, description);
if(roleId<=0){
conn.rollback();
return -1L;
}
for (long rightsId : rightsIds) {
roleRightsDao.addRoleRihts(conn,roleId,rightsId);
}
conn.commit();
}catch (Exception e) {
conn.rollback();
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
return roleId;
}
/**
* 查询角色集合
* @return
* @throws SQLException
* @throws DataException
*/
public List<Map<String,Object>> queryRoleList() throws SQLException, DataException{
Connection conn = connectionManager.getConnection();
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
try {
list = roleDao.queryRoleList(conn);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
return list;
}
/**
* 查询角色集合
* @return
* @throws SQLException
* @throws DataException
*/
public void queryRolePage(PageBean<Map<String,Object>> pageBean) throws SQLException, DataException{
Connection conn = connectionManager.getConnection();
try {
dataPage(conn, pageBean, " t_role ", " * ", " order by id desc ", "");
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
}
/**
* 根据角色编号查询角色信息
* @param id
* @return
* @throws SQLException
* @throws DataException
*/
public Map<String,String> queryRoleById(long id) throws SQLException, DataException{
Connection conn = connectionManager.getConnection();
Map<String,String> map = new HashMap<String, String>();
try {
map = roleDao.queryRoleById(conn, id);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
return map;
}
/**
* 修改角色信息
* @param rightsIds
* @param roleId
* @param roleName
* @param description
* @return
* @throws Exception
*/
public Long updateRole(long[] rightsIds,long roleId,String roleName,String description) throws Exception{
Connection conn = MySQL.getConnection();
Long returnId = -1L;
try{
returnId = roleDao.updateRole(conn, roleId, roleName, description);
if(returnId<=0){
return -1L;
}
roleRightsDao.deleteRoleRightsByRoleId(conn, roleId);
for (long rightsId : rightsIds) {
roleRightsDao.addRoleRihts(conn,roleId,rightsId);
}
conn.commit();
}catch (Exception e) {
conn.rollback();
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
return returnId;
}
/**
* 根据角色编号删除角色信息
* @param roleId
* @throws SQLException
*/
public void deleteRole(long roleId) throws SQLException{
Connection conn = connectionManager.getConnection();
try {
roleDao.deleteRole(conn, roleId);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
}finally{
conn.close();
}
}
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
public void setRoleRightsDao(RoleRightsDao roleRightsDao) {
this.roleRightsDao = roleRightsDao;
}
}