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