1 package com.supwisdom.institute.backend.system.api.v1.admin;
3 import io.swagger.annotations.Api;
4 import lombok.extern.slf4j.Slf4j;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.data.domain.Page;
8 import org.springframework.http.HttpStatus;
9 import org.springframework.util.MimeTypeUtils;
10 import org.springframework.web.bind.annotation.DeleteMapping;
11 import org.springframework.web.bind.annotation.GetMapping;
12 import org.springframework.web.bind.annotation.PathVariable;
13 import org.springframework.web.bind.annotation.PostMapping;
14 import org.springframework.web.bind.annotation.PutMapping;
15 import org.springframework.web.bind.annotation.RequestBody;
16 import org.springframework.web.bind.annotation.RequestMapping;
17 import org.springframework.web.bind.annotation.ResponseBody;
18 import org.springframework.web.bind.annotation.ResponseStatus;
19 import org.springframework.web.bind.annotation.RestController;
21 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
22 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
23 import com.supwisdom.institute.backend.system.api.vo.request.ResourceCreateRequest;
24 import com.supwisdom.institute.backend.system.api.vo.request.ResourceQueryRequest;
25 import com.supwisdom.institute.backend.system.api.vo.request.ResourceUpdateRequest;
26 import com.supwisdom.institute.backend.system.api.vo.response.ResourceCreateResponseData;
27 import com.supwisdom.institute.backend.system.api.vo.response.ResourceLoadResponseData;
28 import com.supwisdom.institute.backend.system.api.vo.response.ResourceQueryResponseData;
29 import com.supwisdom.institute.backend.system.api.vo.response.ResourceRemoveResponseData;
30 import com.supwisdom.institute.backend.system.api.vo.response.ResourceUpdateResponseData;
31 import com.supwisdom.institute.backend.system.domain.entity.Resource;
32 import com.supwisdom.institute.backend.system.domain.service.ResourceService;
34 @Api(value = "SystemAdminResource", tags = { "SystemAdminResource" }, description = "资源(API)的操作接口")
37 @RequestMapping("/v1/admin/resources")
38 public class AdminResourceController {
41 private ResourceService resourceService;
43 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
44 @ResponseStatus(value = HttpStatus.OK)
46 public DefaultApiResponse<ResourceQueryResponseData> query(ResourceQueryRequest queryRequest) {
48 Page<Resource> page = resourceService.selectPageList(
49 queryRequest.isLoadAll(),
50 queryRequest.getPageIndex(),
51 queryRequest.getPageSize(),
52 queryRequest.getMapBean(),
53 queryRequest.getOrderBy());
55 ResourceQueryResponseData data = ResourceQueryResponseData.of(queryRequest).build(page);
57 return new DefaultApiResponse<ResourceQueryResponseData>(data);
60 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
61 @ResponseStatus(value = HttpStatus.OK)
63 public DefaultApiResponse<ResourceLoadResponseData> load(@PathVariable("id") String id) {
65 if (id == null || id.length() == 0) {
66 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
69 Resource resource = resourceService.selectById(id);
71 if (resource == null) {
72 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
75 ResourceLoadResponseData data = ResourceLoadResponseData.of(resource);
77 return new DefaultApiResponse<ResourceLoadResponseData>(data);
80 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
81 @ResponseStatus(value = HttpStatus.OK)
83 public DefaultApiResponse<ResourceCreateResponseData> create(
84 @RequestBody ResourceCreateRequest createRequest) {
88 Resource resource = createRequest.getEntity();
90 Resource ret = resourceService.insert(resource);
92 ResourceCreateResponseData data = ResourceCreateResponseData.build(ret);
94 return new DefaultApiResponse<ResourceCreateResponseData>(data);
97 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
98 @ResponseStatus(value = HttpStatus.OK)
100 public DefaultApiResponse<ResourceUpdateResponseData> update(
101 @PathVariable("id") String id,
102 @RequestBody ResourceUpdateRequest updateRequest) {
104 if (id == null || id.length() == 0) {
105 throw new RuntimeException("exception.update.id.must.not.empty");
108 Resource tmp = resourceService.selectById(id);
110 throw new RuntimeException("exception.update.domain.not.exist");
113 Resource resource = updateRequest.getEntity();
116 resource = EntityUtils.merge(tmp, resource);
118 Resource ret = resourceService.update(resource);
120 ResourceUpdateResponseData data = ResourceUpdateResponseData.build(ret);
122 return new DefaultApiResponse<ResourceUpdateResponseData>(data);
125 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
126 @ResponseStatus(value = HttpStatus.OK)
128 public DefaultApiResponse<ResourceRemoveResponseData> delete(
129 @PathVariable("id") String id) {
131 if (id == null || id.length() == 0) {
132 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
135 Resource tmp = resourceService.selectById(id);
137 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
140 resourceService.deleteById(id);
142 ResourceRemoveResponseData data = ResourceRemoveResponseData.build(tmp);
143 return new DefaultApiResponse<ResourceRemoveResponseData>(data);