package com.hehenian.manager.actions.sys;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.hehenian.common.utils.ResponseUtils;
import com.hehenian.manager.actions.BaseAction;
import com.hehenian.manager.commons.Constants;
import com.hehenian.manager.commons.Pagination;
import com.hehenian.manager.modules.sys.model.Authorities;
import com.hehenian.manager.modules.sys.model.Module;
import com.hehenian.manager.modules.sys.model.Resources;
import com.hehenian.manager.modules.sys.model.UsersRoles;
import com.hehenian.manager.modules.sys.service.AuthorityService;
import com.hehenian.manager.modules.sys.service.ModuleService;
import com.hehenian.manager.modules.users.model.Managers;
import com.hehenian.manager.modules.users.model.Roles;
import com.hehenian.manager.modules.users.service.UserService;
@Controller
@RequestMapping("/menuAdmin/*")
public class AdminController extends BaseAction {
@Autowired
protected UserService userService;
@Autowired
protected ModuleService moduleService;
@Autowired
protected AuthorityService authorityService;
@RequestMapping("index")
public String menuAdmin(ModelMap modelMap){
return "/menuAdmin/index";
}
@RequestMapping("listDatas")
@ResponseBody
public void menuDatas(Pagination<Resources> pagination,HttpServletRequest request,
HttpServletResponse response){
Pagination<Resources> usersList=moduleService.getResources(pagination, "");
outPrint(response, JSONObject.fromObject(usersList,
getDefaultJsonConfig()));
}
@RequestMapping("addMenuDialog")
public String addMenuDialog(ModelMap modelMap){
int id=getInt("id");
if(id!=-1){
Resources r=moduleService.getOneResource(id);
if(r!=null){
modelMap.put("resource", r);
}
}
List<Module> moduleList=moduleService.getAllModules();
modelMap.put("modules", moduleList);
return "/menuAdmin/addMenuDialog";
}
/**
* 新增菜单
* @param user
* @param request
* @param response
*/
@ResponseBody
@RequestMapping("addMenu")
public void addMenu(@ModelAttribute Resources r,HttpServletRequest request,
HttpServletResponse response){
if(!validateResources(r)){
ResponseUtils.renderJson(response, null, "{\"ret\":-1,\"msg\":\"新增菜单失败\"}");
return;
}
int ret=moduleService.saveResources(r);
if(ret==Constants.SUCCESS){
ResponseUtils.renderJson(response, null,"{\"ret\":1,\"msg\":\"新增菜单成功\"}");
}else{
ResponseUtils.renderJson(response, null,"{\"ret\":-1,\"msg\":\"新增菜单失败\"}");
}
}
private boolean validateResources(Resources r){
if(StringUtils.isBlank(r.getName())){
return false;
}
if(StringUtils.isBlank(r.getResourceStr())){
return false;
}
if(StringUtils.isBlank(r.getModule())){
return false;
}
return true;
}
@ResponseBody
@RequestMapping("deleteOneResource")
public void deleteOneResource(HttpServletRequest request,
HttpServletResponse response){
String id=getString("id");
if(StringUtils.isNotBlank(id) && id.matches("\\d+")){
int ret=moduleService.deleteOneResource(Integer.parseInt(id));
ResponseUtils.renderJson(response, null,"{\"ret\":"+ret+"}");
}else{
ResponseUtils.renderJson(response, null,"{\"ret\":-1,\"msg\":\"删除失败\"}");
}
}
@RequestMapping("userAdmin")
public String userAdmin(ModelMap modelMap){
return "/userAdmin/index";
}
@ResponseBody
@RequestMapping("userDatas")
public void userDatas(Pagination<Managers> pagination,HttpServletRequest request,
HttpServletResponse response ){
Pagination<Managers> usersList=userService.getManagersByPage(pagination, "");
outPrint(response, JSONObject.fromObject(usersList,
getDefaultJsonConfig()));
}
@RequestMapping("addUserDialog")
public String addUserDialog(ModelMap modelMap){
int userId=getInt("userId");
if(userId!=-1){
Managers user=userService.getUserById(userId);
modelMap.put("user", user);
}
return "/userAdmin/addUserDialog";
}
/**
* 新增用户
* @param request
* @param response
*/
@ResponseBody
@RequestMapping("addUser")
public void addUser(@ModelAttribute Managers user,HttpServletRequest request,
HttpServletResponse response){
if(!validateUserInfo(user)){
ResponseUtils.renderJson(response, null,"{\"ret\":-1,\"msg\":\"新增用户失败\"}");
return;
}
int ret=userService.addUsers(user);
if(ret==1){
ResponseUtils.renderJson(response, null,"{\"ret\":1,\"msg\":\"新增用户成功\"}");
}else{
ResponseUtils.renderJson(response, null,"{\"ret\":-1,\"msg\":\"新增用户失败\"}");
}
}
/**
* 验证新增用户
* @param user
* @return
*/
public boolean validateUserInfo(Managers user){
if(StringUtils.isBlank(user.getUsername())){
return false;
}
if(StringUtils.isBlank(user.getPassword())){
return false;
}
if(StringUtils.isBlank(user.getNickname())){
return false;
}
return true;
}
@RequestMapping("deleteUser/{userId}")
@ResponseBody
public void deleteOneUser(@PathVariable String userId,HttpServletRequest request,
HttpServletResponse response){
if (StringUtils.isBlank(userId) || !userId.matches("\\d+")) {
ResponseUtils.renderJson(response, null, "{\"ret\":-1}");
return;
}
int ret = userService.deleteOneUser(Integer.parseInt(userId));
ResponseUtils.renderJson(response, null, "{\"ret\":" + ret + "}");
}
@RequestMapping("rolesIndex")
public String rolesIndex(ModelMap modelMap){
return "/roleAdmin/rolesIndex";
}
/**
* 角色列表
* @param pagination
* @param request
* @param response
*/
@RequestMapping("roleList")
public void roleDatas(Pagination<Roles> pagination,HttpServletRequest request,
HttpServletResponse response){
String roleName=getString("roleName");
Pagination<Roles> roleList=userService.getRolesByPage(pagination, roleName);
outPrint(response, JSONObject.fromObject(roleList,
getDefaultJsonConfig()));
}
@RequestMapping("addRoleDialog")
public String addRoleDialog(ModelMap modelMap){
int roleId=getInt("roleId");
if(roleId!=-1){
Roles role=userService.getOneRoleById(roleId);
modelMap.put("role", role);
}
return "/roleAdmin/addRoleDialog";
}
/**
* 新增或者修改角色
* @param role
* @param request
* @param response
*/
@RequestMapping("addOneRole")
@ResponseBody
public void addOneRole(@ModelAttribute Roles role,HttpServletRequest request,
HttpServletResponse response){
if(!validateRole(role)){
ResponseUtils.renderJson(response, null, "{\"ret\":-1,\"msg\":\"新增角色失败\"}");
return;
}
int ret = userService.updateOneRole(role);
ResponseUtils.renderJson(response, null, "{\"ret\":"+ret+",\"msg\":\"新增角色失败\"}");
}
private boolean validateRole(Roles role){
if(StringUtils.isBlank(role.getName())){
return false;
}
if(StringUtils.isBlank(role.getRoleDesc())){
return false;
}
return true;
}
/**
* 删除一角色
* @param roleId
* @param request
* @param response
*/
@RequestMapping("deleteOneRole/{roleId}")
@ResponseBody
public void deleteOneRole(@PathVariable String roleId,HttpServletRequest request,
HttpServletResponse response){
if(StringUtils.isNotBlank(roleId) && roleId.matches("\\d+")){
int ret=userService.deleteOneRole(Integer.parseInt(roleId));
ResponseUtils.renderJson(response, null,"{\"ret\":"+ret+"}");
}
}
/**
* 显示角色权限
* @param modelMap
* @return
*/
@RequestMapping("showRolesAuthorityDialog/{roleId}")
public String showRolesAuthorityDialog(@PathVariable String roleId,ModelMap modelMap){
if(StringUtils.isNotBlank(roleId) && roleId.matches("\\d+")){
Roles role=userService.getOneRoleById(Integer.parseInt(roleId));
modelMap.put("role", role);
}
return "/roleAdmin/showRolesAuthorityDialog";
}
/**
* 获取在角色下或者不在角色下的权限
* @param pagination
* @param request
* @param response
*/
@RequestMapping("authoritiesInRolesOrNot")
@ResponseBody
public void getInOrNotAuthoritiesByRoleId(Pagination<Authorities> pagination,HttpServletRequest request,
HttpServletResponse response){
int roleId=getInt("roleId");
int inRoleOrNot=getInt("inRoleOrNot");
Pagination<Authorities> authList=authorityService.getInOrNotAuthoritiesByRoleId(pagination, roleId, inRoleOrNot==1);
outPrint(response, JSONObject.fromObject(authList,
getDefaultJsonConfig()));
}
/**
* 角色绑定用户的方法
* @param roleId
* @param modelMap
* @return
*/
@RequestMapping("rolesBindUsers/{roleId}")
public String rolesBindUsers(@PathVariable String roleId,ModelMap modelMap){
if(StringUtils.isBlank(roleId) ||!roleId.matches("\\d+")){
return Constants.INVALIDPAGE;
}
Roles role=userService.getOneRoleById(Integer.parseInt(roleId));
if(role==null){
return Constants.INVALIDPAGE;
}else{
modelMap.put("role", role);
return "/roleAdmin/rolesBindUsers";
}
}
@RequestMapping("users2Roles")
@ResponseBody
public void users2Roles(Pagination<Managers> page,HttpServletRequest request,
HttpServletResponse response){
int roleId=getInt("roleId");
int inOrNot=getInt("inOrNot");
//角色ID不为空,并且制定是在角色内或者非该角色标识才进行查询
if(roleId!=-1 && inOrNot!=-1){
Pagination<Managers> list=userService.getManagersInOrNotInRoles(page, roleId, inOrNot==1);
outPrint(response, JSONObject.fromObject(list,
getDefaultJsonConfig()));
}
}
@RequestMapping("addUserRoles")
@ResponseBody
public void addUsersRoles(@ModelAttribute UsersRoles userRoles,HttpServletRequest request,
HttpServletResponse response){
if(!checkUsersRoles(userRoles)){
ResponseUtils.renderJson(response, null, "{\"ret\":-1}");
return;
}
userRoles.setEnabled(true);
int ret=userService.addUsersRoles(userRoles);
ResponseUtils.renderJson(response, null, "{\"ret\":" + ret + "}");
}
@RequestMapping("deleteUserRoles")
@ResponseBody
public void deleteUsersRoles(@ModelAttribute UsersRoles userRoles,HttpServletRequest request,
HttpServletResponse response){
if(!checkUsersRoles(userRoles)){
ResponseUtils.renderJson(response, null, "{\"ret\":-1}");
return;
}
int ret=userService.deleteUsersRoles(userRoles);
ResponseUtils.renderJson(response, null, "{\"ret\":" + ret + "}");
}
private boolean checkUsersRoles(UsersRoles ur){
if(ur.getRoleId()!=null && ur.getUserId()!=null){
return true;
}
return false;
}
}