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; } }