1 package com.supwisdom.institute.backend.system.api.v1.admin;
3 import java.util.HashMap;
7 import io.swagger.annotations.Api;
8 import lombok.extern.slf4j.Slf4j;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.data.domain.Page;
12 import org.springframework.http.HttpStatus;
13 import org.springframework.util.MimeTypeUtils;
14 import org.springframework.web.bind.annotation.DeleteMapping;
15 import org.springframework.web.bind.annotation.GetMapping;
16 import org.springframework.web.bind.annotation.PathVariable;
17 import org.springframework.web.bind.annotation.PostMapping;
18 import org.springframework.web.bind.annotation.PutMapping;
19 import org.springframework.web.bind.annotation.RequestBody;
20 import org.springframework.web.bind.annotation.RequestMapping;
21 import org.springframework.web.bind.annotation.ResponseBody;
22 import org.springframework.web.bind.annotation.ResponseStatus;
23 import org.springframework.web.bind.annotation.RestController;
25 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
26 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
27 import com.supwisdom.institute.backend.system.api.vo.request.PermissionCreateRequest;
28 import com.supwisdom.institute.backend.system.api.vo.request.PermissionQueryRequest;
29 import com.supwisdom.institute.backend.system.api.vo.request.PermissionUpdateRequest;
30 import com.supwisdom.institute.backend.system.api.vo.response.PermissionCreateResponseData;
31 import com.supwisdom.institute.backend.system.api.vo.response.PermissionLoadResponseData;
32 import com.supwisdom.institute.backend.system.api.vo.response.PermissionQueryResponseData;
33 import com.supwisdom.institute.backend.system.api.vo.response.PermissionRemoveResponseData;
34 import com.supwisdom.institute.backend.system.api.vo.response.PermissionTreeResponseData;
35 import com.supwisdom.institute.backend.system.api.vo.response.PermissionUpdateResponseData;
36 import com.supwisdom.institute.backend.system.domain.entity.Permission;
37 import com.supwisdom.institute.backend.system.domain.model.PermissionTreeNode;
38 import com.supwisdom.institute.backend.system.domain.service.PermissionService;
40 @Api(value = "SystemAdminMenu", tags = { "SystemAdminMenu" }, description = "菜单的操作接口")
43 @RequestMapping("/v1/admin/menus")
44 public class AdminMenuController {
47 private PermissionService permissionService;
49 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
50 @ResponseStatus(value = HttpStatus.OK)
52 public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
54 if (queryRequest.getMapBean() == null) {
55 queryRequest.setMapBean(new HashMap<String, Object>());
57 queryRequest.getMapBean().put("type", Permission.TYPE_MENU);
59 Page<Permission> page = permissionService.selectPageList(
60 queryRequest.isLoadAll(),
61 queryRequest.getPageIndex(),
62 queryRequest.getPageSize(),
63 queryRequest.getMapBean(),
64 queryRequest.getOrderBy());
66 PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
68 return new DefaultApiResponse<PermissionQueryResponseData>(data);
71 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
72 @ResponseStatus(value = HttpStatus.OK)
74 public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
76 if (id == null || id.length() == 0) {
77 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
80 Permission permission = permissionService.selectById(id);
82 if (permission == null) {
83 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
85 if (!Permission.TYPE_MENU.equals(permission.getType())) {
86 throw new RuntimeException("exception.get.domain.type.error");
89 PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
91 return new DefaultApiResponse<PermissionLoadResponseData>(data);
94 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
95 @ResponseStatus(value = HttpStatus.OK)
97 public DefaultApiResponse<PermissionCreateResponseData> create(
98 @RequestBody PermissionCreateRequest createRequest) {
102 Permission permission = createRequest.getEntity();
103 permission.setType(Permission.TYPE_MENU);
105 Permission ret = permissionService.insert(permission);
107 PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
109 return new DefaultApiResponse<PermissionCreateResponseData>(data);
112 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
113 @ResponseStatus(value = HttpStatus.OK)
115 public DefaultApiResponse<PermissionUpdateResponseData> update(
116 @PathVariable("id") String id,
117 @RequestBody PermissionUpdateRequest updateRequest) {
119 if (id == null || id.length() == 0) {
120 throw new RuntimeException("exception.update.id.must.not.empty");
123 Permission tmp = permissionService.selectById(id);
125 throw new RuntimeException("exception.update.domain.not.exist");
127 if (!Permission.TYPE_MENU.equals(tmp.getType())) {
128 throw new RuntimeException("exception.update.domain.type.error");
131 Permission permission = updateRequest.getEntity();
132 permission.setId(id);
134 permission = EntityUtils.merge(tmp, permission);
136 Permission ret = permissionService.update(permission);
138 PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
140 return new DefaultApiResponse<PermissionUpdateResponseData>(data);
143 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
144 @ResponseStatus(value = HttpStatus.OK)
146 public DefaultApiResponse<PermissionRemoveResponseData> delete(
147 @PathVariable("id") String id) {
149 if (id == null || id.length() == 0) {
150 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
153 Permission tmp = permissionService.selectById(id);
155 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
157 if (!Permission.TYPE_MENU.equals(tmp.getType())) {
158 throw new RuntimeException("exception.delete.domain.type.error");
161 permissionService.deleteById(id);
163 PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
164 return new DefaultApiResponse<PermissionRemoveResponseData>(data);
168 @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
169 @ResponseStatus(value = HttpStatus.OK)
171 public DefaultApiResponse<PermissionTreeResponseData> tree() {
173 Map<String, Object> mapBean = new HashMap<String, Object>();
174 mapBean.put("type", Permission.TYPE_MENU);
176 PermissionTreeNode tree = permissionService.selectPermissionTree(mapBean);
178 PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
180 return new DefaultApiResponse<PermissionTreeResponseData>(data);