1 package com.supwisdom.institute.backend.system.api.v1.admin;
3 import io.swagger.annotations.Api;
5 import java.util.HashMap;
7 import lombok.extern.slf4j.Slf4j;
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.data.domain.Page;
11 import org.springframework.http.HttpStatus;
12 import org.springframework.util.MimeTypeUtils;
13 import org.springframework.web.bind.annotation.DeleteMapping;
14 import org.springframework.web.bind.annotation.GetMapping;
15 import org.springframework.web.bind.annotation.PathVariable;
16 import org.springframework.web.bind.annotation.PostMapping;
17 import org.springframework.web.bind.annotation.PutMapping;
18 import org.springframework.web.bind.annotation.RequestBody;
19 import org.springframework.web.bind.annotation.RequestMapping;
20 import org.springframework.web.bind.annotation.ResponseBody;
21 import org.springframework.web.bind.annotation.ResponseStatus;
22 import org.springframework.web.bind.annotation.RestController;
24 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
25 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
26 import com.supwisdom.institute.backend.system.api.vo.request.PermissionCreateRequest;
27 import com.supwisdom.institute.backend.system.api.vo.request.PermissionQueryRequest;
28 import com.supwisdom.institute.backend.system.api.vo.request.PermissionUpdateRequest;
29 import com.supwisdom.institute.backend.system.api.vo.response.PermissionCreateResponseData;
30 import com.supwisdom.institute.backend.system.api.vo.response.PermissionLoadResponseData;
31 import com.supwisdom.institute.backend.system.api.vo.response.PermissionQueryResponseData;
32 import com.supwisdom.institute.backend.system.api.vo.response.PermissionRemoveResponseData;
33 import com.supwisdom.institute.backend.system.api.vo.response.PermissionUpdateResponseData;
34 import com.supwisdom.institute.backend.system.domain.entity.Permission;
35 import com.supwisdom.institute.backend.system.domain.service.PermissionService;
37 @Api(value = "SystemAdminOperation", tags = { "SystemAdminOperation" }, description = "操作的操作接口")
40 @RequestMapping("/v1/admin/operations")
41 public class AdminOperationController {
44 private PermissionService permissionService;
46 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
47 @ResponseStatus(value = HttpStatus.OK)
49 public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
51 if (queryRequest.getMapBean() == null) {
52 queryRequest.setMapBean(new HashMap<String, Object>());
54 queryRequest.getMapBean().put("type", Permission.TYPE_OPERATION);
56 Page<Permission> page = permissionService.selectPageList(
57 queryRequest.isLoadAll(),
58 queryRequest.getPageIndex(),
59 queryRequest.getPageSize(),
60 queryRequest.getMapBean(),
61 queryRequest.getOrderBy());
63 PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
65 return new DefaultApiResponse<PermissionQueryResponseData>(data);
68 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
69 @ResponseStatus(value = HttpStatus.OK)
71 public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
73 if (id == null || id.length() == 0) {
74 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
77 Permission permission = permissionService.selectById(id);
79 if (permission == null) {
80 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
82 if (!Permission.TYPE_OPERATION.equals(permission.getType())) {
83 throw new RuntimeException("exception.get.domain.type.error");
86 PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
88 return new DefaultApiResponse<PermissionLoadResponseData>(data);
91 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
92 @ResponseStatus(value = HttpStatus.OK)
94 public DefaultApiResponse<PermissionCreateResponseData> create(
95 @RequestBody PermissionCreateRequest createRequest) {
99 Permission permission = createRequest.getEntity();
100 permission.setType(Permission.TYPE_OPERATION);
102 Permission ret = permissionService.insert(permission);
104 PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
106 return new DefaultApiResponse<PermissionCreateResponseData>(data);
109 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
110 @ResponseStatus(value = HttpStatus.OK)
112 public DefaultApiResponse<PermissionUpdateResponseData> update(
113 @PathVariable("id") String id,
114 @RequestBody PermissionUpdateRequest updateRequest) {
116 if (id == null || id.length() == 0) {
117 throw new RuntimeException("exception.update.id.must.not.empty");
120 Permission tmp = permissionService.selectById(id);
122 throw new RuntimeException("exception.update.domain.not.exist");
124 if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
125 throw new RuntimeException("exception.update.domain.type.error");
128 Permission permission = updateRequest.getEntity();
129 permission.setId(id);
131 permission = EntityUtils.merge(tmp, permission);
133 Permission ret = permissionService.update(permission);
135 PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
137 return new DefaultApiResponse<PermissionUpdateResponseData>(data);
140 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
141 @ResponseStatus(value = HttpStatus.OK)
143 public DefaultApiResponse<PermissionRemoveResponseData> delete(
144 @PathVariable("id") String id) {
146 if (id == null || id.length() == 0) {
147 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
150 Permission tmp = permissionService.selectById(id);
152 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
154 if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
155 throw new RuntimeException("exception.delete.domain.type.error");
158 permissionService.deleteById(id);
160 PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
161 return new DefaultApiResponse<PermissionRemoveResponseData>(data);