package com.lyms.cm.controller.sys;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.lyms.cm.entity.sys.SysPermissions;
import com.lyms.cm.entity.sys.SysRolePermissionMaps;
import com.lyms.cm.entity.sys.SysRoles;
import com.lyms.cm.service.sys.SysPermissionsService;
import com.lyms.cm.service.sys.SysRolePermissionMapsService;
import com.lyms.cm.service.sys.SysRolesService;
import com.lyms.constants.OperationName;
import com.lyms.util.InstanceUtils;
import com.lyms.util.StrUtils;
import com.lyms.web.bean.AjaxResult;
import com.lyms.web.controller.BaseController;
/**
* <p>
* 角色表 前端控制器
* </p>
*
* @author maliang
* @since 2017-03-02
*/
@Controller
@RequestMapping("/sysRoles")
public class SysRolesController extends BaseController {
@Autowired
private SysRolesService sysRolesService;
@Autowired
private SysPermissionsService sysPermissionsService;
@Autowired
private SysRolePermissionMapsService sysRolePermissionMapsService;
@RequestMapping("/toList")
public String list() {
return "/role/role_list";
}
@RequestMapping(value = { "/treeTest" }, method = RequestMethod.GET)
public String treeTest(Model model) {
return "/role/tree_test";
}
@RequestMapping(value = "/getRoleList", method = { RequestMethod.POST })
@ResponseBody
public java.util.Map<String, Object> getRoleList() {
Page<SysRoles> page = getPage();
EntityWrapper<SysRoles> ew = new EntityWrapper<SysRoles>();
ew.where("ifDel=0");
String id = getParameter("id");
String name = getParameter("name");
String type = getParameter("type");
if(StrUtils.isNotEmpty(id)){
ew.and("id like {0}", name.trim() + "%");
}
if(StrUtils.isNotEmpty(name)){
ew.and("name like {0}", name.trim() + "%");
}
if(StrUtils.isNotEmpty(type)){
ew.and("type={0}", type);
}
return toGridData(sysRolesService.selectPage(page, ew));
}
/**
* 跳转到编辑页面
*
* @return
*/
@RequestMapping(value = { "/{id}/toEdit" }, method = RequestMethod.GET)
public String toEdit(@PathVariable String id, Model model) {
if (!StringUtils.isBlank(id) && !"0".equals(id)) {
SysRoles role = sysRolesService.selectById(id);
model.addAttribute("role", role);
//当前用户权限数据
List<SysRolePermissionMaps> rpList = sysRolePermissionMapsService
.selectList(new EntityWrapper<SysRolePermissionMaps>().where("role_id={0}", "'" + id + "'"));
StringBuilder permissionSB = new StringBuilder();
for(SysRolePermissionMaps rpEntity : rpList){
permissionSB.append(","+rpEntity.getPermissionId());
}
model.addAttribute("rolePermissions", permissionSB.toString().replaceFirst(",", ""));
}
//所有权限数据
List<SysPermissions> perList = sysPermissionsService.selectList(null);
model.addAttribute("perString", toJson(perList));
return "/role/role_edit";
}
/**
* 创建用户
* <p>
* TODO
*
* @param user
* @return
*/
@RequestMapping(value = "/create", method = RequestMethod.POST)
@ResponseBody
public AjaxResult create(SysRoles role, AjaxResult ajaxResult) {
boolean tag = false;
String roleId = StrUtils.uuid();
role.setId(roleId);
role.setIfdel(0);
if(null == role.getEnable()){
role.setEnable(1);
}
tag = sysRolesService.createRole(role, getRolePermissionList(roleId, getParameter("resource")));
return handleAjaxResult(ajaxResult, tag, OperationName.CREATE);
}
/**
* 修改信息
*/
@RequestMapping(value = "/update", method = { RequestMethod.POST })
@ResponseBody
public AjaxResult update(SysRoles role, AjaxResult ajaxResult) {
boolean tag = false;
if(null == role.getEnable()){
role.setEnable(1);
}
tag = sysRolesService.updateRole(role, getRolePermissionList(role.getId(), getParameter("resource")));
return handleAjaxResult(ajaxResult, tag, OperationName.UPDATE);
}
/**
* 删除用户
*
* @return
*/
@RequestMapping(value = "/{id}/delete", method = { RequestMethod.GET, RequestMethod.POST })
@ResponseBody
public AjaxResult delete(@PathVariable String id, AjaxResult ajaxResult) {
int tag = sysRolesService.deleteLogicById(id);
return handleAjaxResult(ajaxResult, tag, OperationName.DELETE);
}
/**
* <li>@Description:获取角色权限对应关系列表
* <li>@param roleId 角色id
* <li>@param permissionIds 逗号分隔的权限id字符串
* <li>@return
* <li>创建人:方承
* <li>创建时间:2017年3月8日
* <li>修改人:
* <li>修改时间:
*/
private List<SysRolePermissionMaps> getRolePermissionList(String roleId, String permissionIds) {
List<SysRolePermissionMaps> rpList = InstanceUtils.newArrayList();
if (StrUtils.isNotEmpty(permissionIds)) {
String[] permissionArray = permissionIds.split(",");
for (String permissionId : permissionArray) {
if (StrUtils.isNotEmpty(permissionId)) {
SysRolePermissionMaps rpentity = new SysRolePermissionMaps();
rpentity.setId(StrUtils.uuid());
rpentity.setRoleId(roleId);
rpentity.setPermissionId(permissionId);
rpentity.setIfdel(0);
rpList.add(rpentity);
}
}
}
return rpList;
}
}