e84e2e0e335010ac94560129e48d1e2e75f6efd7
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
2
3 import io.swagger.annotations.Api;
4
5 import java.util.ArrayList;
6 import java.util.HashMap;
7 import java.util.List;
8 import java.util.Map;
9
10 import lombok.extern.slf4j.Slf4j;
11
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.data.domain.Page;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.util.MimeTypeUtils;
16 import org.springframework.web.bind.annotation.DeleteMapping;
17 import org.springframework.web.bind.annotation.GetMapping;
18 import org.springframework.web.bind.annotation.PathVariable;
19 import org.springframework.web.bind.annotation.PostMapping;
20 import org.springframework.web.bind.annotation.PutMapping;
21 import org.springframework.web.bind.annotation.RequestBody;
22 import org.springframework.web.bind.annotation.RequestMapping;
23 import org.springframework.web.bind.annotation.ResponseBody;
24 import org.springframework.web.bind.annotation.ResponseStatus;
25 import org.springframework.web.bind.annotation.RestController;
26
27 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
28 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
29 import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
30 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
31 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
32 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
33 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
34 import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
35 import com.supwisdom.institute.backend.base.domain.entity.Permission;
36 import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
37 import com.supwisdom.institute.backend.base.domain.service.PermissionService;
38 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
39 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
40
41 @Api(value = "BaseAdminOperation", tags = { "BaseAdminOperation" }, description = "操作的操作接口")
42 @Slf4j
43 @RestController
44 @RequestMapping("/v1/admin/operations")
45 public class AdminOperationController {
46
47   @Autowired
48   private PermissionService permissionService;
49
50   @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
51   @ResponseStatus(value = HttpStatus.OK)
52   @ResponseBody
53   public DefaultApiResponse<PermissionQueryResponseData> query(PermissionQueryRequest queryRequest) {
54     
55     if (queryRequest.getMapBean() == null) {
56       queryRequest.setMapBean(new HashMap<String, Object>());
57     }
58     queryRequest.getMapBean().put("type", Permission.TYPE_OPERATION);
59
60     Page<Permission> page = permissionService.selectPageList(
61         queryRequest.isLoadAll(), 
62         queryRequest.getPageIndex(), 
63         queryRequest.getPageSize(),
64         queryRequest.getMapBean(),
65         queryRequest.getOrderBy());
66
67     PermissionQueryResponseData data = PermissionQueryResponseData.of(queryRequest).build(page);
68
69     return new DefaultApiResponse<PermissionQueryResponseData>(data);
70   }
71   
72   @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
73   @ResponseStatus(value = HttpStatus.OK)
74   @ResponseBody
75   public DefaultApiResponse<PermissionLoadResponseData> load(@PathVariable("id") String id) {
76
77     if (id == null || id.length() == 0) {
78       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
79     }
80
81     Permission permission = permissionService.selectById(id);
82
83     if (permission == null) {
84       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
85     }
86     if (!Permission.TYPE_OPERATION.equals(permission.getType())) {
87       throw new RuntimeException("exception.get.domain.type.error");
88     }
89
90     List<String> resourceIds = new ArrayList<>();
91     
92     Map<String, Object> mapBean = new HashMap<>();
93     mapBean.put("permissionId", id);
94     Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
95     for (PermissionResource permissionResource : permissionResources) {
96       resourceIds.add(permissionResource.getResourceId());
97     }
98     
99     PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
100
101     return new DefaultApiResponse<PermissionLoadResponseData>(data);
102   }
103
104   @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
105   @ResponseStatus(value = HttpStatus.OK)
106   @ResponseBody
107   public DefaultApiResponse<PermissionCreateResponseData> create(
108       @RequestBody PermissionCreateRequest createRequest) {
109     
110     // FIXME: 验证数据有效性
111     
112     Permission permission = createRequest.getEntity();
113     permission.setType(Permission.TYPE_OPERATION);
114     
115     Permission ret = permissionService.insert(permission);
116     
117     PermissionCreateResponseData data = PermissionCreateResponseData.build(ret);
118
119     return new DefaultApiResponse<PermissionCreateResponseData>(data);
120   }
121   
122   @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
123   @ResponseStatus(value = HttpStatus.OK)
124   @ResponseBody
125   public DefaultApiResponse<PermissionUpdateResponseData> update(
126       @PathVariable("id") String id, 
127       @RequestBody PermissionUpdateRequest updateRequest) {
128
129     if (id == null || id.length() == 0) {
130       throw new RuntimeException("exception.update.id.must.not.empty");
131     }
132
133     Permission tmp = permissionService.selectById(id);
134     if (tmp == null) {
135       throw new RuntimeException("exception.update.domain.not.exist");
136     }
137     if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
138       throw new RuntimeException("exception.update.domain.type.error");
139     }
140
141     Permission permission = updateRequest.getEntity();
142     permission.setId(id);
143
144     permission = EntityUtils.merge(tmp, permission);
145
146     Permission ret = permissionService.update(permission);
147
148     PermissionUpdateResponseData data = PermissionUpdateResponseData.build(ret);
149     
150     return new DefaultApiResponse<PermissionUpdateResponseData>(data);
151   }
152
153   @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
154   @ResponseStatus(value = HttpStatus.OK)
155   @ResponseBody
156   public DefaultApiResponse<PermissionRemoveResponseData> delete(
157       @PathVariable("id") String id) {
158
159     if (id == null || id.length() == 0) {
160       throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
161     }
162
163     Permission tmp = permissionService.selectById(id);
164     if (tmp == null) {
165       throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
166     }
167     if (!Permission.TYPE_OPERATION.equals(tmp.getType())) {
168       throw new RuntimeException("exception.delete.domain.type.error");
169     }
170
171     permissionService.deleteById(id);
172
173     PermissionRemoveResponseData data = PermissionRemoveResponseData.build(tmp);
174     return new DefaultApiResponse<PermissionRemoveResponseData>(data);
175   }
176
177 }