a16bd63529c95c57232a1ffbb845fb11544ccdd4
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.system.api.v1.admin;
2
3 import io.swagger.annotations.Api;
4 import lombok.extern.slf4j.Slf4j;
5
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;
20
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;
33
34 @Api(value = "SystemAdminResource", tags = { "SystemAdminResource" }, description = "资源(API)的操作接口")
35 @Slf4j
36 @RestController
37 @RequestMapping("/v1/admin/resources")
38 public class AdminResourceController {
39
40   @Autowired
41   private ResourceService resourceService;
42
43   @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
44   @ResponseStatus(value = HttpStatus.OK)
45   @ResponseBody
46   public DefaultApiResponse<ResourceQueryResponseData> query(ResourceQueryRequest queryRequest) {
47
48     Page<Resource> page = resourceService.selectPageList(
49         queryRequest.isLoadAll(), 
50         queryRequest.getPageIndex(), 
51         queryRequest.getPageSize(),
52         queryRequest.getMapBean(),
53         queryRequest.getOrderBy());
54
55     ResourceQueryResponseData data = ResourceQueryResponseData.of(queryRequest).build(page);
56
57     return new DefaultApiResponse<ResourceQueryResponseData>(data);
58   }
59   
60   @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
61   @ResponseStatus(value = HttpStatus.OK)
62   @ResponseBody
63   public DefaultApiResponse<ResourceLoadResponseData> load(@PathVariable("id") String id) {
64
65     if (id == null || id.length() == 0) {
66       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
67     }
68
69     Resource resource = resourceService.selectById(id);
70
71     if (resource == null) {
72       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
73     }
74     
75     ResourceLoadResponseData data = ResourceLoadResponseData.of(resource);
76
77     return new DefaultApiResponse<ResourceLoadResponseData>(data);
78   }
79
80   @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
81   @ResponseStatus(value = HttpStatus.OK)
82   @ResponseBody
83   public DefaultApiResponse<ResourceCreateResponseData> create(
84       @RequestBody ResourceCreateRequest createRequest) {
85     
86     // FIXME: 验证数据有效性
87     
88     Resource resource = createRequest.getEntity();
89     
90     Resource ret = resourceService.insert(resource);
91     
92     ResourceCreateResponseData data = ResourceCreateResponseData.build(ret);
93
94     return new DefaultApiResponse<ResourceCreateResponseData>(data);
95   }
96   
97   @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
98   @ResponseStatus(value = HttpStatus.OK)
99   @ResponseBody
100   public DefaultApiResponse<ResourceUpdateResponseData> update(
101       @PathVariable("id") String id, 
102       @RequestBody ResourceUpdateRequest updateRequest) {
103
104     if (id == null || id.length() == 0) {
105       throw new RuntimeException("exception.update.id.must.not.empty");
106     }
107
108     Resource tmp = resourceService.selectById(id);
109     if (tmp == null) {
110       throw new RuntimeException("exception.update.domain.not.exist");
111     }
112
113     Resource resource = updateRequest.getEntity();
114     resource.setId(id);
115
116     resource = EntityUtils.merge(tmp, resource);
117
118     Resource ret = resourceService.update(resource);
119
120     ResourceUpdateResponseData data = ResourceUpdateResponseData.build(ret);
121     
122     return new DefaultApiResponse<ResourceUpdateResponseData>(data);
123   }
124
125   @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
126   @ResponseStatus(value = HttpStatus.OK)
127   @ResponseBody
128   public DefaultApiResponse<ResourceRemoveResponseData> delete(
129       @PathVariable("id") String id) {
130
131     if (id == null || id.length() == 0) {
132       throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
133     }
134
135     Resource tmp = resourceService.selectById(id);
136     if (tmp == null) {
137       throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
138     }
139
140     resourceService.deleteById(id);
141
142     ResourceRemoveResponseData data = ResourceRemoveResponseData.build(tmp);
143     return new DefaultApiResponse<ResourceRemoveResponseData>(data);
144   }
145
146 }