package com.sp2p.action.admin; import java.io.IOException; import java.sql.SQLException; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.shove.Convert; import com.shove.data.DataException; import com.shove.util.SqlInfusion; import com.shove.web.action.BasePageAction; import com.shove.web.util.JSONUtils; import com.sp2p.constants.IConstants; import com.sp2p.entity.Admin; import com.sp2p.service.admin.RightsService; import com.sp2p.service.admin.RoleRightsService; import com.sp2p.service.admin.RoleService; @SuppressWarnings({ "serial", "unchecked" }) public class RoleAction extends BasePageAction { public static Log log = LogFactory.getLog(RoleAction.class); private RightsService rightsService; private RoleService roleService; private RoleRightsService roleRightsService; private List<Map<String,Object>> rightsList; /** * 查询权限集合 * @return * @throws SQLException * @throws DataException */ public String addRoleInit() throws SQLException, DataException{ return SUCCESS; } /** * 添加角色权限 * @return * @throws IOException */ public String addRole() throws IOException{ JSONObject obj = new JSONObject(); String ids = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("ids")), null); String roleName = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("roleName")), null); String description = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("description")), null); if(StringUtils.isBlank(roleName)||roleName.length()<=0||roleName.length()>20){ obj.put("msg", "添加失败,角色名长度为1~20!"); JSONUtils.printObject(obj); return null; } if(StringUtils.isNotBlank(description)&&description.length()>500){ obj.put("msg", "添加失败,角色名长度不得大于500!"); JSONUtils.printObject(obj); return null; } if(StringUtils.isBlank(ids)){ obj.put("msg", "请选择权限!"); JSONUtils.printObject(obj); return null; } String[] rightIds = ids.split(","); int length = rightIds.length; if(length<0){ obj.put("msg", "请选择权限!"); JSONUtils.printObject(obj); return null; } long[] rightsIds = new long[length]; for (int i = 0; i < rightIds.length; i++) { long id = Convert.strToLong(rightIds[i], 0);//由于数据库编号没有0,这里给默认值是为了防止重复 if(id==0){ obj.put("msg", "数据错误!"); JSONUtils.printObject(obj); return null; } rightsIds[i] = id; } long roleId = -1; try { roleId = roleService.addRole(rightsIds, roleName, description); Admin admin = (Admin) session().getAttribute(IConstants.SESSION_ADMIN); operationLogService.addOperationLog("t_role", admin.getUserName(),IConstants.INSERT, admin.getLastIP(), 0, "新增角色信息", 2); } catch (Exception e) { log.error(e); e.printStackTrace(); obj.put("msg", "添加失败!"); JSONUtils.printObject(obj); return null; } if(roleId<=0){ obj.put("msg", "添加失败!"); JSONUtils.printObject(obj); return null; } obj.put("msg", "1"); JSONUtils.printObject(obj); return null; } /** * 查询角色初始化 * @throws DataException * @throws SQLException */ public String queryRoleList() throws SQLException, DataException{ roleService.queryRolePage(pageBean); int pageNum = (int) (pageBean.getPageNum() - 1)* pageBean.getPageSize(); request().setAttribute("pageNum", pageNum); return SUCCESS; } /** * 修改角色前初始化 * @return * @throws SQLException * @throws DataException */ public String updateRoleInit() throws SQLException, DataException{ long id = Convert.strToLong(request("id"), -1); if(id<=0){ return INPUT; } paramMap = roleService.queryRoleById(id); String rightsIds = roleRightsService.queryRoleRightsIdByRoleId(id); request().setAttribute("rightsIds", rightsIds); return SUCCESS; } /** * 修改角色权限 * @return * @throws IOException */ public String updateRole() throws IOException{ JSONObject obj = new JSONObject(); long roleId = Convert.strToLong(request("roleId"), -1); String ids = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("ids")), null); String roleName = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("roleName")), null); String description = Convert.strToStr(SqlInfusion.FilteSqlInfusion(request("description")), null); if(roleId<=0){ obj.put("msg", "添加失败,数据错误!"); JSONUtils.printObject(obj); return null; } if(StringUtils.isBlank(roleName)||roleName.length()<=0||roleName.length()>20){ obj.put("msg", "添加失败,角色名长度为1~20!"); JSONUtils.printObject(obj); return null; } if(StringUtils.isNotBlank(description)&&description.length()>500){ obj.put("msg", "添加失败,角色名长度不得大于500!"); JSONUtils.printObject(obj); return null; } if(StringUtils.isBlank(ids)){ obj.put("msg", "请选择权限!"); JSONUtils.printObject(obj); return null; } String[] rightIds = ids.split(","); int length = rightIds.length; if(length<0){ obj.put("msg", "请选择权限!"); JSONUtils.printObject(obj); return null; } long[] rightsIds = new long[length]; for (int i = 0; i < rightIds.length; i++) { long id = Convert.strToLong(rightIds[i], 0);//由于数据库编号没有0,这里给默认值是为了防止重复 if(id==0){ obj.put("msg", "数据错误!"); JSONUtils.printObject(obj); return null; } rightsIds[i] = id; } long returnId = -1; try { returnId = roleService.updateRole(rightsIds,roleId, roleName, description); Admin admin = (Admin) session().getAttribute(IConstants.SESSION_ADMIN); operationLogService.addOperationLog("t_role", admin.getUserName(),IConstants.UPDATE, admin.getLastIP(), 0, "修改角色权限", 2); } catch (Exception e) { log.error(e); e.printStackTrace(); obj.put("msg", "添加失败!"); JSONUtils.printObject(obj); return null; } if(returnId<=0){ obj.put("msg", "添加失败!"); JSONUtils.printObject(obj); return null; } obj.put("msg", "1"); JSONUtils.printObject(obj); return null; } /** * 删除角色 * @return * @throws SQLException */ public String deleteRole() throws SQLException{ long roleId = Convert.strToLong(request("id"), -1); if(roleId<=0){ return SUCCESS; } roleService.deleteRole(roleId); Admin admin = (Admin) session().getAttribute(IConstants.SESSION_ADMIN); operationLogService.addOperationLog("t_role", admin.getUserName(),IConstants.DELETE, admin.getLastIP(), 0, "删除id为"+roleId+"的角色", 2); return SUCCESS; } public void setRightsService(RightsService rightsService) { this.rightsService = rightsService; } public List<Map<String, Object>> getRightsList() throws SQLException, DataException { if(rightsList!=null){ return rightsList; } rightsList = rightsService.queryRightsList(); return rightsList; } public void setRoleService(RoleService roleService) { this.roleService = roleService; } public void setRoleRightsService(RoleRightsService roleRightsService) { this.roleRightsService = roleRightsService; } }