package cn.wisenergy.chnmuseum.party.web.controller;

import cn.wisenergy.chnmuseum.party.core.annotations.OperationLog;
import cn.wisenergy.chnmuseum.party.model.*;
import cn.wisenergy.chnmuseum.party.service.PermissionService;
import cn.wisenergy.chnmuseum.party.service.RolePermissionService;
import cn.wisenergy.chnmuseum.party.service.RoleService;
import cn.wisenergy.chnmuseum.party.service.impl.EmployeeRoleServiceImpl;
import cn.wisenergy.chnmuseum.party.service.impl.RoleMenuServiceImpl;
import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.stuxuhai.jpinyin.PinyinHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.*;

/**
 * 角色管理Controller
 */
@Api(tags = "角色管理")
@RequestMapping("/role")
@RestController
public class RoleController extends BaseController {

    private static final Logger LOGGER = LoggerFactory.getLogger(RoleController.class);

    @Autowired
    private RoleService roleService;

    @Autowired
    private PermissionService permissionService;

    @Autowired
    private RolePermissionService rolePermissionService;

    @Resource
    private EmployeeRoleServiceImpl employeeRoleService;

    @Resource
    private RoleMenuServiceImpl roleMenuService;

    /**
     * 获取单个角色
     *
     * @param Id
     * @return
     */
    @ApiOperation(value = "获取单个角色")
    @RequestMapping(value = "/getById", method = RequestMethod.GET)
    @RequiresPermissions("/role/getById")
    public ResponseEntity<Role> getById(String Id) {
        try {
            Role role = roleService.getById(Id);
            if (null == role) {
                return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
            }
            return ResponseEntity.ok(role);
        } catch (Exception e) {
            logger.error("查询错误!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    // 获取角色分页对象
    @ApiOperation(value = "获取角色分页对象")
    @RequestMapping(value = "/getRoleList", method = RequestMethod.GET)
    @RequiresPermissions("/role/getRoleList")
    public ResponseEntity<Page<Role>> getRoleList(String name) {
        try {
            name = StringUtils.trimToNull(name);
            QueryWrapper<Role> ew = new QueryWrapper<>();
            if (StringUtils.isNotBlank(name)) {
                ew.like("name", name);
            }
            ew.eq("is_deleted", 0);
            ew.orderByAsc("sortorder");
            Page<Role> page = this.getPage();
            return ResponseEntity.ok(this.roleService.page(page, ew));
        } catch (Exception e) {
            LOGGER.error("查询角色列表出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    /**
     * 添加
     */
    @OperationLog("添加角色")
    @ApiOperation("添加角色")
    @PostMapping(value = "/add")
    @RequiresPermissions("/role/add")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "permissionIds", value = "权限id", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "menuIds", value = "菜单id", paramType = "query", dataType = "String")})
    public ResponseEntity<Map<String, Object>> add(Role role, String permissionIds) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            QueryWrapper<Role> ew = new QueryWrapper<>();
            ew.select("max(sortorder) as sort");
            Role r = this.roleService.getOne(ew);
            if (r != null) {
                role.setSortorder(r.getSortorder() + 1);
            } else {
                role.setSortorder(1);
            }
            if (StringUtils.isNoneBlank(role.getName())) {
                ew.eq("name", role.getName());
                role.setName(StringUtils.trimToNull(role.getName()));
                role.setAlias(PinyinHelper.getShortPinyin(role.getName()));
            }
            ew.or();
            if (StringUtils.isNoneBlank(role.getAlias())) {
                ew.eq("alias", role.getAlias());
                role.setAlias(StringUtils.trimToNull(role.getAlias()));
            }
            Role one = this.roleService.getOne(ew);
            if (one != null) {
                resultMap.put("status", 400);
                resultMap.put("message", "该角色已存在");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }

            boolean ret = false;
            role.setCreateTime(new Date(System.currentTimeMillis()));
            role.setUpdateTime(role.getCreateTime());
            ret = this.roleService.save(role);

            if (permissionIds != null) {
                String[] permissionIdsSplit = permissionIds.split(",");
                // 添加新分配的权限
                List<RolePermission> permissions = new ArrayList<RolePermission>();
                RolePermission e = null;
                for (String pid : permissionIdsSplit) {
                    e = new RolePermission();
                    e.setPid(pid);
                    e.setRid(role.getId());
                    e.setCreateTime(new Date(System.currentTimeMillis()));
                    e.setUpdateTime(e.getCreateTime());
                    permissions.add(e);
                }
                ret = rolePermissionService.saveBatch(permissions);
            }
            if (!ret) {
                resultMap.put("status", 400);
                resultMap.put("message", "添加失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            // 204
            resultMap.put("status", 201);
            resultMap.put("message", "添加成功");
            return ResponseEntity.status(HttpStatus.CREATED).body(resultMap);
        } catch (Exception e) {
            logger.error("添加角色错误!", e);
        }
        resultMap.put("status", 500);
        resultMap.put("message", "操作失败");
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

    @OperationLog("编辑角色")
    @ApiOperation(value = "编辑")
    @RequestMapping(value = "/edit", method = RequestMethod.PUT)
    @RequiresPermissions("/role/edit")
    public ResponseEntity<Map<String, Object>> edit(Role role) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            QueryWrapper<Role> ew = new QueryWrapper<>();
            ew.ne("id", role.getId());
            if (StringUtils.isNoneBlank(role.getName())) {
                ew.eq("name", role.getName().trim());
                role.setAlias(PinyinHelper.getShortPinyin(role.getName().trim()));
            }
            ew.or();
            if (StringUtils.isNoneBlank(role.getAlias())) {
                ew.eq("alias", role.getAlias().trim());
            }
            Role role1 = this.roleService.getOne(ew);
            if (role1 != null) {
                resultMap.put("status", 400);
                resultMap.put("message", "角色已存在");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            role.setUpdateTime(new Date(System.currentTimeMillis()));
            boolean ret = this.roleService.updateById(role);
            if (!ret) {
                resultMap.put("status", 500);
                resultMap.put("message", "修改失败");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            } else {
                return ResponseEntity.ok().body(null);
            }
        } catch (Exception e) {
            logger.error("修改角色错误!", e);
        }
        resultMap.put("status", 500);
        resultMap.put("message", "修改失败");
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

    // 刪除
    @OperationLog("删除角色")
    @ApiOperation(value = "刪除")
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    @RequiresPermissions("/role/delete")
    public ResponseEntity<Map<String, Object>> delete(String roleId) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if ("1".equals(roleId) || "2".equals(roleId) || "3".equals(roleId) || "4".equals(roleId)) {
                resultMap.put("status", 400);
                resultMap.put("message", "该角色为默认角色不能被删除");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            QueryWrapper<EmployeeRole> ew = new QueryWrapper<EmployeeRole>();
            ew.eq("role_id", roleId);
            int count = this.employeeRoleService.count(ew);
            boolean ret1;
            boolean ret2;
            if (count > 0) {
                resultMap.put("status", 400);
                resultMap.put("message", "该角色下存在未删除的用户,请您删除用户后再删除角色!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            } else {
                Role role = new Role();
                role.setId(roleId);
                role.setIsDeleted(1);
                ret1 = this.roleService.removeById(role);
                RolePermission rp = new RolePermission();
                rp.setRid(roleId);
                ret2 = rolePermissionService.remove(new QueryWrapper<>(rp));
            }
            if (!ret1 && !ret2) {
                // 删除失败, 500
                resultMap.put("status", 500);
                resultMap.put("message", "删除失败!");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
            // 204
            resultMap.put("status", 201);
            resultMap.put("message", "删除成功!");
            return ResponseEntity.status(HttpStatus.CREATED).body(resultMap);
        } catch (Exception e) {
            LOGGER.error("删除角色错误!", e);

        }
        // 500
        resultMap.put("status", 500);
        resultMap.put("message", "删除错误!");
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
    }

    @RequestMapping(value = "/rights", method = RequestMethod.GET)
    @RequiresPermissions("/role/rights")
    public ResponseEntity<List<Map<String, String>>> rights(String roleId) {
        try {
            List<Permission> list = this.permissionService.list(null);
            QueryWrapper<RolePermission> wrapper = new QueryWrapper<>();
            List<Object> roleRightsList = null;
            if (roleId != null) {
                wrapper.eq("rid", roleId).select("pid");
                roleRightsList = this.rolePermissionService.listObjs(wrapper);
            }

            List<Map<String, String>> rightsList = new ArrayList<>();
            for (Permission p : list) {
                Map<String, String> map = new HashMap<>();
                map.put("id", p.getId());
                map.put("pId", p.getPid());
                map.put("name", p.getName());
                // 默认展开树
                map.put("open", "true");
                if (roleId != null && !p.getPid().equals("0")) {
                    // 如果角色已有该权限,则默认选中
                    if (roleRightsList.contains(p.getId())) {
                        map.put("checked", "true");
                    } else {
                        map.put("checked", "false");
                    }
                }
                rightsList.add(map);
            }
            return ResponseEntity.ok(rightsList);
        } catch (Exception e) {
            logger.error("获取角色权限失败", e.getMessage());
            e.printStackTrace();
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    /**
     * 更新角色接口权限列表
     *
     * @return
     * @Params roleId
     */
    @OperationLog("更新角色操作权限")
    @ApiOperation(value = "更新权限列表")
    @RequestMapping(value = "/updateRoleRights", method = RequestMethod.POST)
    @RequiresPermissions("/role/updateRoleRights")
    public ResponseEntity<Map<String, Object>> updateRoleRights(String roleId, String permissionIds) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (roleId != null) {
                // 查询出本角色已经分配了的权限
                RolePermission rolePermission = new RolePermission();
                rolePermission.setRid(roleId);
                QueryWrapper<RolePermission> ew = new QueryWrapper<>();
                ew.setEntity(rolePermission);
                List<RolePermission> roleRightList = this.rolePermissionService.list(ew);
                boolean ret = false;
                // 如果存在权限,先进行删除
                if (roleRightList.size() > 0) {
                    this.rolePermissionService.remove(ew);
                }

                String[] rightIds = StringUtils.split(permissionIds, ",");
                if (StringUtils.isNotBlank(permissionIds) && rightIds != null) {
                    // 添加新分配的权限
                    List<RolePermission> permissions = new ArrayList<RolePermission>();
                    RolePermission e;
                    for (String pid : rightIds) {
                        e = new RolePermission();
                        e.setPid(pid);
                        e.setRid(roleId);
                        e.setCreateTime(new Date(System.currentTimeMillis()));
                        e.setUpdateTime(e.getCreateTime());
                        permissions.add(e);
                    }
                    ret = rolePermissionService.saveBatch(permissions);
                } else {
                    resultMap.put("status", 400);
                    resultMap.put("message", "错误请求!");
                    return ResponseEntity.status(HttpStatus.CREATED).body(resultMap);
                }
                if (!ret) {
                    // 更新失败, 500
                    resultMap.put("status", 500);
                    resultMap.put("message", "更新失败!");
                    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
                }
                // 204
                resultMap.put("status", 201);
                resultMap.put("message", "更新成功!");
                return ResponseEntity.status(HttpStatus.CREATED).body(resultMap);
            } else {
                resultMap.put("status", 400);
                resultMap.put("message", "请选择角色!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
        } catch (Exception e) {
            logger.error("更新角色权限错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    /**
     * 更新角色菜单列表
     *
     * @return
     */
    @OperationLog("更新角色菜单权限")
    @ApiOperation(value = "更新菜单列表")
    @RequestMapping(value = "/updateRoleMenu", method = RequestMethod.POST)
    @RequiresPermissions("/role/updateRoleMenu")
    public ResponseEntity<Map<String, Object>> updateRoleMenu(String roleId, String menuIds) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            if (roleId != null) {
                // 查询出本角色已经分配了的菜单
                RoleMenu roleMenu = new RoleMenu();
                roleMenu.setRoleId(roleId);
                QueryWrapper<RoleMenu> ew = new QueryWrapper<>();
                ew.setEntity(roleMenu);
                List<RoleMenu> roleMenuList = this.roleMenuService.list(ew);
                boolean ret = false;
                // 如果存在菜单,先进行删除
                if (roleMenuList.size() > 0) {
                    this.roleMenuService.remove(ew);
                }

                String[] mIds = StringUtils.split(menuIds, ",");
                if (StringUtils.isNotBlank(menuIds) && mIds != null) {
                    // 添加新分配的菜单
                    List<RoleMenu> menus = new ArrayList<RoleMenu>();
                    RoleMenu e = null;
                    for (String mid : mIds) {
                        e = new RoleMenu();
                        e.setMenuId(mid);
                        e.setRoleId(roleId);
                        e.setCreateTime(new Date(System.currentTimeMillis()));
                        e.setUpdateTime(e.getCreateTime());
                        menus.add(e);
                    }
                    ret = roleMenuService.saveBatch(menus);
                    if (!ret) {
                        // 更新失败, 500
                        resultMap.put("status", 500);
                        resultMap.put("message", "更新失败!");
                        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
                    }
                }
                // 204
                resultMap.put("status", 201);
                resultMap.put("message", "更新成功!");
                return ResponseEntity.status(HttpStatus.CREATED).body(resultMap);
            } else {
                resultMap.put("status", 400);
                resultMap.put("message", "请选择角色!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
        } catch (Exception e) {
            logger.error("更新角色菜单错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    @OperationLog("启用角色")
    @ApiOperation(value = "启动")
    @RequestMapping(value = "/enableRole", method = RequestMethod.PUT)
    @RequiresPermissions("/role/enableRole")
    public ResponseEntity<Map<String, Object>> enableRole(String roleId) {
        try {
            Map<String, Object> map = new HashMap<>();
            Role entity = new Role();
            entity.setId(roleId);
            entity.setStatus(true);
            entity.setUpdateTime(new Date(System.currentTimeMillis()));
            boolean ret = this.roleService.updateById(entity);
            if (!ret) {
                map.put("status", "500");
                map.put("message", "服务器错误");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(map);
            }
            map.put("status", "201");
            map.put("message", "启用成功");
            return ResponseEntity.status(HttpStatus.CREATED).body(map);
        } catch (Exception e) {
            logger.error("用户启动出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(
                null);
    }

    // 批量启动
    @OperationLog("批量启用角色")
    @ApiOperation(value = "批量启动")
    @RequestMapping(value = "/batchEnable", method = RequestMethod.PUT)
    @RequiresPermissions("/role/batchEnable")
    public ResponseEntity<Map<String, Object>> batchEnable(String roleIds) {
        try {
            Map<String, Object> map = new HashMap<>();
            boolean flag = false;
            if (StringUtils.isNotBlank(roleIds)) {
                String[] roleIdArr = roleIds.split(",");
                Role entity = new Role();
                entity.setStatus(true);
                entity.setUpdateTime(new Date(System.currentTimeMillis()));
                for (String roleId : roleIdArr) {
                    entity.setId(roleId);
                    flag = this.roleService.updateById(entity);
                    if (!flag) {
                        break;
                    }
                }
            } else {
                map.put("status", "400");
                map.put("message", "请选择要启动的用户");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }
            if (!flag) {
                map.put("status", "400");
                map.put("message", "批量启动失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            } else {
                map.put("status", "201");
                map.put("message", "批量启动成功");
                return ResponseEntity.status(HttpStatus.CREATED).body(map);
            }
        } catch (Exception e) {
            logger.error("批量启动失败!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    /**
     * 禁用
     *
     * @param roleId
     * @return
     */
    @OperationLog("禁用角色")
    @ApiOperation(value = "禁用")
    @RequestMapping(value = "/disable", method = RequestMethod.PUT)
    @RequiresPermissions("/role/disable")
    public ResponseEntity<Map<String, Object>> disableRole(String roleId) {
        try {
            Map<String, Object> map = new HashMap<>();
            Role entity = new Role();
            entity.setId(roleId);
            entity.setStatus(false);
            entity.setUpdateTime(new Date(System.currentTimeMillis()));
            boolean ret = this.roleService.updateById(entity);

            if (!ret) {
                map.put("status", "400");
                map.put("message", "禁用错误");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }
            map.put("status", "201");
            map.put("message", "禁用成功");
            return ResponseEntity.status(HttpStatus.CREATED).body(map);
        } catch (Exception e) {
            logger.error("禁用用户出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(
                null);
    }

    // 批量禁用
    @OperationLog("批量禁用角色")
    @ApiOperation(value = "批量禁用")
    @RequestMapping(value = "/batchDis", method = RequestMethod.PUT)
    @RequiresPermissions("/role/batchDis")
    public ResponseEntity<Map<String, Object>> batchDis(String roleIds) {
        try {
            Map<String, Object> map = new HashMap<>();
            boolean flag = false;
            if (StringUtils.isNotBlank(roleIds)) {
                String[] roleIdArr = roleIds.split(",");
                Role entity = new Role();
                entity.setStatus(false);
                entity.setUpdateTime(new Date(System.currentTimeMillis()));
                for (String roleId : roleIdArr) {
                    entity.setId(roleId);
                    flag = this.roleService.updateById(entity);
                    if (!flag) {
                        break;
                    }
                }
            } else {
                map.put("status", "400");
                map.put("message", "请选择要禁用的用户");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }
            if (!flag) {
                map.put("status", "400");
                map.put("message", "禁用失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            } else {
                map.put("status", "201");
                map.put("message", "禁用成功");
                return ResponseEntity.status(HttpStatus.CREATED).body(map);
            }
        } catch (Exception e) {
            logger.error("用户禁用失败!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    // 批量删除
    @OperationLog("批量删除角色")
    @ApiOperation(value = "批量删除")
    @RequestMapping(value = "/batchDel", method = RequestMethod.DELETE)
    @RequiresPermissions("/role/batchDel")
    public ResponseEntity<Map<String, Object>> batchDel(String roleIds) {
        try {
            Map<String, Object> map = new HashMap<>();
            boolean flag = false;
            boolean batchDelflag = false;
            String selectRoleIds = "";
            if (StringUtils.isNotBlank(roleIds)) {
                String[] roleIdArr = roleIds.split(",");
                Role entity = new Role();
                entity.setIsDeleted(1);
                for (String roleId : roleIdArr) {
                    if ("1".equals(roleId) || "2".equals(roleId) || "3".equals(roleId) || "4".equals(roleId)) {
                        if ("".equals(selectRoleIds)) {
                            selectRoleIds = roleId;
                        } else {
                            selectRoleIds += "," + roleId;
                        }
                        continue;
                    }
                    entity.setId(roleId);
                    this.roleService.updateById(entity);
                    //同时删除角色的权限
                    RolePermission rp = new RolePermission();
                    rp.setRid(roleId);
                    flag = rolePermissionService.remove(new QueryWrapper<>(rp));

                    if (!flag) {
                        batchDelflag = true;
                        break;
                    }
                }
            } else {
                map.put("status", "400");
                map.put("message", "请选择要删除的角色");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }

            if (batchDelflag) {
                map.put("status", 400);
                map.put("message", "删除失败");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }
            if (!"".equals(selectRoleIds) && !flag) {
                map.put("status", 400);
                map.put("message", "系统默认角色不能被删除");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(map);
            }

            map.put("status", 201);
            String message = "删除成功";
            if (!"".equals(selectRoleIds) && flag) {
                message = "系统默认角色不能被删除,其他选中角色删除成功";
            }
            map.put("message", message);
            return ResponseEntity.status(HttpStatus.CREATED).body(map);
        } catch (Exception e) {
            logger.error("角色删除失败!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    // 获取角色下拉框数据
    @ApiOperation(value = "获取角色下拉框数据")
    @RequestMapping(value = "/getRoleBox", method = RequestMethod.GET)
    @RequiresPermissions("/role/getRoleBox")
    public ResponseEntity<List<Role>> getRoleBox() {
        try {
            QueryWrapper<Role> ew = new QueryWrapper<>();
            ew.select("id", "name");
            ew.eq("is_deleted", 0);
            ew.eq("status", 1);
            ew.orderByAsc("sortorder");
            ew.orderByDesc("update_time");
            return ResponseEntity.ok(this.roleService.list(ew));
        } catch (Exception e) {
            LOGGER.error("查询角色列表出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }
}