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