a41509551290a30a608fc24db9bee421fa38e7f0
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
2
3 import java.util.HashMap;
4
5 import io.swagger.annotations.Api;
6 import lombok.extern.slf4j.Slf4j;
7
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;
20
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;
31
32 @Api(value = "BaseAdminPermission", tags = { "BaseAdminPermission" }, description = "权限的操作接口")
33 @Slf4j
34 @RestController
35 @RequestMapping("/v1/admin/permissions")
36 public class AdminPermissionController {
37
38   @Autowired
39   private PermissionService permissionService;
40
41   @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
42   @ResponseStatus(value = HttpStatus.OK)
43   @ResponseBody
44   public DefaultApiResponse<PermissionTreeResponseData> tree() {
45     
46     PermissionTreeNode tree = permissionService.selectPermissionTree(Permission.APPLICATION_ID, null);
47
48     PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
49
50     return new DefaultApiResponse<PermissionTreeResponseData>(data);
51   }
52
53   @RequestMapping(method = RequestMethod.GET, path = "/{id}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
54   @ResponseBody
55   public DefaultApiResponse<PermissionRelatedResourcesResponseData> permissionResources(
56       @PathVariable("id") String id, 
57       PermissionRelatedResourcesRequest request) {
58
59     if (id == null || id.length() == 0) {
60       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
61     }
62
63     Permission permission = permissionService.selectById(id);
64
65     if (permission == null) {
66       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
67     }
68
69     if (request.getMapBean() == null) {
70       request.setMapBean(new HashMap<String, Object>());
71     }
72     request.getMapBean().put("permissionId", permission.getId());
73
74     Page<PermissionResource> page = permissionService.selectPermissionResources(
75         request.isLoadAll(),
76         request.getPageIndex(),
77         request.getPageSize(), 
78         request.getMapBean());
79
80     PermissionRelatedResourcesResponseData data = PermissionRelatedResourcesResponseData.of(request).build(page);
81
82     return new DefaultApiResponse<PermissionRelatedResourcesResponseData>(data);
83   }
84
85   @RequestMapping(method = RequestMethod.POST, path = "/{id}/resources", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
86   @ResponseBody
87   public DefaultApiResponse<PermissionRelateResourcesResponseData> relateResources(
88       @PathVariable("id") String id, 
89       @RequestBody PermissionRelateResourcesRequest permissionResources) {
90
91     if (id == null || id.length() == 0) {
92       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
93     }
94
95     Permission permission = permissionService.selectById(id);
96
97     if (permission == null) {
98       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
99     }
100
101     permissionService.relatePermissionResources(permission, permissionResources.getPermissionResources());
102
103     PermissionRelateResourcesResponseData data = PermissionRelateResourcesResponseData.of("info.relate.success");
104
105     return new DefaultApiResponse<PermissionRelateResourcesResponseData>(data);
106   }
107
108 }