1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
3 import java.util.HashMap;
5 import io.swagger.annotations.Api;
6 import lombok.extern.slf4j.Slf4j;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.data.domain.Page;
10 import org.springframework.http.HttpStatus;
11 import org.springframework.util.MimeTypeUtils;
12 import org.springframework.web.bind.annotation.GetMapping;
13 import org.springframework.web.bind.annotation.PathVariable;
14 import org.springframework.web.bind.annotation.RequestBody;
15 import org.springframework.web.bind.annotation.RequestMapping;
16 import org.springframework.web.bind.annotation.RequestMethod;
17 import org.springframework.web.bind.annotation.ResponseBody;
18 import org.springframework.web.bind.annotation.ResponseStatus;
19 import org.springframework.web.bind.annotation.RestController;
21 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelateResourcesRequest;
22 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelatedResourcesRequest;
23 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelateResourcesResponseData;
24 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelatedResourcesResponseData;
25 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionTreeResponseData;
26 import com.supwisdom.institute.backend.base.domain.entity.Permission;
27 import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
28 import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
29 import com.supwisdom.institute.backend.base.domain.service.PermissionService;
30 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
32 @Api(value = "BaseAdminPermission", tags = { "BaseAdminPermission" }, description = "权限的操作接口")
35 @RequestMapping("/v1/admin/permissions")
36 public class AdminPermissionController {
39 private PermissionService permissionService;
41 @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
42 @ResponseStatus(value = HttpStatus.OK)
44 public DefaultApiResponse<PermissionTreeResponseData> tree() {
46 PermissionTreeNode tree = permissionService.selectPermissionTree(Permission.APPLICATION_ID, null);
48 PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
50 return new DefaultApiResponse<PermissionTreeResponseData>(data);
53 @RequestMapping(method = RequestMethod.GET, path = "/{id}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
55 public DefaultApiResponse<PermissionRelatedResourcesResponseData> permissionResources(
56 @PathVariable("id") String id,
57 PermissionRelatedResourcesRequest request) {
59 if (id == null || id.length() == 0) {
60 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
63 Permission permission = permissionService.selectById(id);
65 if (permission == null) {
66 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
69 if (request.getMapBean() == null) {
70 request.setMapBean(new HashMap<String, Object>());
72 request.getMapBean().put("permissionId", permission.getId());
74 Page<PermissionResource> page = permissionService.selectPermissionResources(
76 request.getPageIndex(),
77 request.getPageSize(),
78 request.getMapBean());
80 PermissionRelatedResourcesResponseData data = PermissionRelatedResourcesResponseData.of(request).build(page);
82 return new DefaultApiResponse<PermissionRelatedResourcesResponseData>(data);
85 @RequestMapping(method = RequestMethod.POST, path = "/{id}/resources", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
87 public DefaultApiResponse<PermissionRelateResourcesResponseData> relateResources(
88 @PathVariable("id") String id,
89 @RequestBody PermissionRelateResourcesRequest permissionResources) {
91 if (id == null || id.length() == 0) {
92 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
95 Permission permission = permissionService.selectById(id);
97 if (permission == null) {
98 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
101 permissionService.relatePermissionResources(permission, permissionResources.getPermissionResources());
103 PermissionRelateResourcesResponseData data = PermissionRelateResourcesResponseData.of("info.relate.success");
105 return new DefaultApiResponse<PermissionRelateResourcesResponseData>(data);