PermissionController.java 12.5 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.web.controller;
liqin's avatar
liqin committed
2

liqin's avatar
liqin committed
3 4 5 6 7
import cn.chnmuseum.party.core.annotations.OperationLog;
import cn.chnmuseum.party.model.Permission;
import cn.chnmuseum.party.model.RolePermission;
import cn.chnmuseum.party.service.PermissionService;
import cn.chnmuseum.party.service.RolePermissionService;
liqin's avatar
liqin committed
8 9
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
liqin's avatar
liqin committed
10
import cn.chnmuseum.party.web.controller.base.BaseController;
liqin's avatar
liqin committed
11 12
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
wzp's avatar
wzp committed
13
import org.apache.shiro.authz.annotation.RequiresAuthentication;
liqin's avatar
liqin committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

/**
 * 角色管理Controller
 */
@RestController
@RequestMapping(value = "/permission")
public class PermissionController extends BaseController {

    private static final Logger logger = LoggerFactory.getLogger(PermissionController.class);

    @Autowired
    private PermissionService permissionService;

    @Autowired
    private RolePermissionService rolePermissionService;

    /**
     * 获取单个权限
     */
    @ApiOperation(value = "获取单个权限")
    @RequestMapping(value = "/getById", method = RequestMethod.GET)
wzp's avatar
wzp committed
47
    @RequiresAuthentication  //@RequiresPermissions("/permission/getById")
liqin's avatar
liqin committed
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    public ResponseEntity<Permission> getById(String Id) {
        try {
            Permission one = permissionService.getById(Id);
            if (null == one) {
                return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
            }
            return ResponseEntity.ok(one);
        } catch (Exception e) {
            logger.error("查询错误!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    // 获取的顶级权限列表
    @ApiOperation(value = "获取的顶级权限列表")
    @RequestMapping(value = "/getTopPermissionList", method = RequestMethod.GET)
wzp's avatar
wzp committed
64
    @RequiresAuthentication  //@RequiresPermissions("/permission/getPermissionList")
liqin's avatar
liqin committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
    public ResponseEntity<List<Permission>> getTopPermissionList() {
        try {
            QueryWrapper<Permission> wrapper = new QueryWrapper<>();
            wrapper.eq("pid", 0).orderByAsc("create_time");
            List<Permission> permissionList = this.permissionService.list(wrapper);
            return ResponseEntity.ok(permissionList);
        } catch (Exception e) {
            logger.error("查询角色列表出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }


    // 获取权限分页对象
    @ApiOperation(value = "获取权限分页对象")
    @RequestMapping(value = "/getPermissionList", method = RequestMethod.GET)
wzp's avatar
wzp committed
81
    @RequiresAuthentication  //@RequiresPermissions("/permission/getPermissionList")
liqin's avatar
liqin committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
    public ResponseEntity<Page<Permission>> getPermissionList(QueryWrapper<Permission> ew, String name, String math) {
        try {
            Page<Permission> page = this.getPage();
            ew.orderByDesc("create_time");
            if (StringUtils.isNotBlank(name)) {
                ew.like("name", name.trim());
            }
            if (StringUtils.isNotBlank(math) && StringUtils.isNotEmpty(math)) {
                ew.like("url", math.trim());
            }

            Page<Permission> list = this.permissionService.page(page, ew);
            return ResponseEntity.ok(list);
        } catch (Exception e) {
            logger.error("查询角色列表出错!", e);
        }
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
    }

    @OperationLog("添加权限")
    @ApiOperation(value = "添加")
    @RequestMapping(value = "/add", method = RequestMethod.POST)
wzp's avatar
wzp committed
104
    @RequiresAuthentication  //@RequiresPermissions("/permission/add")
liqin's avatar
liqin committed
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
    public ResponseEntity<Map<String, Object>> add(Permission permission) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            boolean ret = false;
            if (!permission.getPid().equals(0)) {
                Permission parent = this.permissionService.getById(permission.getPid());
                String parentName = parent.getName().trim();
                permission.setName(parentName + "-" + permission.getName().trim());
            }
            QueryWrapper<Permission> ew = new QueryWrapper<>();
            if (StringUtils.isNoneBlank(permission.getName())) {
                permission.setName(permission.getName().trim());
                ew.eq("name", permission.getName());
                Permission one = this.permissionService.getOne(ew);
                if (one != null) {
                    resultMap.put("status", 400);
                    resultMap.put("message", "该权限已存在!");
                    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                }
            }
            permission.setUrl(permission.getUrl().trim());
            permission.setCreateTime(new Date(System.currentTimeMillis()));
            permission.setUpdateTime(permission.getCreateTime());
            ret = this.permissionService.save(permission);
            if (!ret) {
                // 更新失败, 400
                resultMap.put("status", 400);
                resultMap.put("message", "添加失败!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            // 204
liqin's avatar
liqin committed
136
            resultMap.put("status", 200);
liqin's avatar
liqin committed
137
            resultMap.put("message", "添加成功!");
liqin's avatar
liqin committed
138
            return ResponseEntity.status(HttpStatus.OK).body(resultMap);
liqin's avatar
liqin committed
139 140 141 142 143 144 145 146 147 148 149
        } catch (Exception e) {
            logger.error("添加权限错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    // 修改
    @OperationLog("修改权限")
    @ApiOperation(value = "修改")
    @RequestMapping(value = "/edit", method = RequestMethod.PUT)
wzp's avatar
wzp committed
150
    @RequiresAuthentication  //@RequiresPermissions("/permission/edit")
liqin's avatar
liqin committed
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
    public ResponseEntity<Map<String, Object>> edit(Permission permission) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            boolean ret = false;
            if (permission.getId() != null) {
                if (!permission.getPid().equals(0)) {
                    Permission parent = this.permissionService.getById(permission.getPid());
                    String parentName = parent.getName().trim();
                    permission.setName(parentName + "-" + permission.getName().trim());
                }
                QueryWrapper<Permission> ew = new QueryWrapper<>();
                if (StringUtils.isNoneBlank(permission.getName())) {
                    permission.setName(permission.getName().trim());
                    ew.ne("id",permission.getId());
                    ew.eq("name", permission.getName());
                    Permission one = this.permissionService.getOne(ew);
                    if (one != null) {
                        resultMap.put("status", 400);
                        resultMap.put("message", "该权限已存在!");
                        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
                    }
                }
                permission.setUrl(permission.getUrl().trim());
                ret = this.permissionService.updateById(permission);
            } else {
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
            }
            if (!ret) {
                // 更新失败, 500
                resultMap.put("status", 500);
                resultMap.put("message", "更新错误!");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
            // 204
liqin's avatar
liqin committed
185
            resultMap.put("status", 200);
liqin's avatar
liqin committed
186
            resultMap.put("message", "更新成功!");
liqin's avatar
liqin committed
187
            return ResponseEntity.status(HttpStatus.OK).body(resultMap);
liqin's avatar
liqin committed
188 189 190 191 192 193 194 195 196 197 198
        } catch (Exception e) {
            logger.error("编辑角色错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    // 刪除
    @OperationLog("删除权限")
    @ApiOperation(value = "刪除")
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
wzp's avatar
wzp committed
199
    @RequiresAuthentication  //@RequiresPermissions("/permission/delete")
liqin's avatar
liqin committed
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
    public ResponseEntity<Map<String, Object>> delete(@RequestParam(value = "permissionId", required = true) String permissionId) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            boolean ret = false;
            if (StringUtils.isNotBlank(permissionId)) {
                RolePermission rolePermission = new RolePermission();
                rolePermission.setPid(permissionId);
                QueryWrapper<RolePermission> ew = new QueryWrapper<RolePermission>();
                ew.setEntity(rolePermission);
                List<RolePermission> roleRightList = this.rolePermissionService.list(ew);
                // 如果存在权限,先进行删除
                if (roleRightList.size() > 0) {
                    for (RolePermission rp : roleRightList) {
                        this.rolePermissionService.remove(new QueryWrapper<RolePermission>(rp));
                    }
                }
                ret = this.permissionService.removeById(permissionId);
            } else {
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
            }
            if (!ret) {
                // 删除失败, 500
                resultMap.put("status", 500);
                resultMap.put("message", "删除失败!");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
            // 204
liqin's avatar
liqin committed
227
            resultMap.put("status", 200);
liqin's avatar
liqin committed
228
            resultMap.put("message", "删除成功!");
liqin's avatar
liqin committed
229
            return ResponseEntity.status(HttpStatus.OK).body(resultMap);
liqin's avatar
liqin committed
230 231 232 233 234 235 236 237 238 239 240
        } catch (Exception e) {
            logger.error("删除权限错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

    // 批量刪除
    @OperationLog("批量删除权限")
    @ApiOperation(value = "批量刪除")
    @RequestMapping(value = "/batchDel", method = RequestMethod.DELETE)
wzp's avatar
wzp committed
241
    @RequiresAuthentication  //@RequiresPermissions("/permission/batchDel")
liqin's avatar
liqin committed
242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
    public ResponseEntity<Map<String, Object>> batchDel(@RequestParam(value = "permissionIds") String permissionIds) {
        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
        try {
            boolean ret = false;
            if (StringUtils.isNotBlank(permissionIds)) {
                QueryWrapper<RolePermission> ew = new QueryWrapper<RolePermission>();
                ew.in("pid", StringUtils.split(permissionIds, ","));
                List<RolePermission> roleRightList = this.rolePermissionService.list(ew);
                // 如果存在权限,先进行删除
                if (roleRightList.size() > 0) {
                    for (RolePermission rp : roleRightList) {
                        this.rolePermissionService.remove(new QueryWrapper<>(rp));
                    }
                }

                ret = this.permissionService.removeByIds(Arrays.asList(StringUtils.split(permissionIds, ",")));
            } else {
                resultMap.put("status", 400);
                resultMap.put("message", "错误请求!");
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(resultMap);
            }
            if (!ret) {
                // 删除失败, 500
                resultMap.put("status", 500);
                resultMap.put("message", "删除失败!");
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
            }
            // 204
liqin's avatar
liqin committed
270
            resultMap.put("status", 200);
liqin's avatar
liqin committed
271
            resultMap.put("message", "删除成功!");
liqin's avatar
liqin committed
272
            return ResponseEntity.status(HttpStatus.OK).body(resultMap);
liqin's avatar
liqin committed
273 274 275 276 277 278 279 280
        } catch (Exception e) {
            logger.error("删除角色错误!", e);
        }
        // 500
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }

}