3c3a832b9b8bcf1cbbcd5ccb5fa2ab99e57a1684
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.system.api.v1.admin;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6
7 import io.swagger.annotations.Api;
8 import lombok.extern.slf4j.Slf4j;
9
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;
24
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;
41
42 @Api(value = "SystemAdminMenu", tags = { "SystemAdminMenu" }, description = "菜单的操作接口")
43 @Slf4j
44 @RestController
45 @RequestMapping("/v1/admin/menus")
46 public class AdminMenuController {
47
48   @Autowired
49   private PermissionService permissionService;
50
51   @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
52   @ResponseStatus(value = HttpStatus.OK)
53   @ResponseBody
54   public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
55     
56     if (queryRequest.getMapBean() == null) {
57       queryRequest.setMapBean(new HashMap<String, Object>());
58     }
59     queryRequest.getMapBean().put("type", Permission.TYPE_MENU);
60
61     Page<Permission> page = permissionService.selectPageList(
62         queryRequest.isLoadAll(), 
63         queryRequest.getPageIndex(), 
64         queryRequest.getPageSize(),
65         queryRequest.getMapBean(),
66         queryRequest.getOrderBy());
67
68     PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
69
70     return new DefaultApiResponse<PermissionQueryResponseData>(data);
71   }
72   
73   @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
74   @ResponseStatus(value = HttpStatus.OK)
75   @ResponseBody
76   public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
77
78     if (id == null || id.length() == 0) {
79       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
80     }
81
82     Permission permission = permissionService.selectById(id);
83
84     if (permission == null) {
85       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
86     }
87     if (!Permission.TYPE_MENU.equals(permission.getType())) {
88       throw new RuntimeException("exception.get.domain.type.error");
89     }
90     
91     PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
92
93     return new DefaultApiResponse<PermissionLoadResponseData>(data);
94   }
95
96   @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
97   @ResponseStatus(value = HttpStatus.OK)
98   @ResponseBody
99   public DefaultApiResponse<PermissionCreateResponseData> create(
100       @RequestBody PermissionCreateRequest createRequest) {
101     
102     // FIXME: 验证数据有效性
103     
104     Permission permission = createRequest.getEntity();
105     permission.setType(Permission.TYPE_MENU);
106     
107     Permission ret = permissionService.insert(permission);
108     
109     PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
110
111     return new DefaultApiResponse<PermissionCreateResponseData>(data);
112   }
113   
114   @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
115   @ResponseStatus(value = HttpStatus.OK)
116   @ResponseBody
117   public DefaultApiResponse<PermissionUpdateResponseData> update(
118       @PathVariable("id") String id, 
119       @RequestBody PermissionUpdateRequest updateRequest) {
120
121     if (id == null || id.length() == 0) {
122       throw new RuntimeException("exception.update.id.must.not.empty");
123     }
124
125     Permission tmp = permissionService.selectById(id);
126     if (tmp == null) {
127       throw new RuntimeException("exception.update.domain.not.exist");
128     }
129     if (!Permission.TYPE_MENU.equals(tmp.getType())) {
130       throw new RuntimeException("exception.update.domain.type.error");
131     }
132
133     Permission permission = updateRequest.getEntity();
134     permission.setId(id);
135
136     permission = EntityUtils.merge(tmp, permission);
137
138     Permission ret = permissionService.update(permission);
139
140     PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
141     
142     return new DefaultApiResponse<PermissionUpdateResponseData>(data);
143   }
144
145   @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
146   @ResponseStatus(value = HttpStatus.OK)
147   @ResponseBody
148   public DefaultApiResponse<PermissionRemoveResponseData> delete(
149       @PathVariable("id") String id) {
150
151     if (id == null || id.length() == 0) {
152       throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
153     }
154
155     Permission tmp = permissionService.selectById(id);
156     if (tmp == null) {
157       throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
158     }
159     if (!Permission.TYPE_MENU.equals(tmp.getType())) {
160       throw new RuntimeException("exception.delete.domain.type.error");
161     }
162
163     permissionService.deleteById(id);
164
165     PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
166     return new DefaultApiResponse<PermissionRemoveResponseData>(data);
167   }
168
169
170   @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
171   @ResponseStatus(value = HttpStatus.OK)
172   @ResponseBody
173   public DefaultApiResponse<PermissionDeleteBatchResponseData> deleteBatch(
174       @RequestBody PermissionDeleteBatchRequest deleteBatchRequest) {
175     
176     System.out.println(deleteBatchRequest.getIds());
177     List<String> ids = deleteBatchRequest.getIds();
178     
179     permissionService.deleteBatch(ids);
180     
181     PermissionDeleteBatchResponseData data = PermissionDeleteBatchResponseData.build(ids);
182     return new DefaultApiResponse<PermissionDeleteBatchResponseData>(data);
183   }
184   
185   @GetMapping(path = "/tree", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
186   @ResponseStatus(value = HttpStatus.OK)
187   @ResponseBody
188   public DefaultApiResponse<PermissionTreeResponseData> tree() {
189     
190     Map<String, Object> mapBean = new HashMap<String, Object>();
191     mapBean.put("type", Permission.TYPE_MENU);
192
193     PermissionTreeNode tree = permissionService.selectPermissionTree(mapBean);
194
195     PermissionTreeResponseData data = PermissionTreeResponseData.of(tree);
196
197     return new DefaultApiResponse<PermissionTreeResponseData>(data);
198   }
199   
200 }