1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
3 import io.swagger.annotations.Api;
5 import java.util.ArrayList;
6 import java.util.HashMap;
10 import lombok.extern.slf4j.Slf4j;
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.data.domain.Page;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.util.MimeTypeUtils;
16 import org.springframework.web.bind.annotation.DeleteMapping;
17 import org.springframework.web.bind.annotation.GetMapping;
18 import org.springframework.web.bind.annotation.PathVariable;
19 import org.springframework.web.bind.annotation.PostMapping;
20 import org.springframework.web.bind.annotation.PutMapping;
21 import org.springframework.web.bind.annotation.RequestBody;
22 import org.springframework.web.bind.annotation.RequestMapping;
23 import org.springframework.web.bind.annotation.ResponseBody;
24 import org.springframework.web.bind.annotation.ResponseStatus;
25 import org.springframework.web.bind.annotation.RestController;
27 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
28 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
29 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
30 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
31 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
32 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
33 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
34 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
35 import com.supwisdom.institute.backend.base.domain.entity.Permission;
36 import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
37 import com.supwisdom.institute.backend.base.domain.service.PermissionService;
38 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
39 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
41 @Api(value = "BaseAdminOperation", tags = { "BaseAdminOperation" }, description = "操作的操作接口")
44 @RequestMapping("/v1/admin/operations")
45 public class AdminOperationController {
48 private PermissionService permissionService;
50 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
51 @ResponseStatus(value = HttpStatus.OK)
53 public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
55 if (queryRequest.getMapBean() == null) {
56 queryRequest.setMapBean(new HashMap<String, Object>());
58 queryRequest.getMapBean().put("type", Permission.TYPE_OPERATION);
60 Page<Permission> page = permissionService.selectPageList(
61 queryRequest.isLoadAll(),
62 queryRequest.getPageIndex(),
63 queryRequest.getPageSize(),
64 queryRequest.getMapBean(),
65 queryRequest.getOrderBy());
67 PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
69 return new DefaultApiResponse<PermissionQueryResponseData>(data);
72 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
73 @ResponseStatus(value = HttpStatus.OK)
75 public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
77 if (id == null || id.length() == 0) {
78 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
81 Permission permission = permissionService.selectById(id);
83 if (permission == null) {
84 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
86 if (!Permission.TYPE_OPERATION.equals(permission.getType())) {
87 throw new RuntimeException("exception.get.domain.type.error");
90 List<String> resourceIds = new ArrayList<>();
92 Map<String, Object> mapBean = new HashMap<>();
93 mapBean.put("permissionId", id);
94 Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
95 for (PermissionResource permissionResource : permissionResources) {
96 resourceIds.add(permissionResource.getResourceId());
99 PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
101 return new DefaultApiResponse<PermissionLoadResponseData>(data);
104 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
105 @ResponseStatus(value = HttpStatus.OK)
107 public DefaultApiResponse<PermissionCreateResponseData> create(
108 @RequestBody PermissionCreateRequest createRequest) {
112 Permission permission = createRequest.getEntity();
113 permission.setType(Permission.TYPE_OPERATION);
115 Permission ret = permissionService.insert(permission);
117 PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
119 return new DefaultApiResponse<PermissionCreateResponseData>(data);
122 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
123 @ResponseStatus(value = HttpStatus.OK)
125 public DefaultApiResponse<PermissionUpdateResponseData> update(
126 @PathVariable("id") String id,
127 @RequestBody PermissionUpdateRequest updateRequest) {
129 if (id == null || id.length() == 0) {
130 throw new RuntimeException("exception.update.id.must.not.empty");
133 Permission tmp = permissionService.selectById(id);
135 throw new RuntimeException("exception.update.domain.not.exist");
137 if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
138 throw new RuntimeException("exception.update.domain.type.error");
141 Permission permission = updateRequest.getEntity();
142 permission.setId(id);
144 permission = EntityUtils.merge(tmp, permission);
146 Permission ret = permissionService.update(permission);
148 PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
150 return new DefaultApiResponse<PermissionUpdateResponseData>(data);
153 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
154 @ResponseStatus(value = HttpStatus.OK)
156 public DefaultApiResponse<PermissionRemoveResponseData> delete(
157 @PathVariable("id") String id) {
159 if (id == null || id.length() == 0) {
160 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
163 Permission tmp = permissionService.selectById(id);
165 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
167 if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
168 throw new RuntimeException("exception.delete.domain.type.error");
171 permissionService.deleteById(id);
173 PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
174 return new DefaultApiResponse<PermissionRemoveResponseData>(data);