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.PermissionDeleteBatchRequest;
29 import com.supwisdom.institute.backend.system.api.vo.request.PermissionQueryRequest;
30 import com.supwisdom.institute.backend.system.api.vo.request.PermissionUpdateRequest;
31 import com.supwisdom.institute.backend.system.api.vo.response.PermissionCreateResponseData;
32 import com.supwisdom.institute.backend.system.api.vo.response.PermissionDeleteBatchResponseData;
33 import com.supwisdom.institute.backend.system.api.vo.response.PermissionLoadResponseData;
34 import com.supwisdom.institute.backend.system.api.vo.response.PermissionQueryResponseData;
35 import com.supwisdom.institute.backend.system.api.vo.response.PermissionRemoveResponseData;
36 import com.supwisdom.institute.backend.system.api.vo.response.PermissionTreeResponseData;
37 import com.supwisdom.institute.backend.system.api.vo.response.PermissionUpdateResponseData;
38 import com.supwisdom.institute.backend.system.domain.entity.Permission;
39 import com.supwisdom.institute.backend.system.domain.model.PermissionTreeNode;
40 import com.supwisdom.institute.backend.system.domain.service.PermissionService;
42 @Api(value = "SystemAdminMenu", tags = { "SystemAdminMenu" }, description = "菜单的操作接口")
45 @RequestMapping("/v1/admin/menus")
46 public class AdminMenuController {
49 private PermissionService permissionService;
51 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
52 @ResponseStatus(value = HttpStatus.OK)
54 public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
56 if (queryRequest.getMapBean() == null) {
57 queryRequest.setMapBean(new HashMap<String, Object>());
59 queryRequest.getMapBean().put("type", Permission.TYPE_MENU);
61 Page<Permission> page = permissionService.selectPageList(
62 queryRequest.isLoadAll(),
63 queryRequest.getPageIndex(),
64 queryRequest.getPageSize(),
65 queryRequest.getMapBean(),
66 queryRequest.getOrderBy());
68 PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
70 return new DefaultApiResponse<PermissionQueryResponseData>(data);
73 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
74 @ResponseStatus(value = HttpStatus.OK)
76 public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
78 if (id == null || id.length() == 0) {
79 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
82 Permission permission = permissionService.selectById(id);
84 if (permission == null) {
85 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
87 if (!Permission.TYPE_MENU.equals(permission.getType())) {
88 throw new RuntimeException("exception.get.domain.type.error");
91 PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
93 return new DefaultApiResponse<PermissionLoadResponseData>(data);
96 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
97 @ResponseStatus(value = HttpStatus.OK)
99 public DefaultApiResponse<PermissionCreateResponseData> create(
100 @RequestBody PermissionCreateRequest createRequest) {
104 Permission permission = createRequest.getEntity();
105 permission.setType(Permission.TYPE_MENU);
107 Permission ret = permissionService.insert(permission);
109 PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
111 return new DefaultApiResponse<PermissionCreateResponseData>(data);
114 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
115 @ResponseStatus(value = HttpStatus.OK)
117 public DefaultApiResponse<PermissionUpdateResponseData> update(
118 @PathVariable("id") String id,
119 @RequestBody PermissionUpdateRequest updateRequest) {
121 if (id == null || id.length() == 0) {
122 throw new RuntimeException("exception.update.id.must.not.empty");
125 Permission tmp = permissionService.selectById(id);
127 throw new RuntimeException("exception.update.domain.not.exist");
129 if (!Permission.TYPE_MENU.equals(tmp.getType())) {
130 throw new RuntimeException("exception.update.domain.type.error");
133 Permission permission = updateRequest.getEntity();
134 permission.setId(id);
136 permission = EntityUtils.merge(tmp, permission);
138 Permission ret = permissionService.update(permission);
140 PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
142 return new DefaultApiResponse<PermissionUpdateResponseData>(data);
145 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
146 @ResponseStatus(value = HttpStatus.OK)
148 public DefaultApiResponse<PermissionRemoveResponseData> delete(
149 @PathVariable("id") String id) {
151 if (id == null || id.length() == 0) {
152 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
155 Permission tmp = permissionService.selectById(id);
157 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
159 if (!Permission.TYPE_MENU.equals(tmp.getType())) {
160 throw new RuntimeException("exception.delete.domain.type.error");
163 permissionService.deleteById(id);
165 PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
166 return new DefaultApiResponse<PermissionRemoveResponseData>(data);
170 @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
171 @ResponseStatus(value = HttpStatus.OK)
173 public DefaultApiResponse<PermissionDeleteBatchResponseData> deleteBatch(
174 @RequestBody PermissionDeleteBatchRequest deleteBatchRequest) {
176 System.out.println(deleteBatchRequest.getIds());
177 List<String> ids = deleteBatchRequest.getIds();
179 permissionService.deleteBatch(ids);
181 PermissionDeleteBatchResponseData data = PermissionDeleteBatchResponseData.build(ids);
182 return new DefaultApiResponse<PermissionDeleteBatchResponseData>(data);
185 @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
186 @ResponseStatus(value = HttpStatus.OK)
188 public DefaultApiResponse<PermissionTreeResponseData> tree() {
190 Map<String, Object> mapBean = new HashMap<String, Object>();
191 mapBean.put("type", Permission.TYPE_MENU);
193 PermissionTreeNode tree = permissionService.selectPermissionTree(mapBean);
195 PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
197 return new DefaultApiResponse<PermissionTreeResponseData>(data);