06758c18f2f7e78c6794eff15c8efd4da0b2a7cd
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
2
3 import java.util.List;
4
5 import io.swagger.annotations.Api;
6 import lombok.extern.slf4j.Slf4j;
7
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.data.domain.Page;
10 import org.springframework.http.HttpStatus;
11 import org.springframework.util.MimeTypeUtils;
12 import org.springframework.web.bind.annotation.DeleteMapping;
13 import org.springframework.web.bind.annotation.GetMapping;
14 import org.springframework.web.bind.annotation.PathVariable;
15 import org.springframework.web.bind.annotation.PostMapping;
16 import org.springframework.web.bind.annotation.PutMapping;
17 import org.springframework.web.bind.annotation.RequestBody;
18 import org.springframework.web.bind.annotation.RequestMapping;
19 import org.springframework.web.bind.annotation.ResponseBody;
20 import org.springframework.web.bind.annotation.ResponseStatus;
21 import org.springframework.web.bind.annotation.RestController;
22
23 import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteCreateRequest;
24 import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteDeleteBatchRequest;
25 import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteQueryRequest;
26 import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteUpdateRequest;
27 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteCreateResponseData;
28 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteDeleteBatchResponseData;
29 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteLoadResponseData;
30 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteQueryResponseData;
31 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteRemoveResponseData;
32 import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteUpdateResponseData;
33 import com.supwisdom.institute.backend.base.domain.entity.Route;
34 import com.supwisdom.institute.backend.base.domain.service.RouteService;
35 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
36 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
37
38 @Api(value = "BaseAdminRoute", tags = { "BaseAdminRoute" }, description = "路由信息的操作接口")
39 @Slf4j
40 @RestController
41 @RequestMapping("/v1/admin/routes")
42 public class AdminRouteController {
43
44   @Autowired
45   private RouteService routeService;
46   
47
48   @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
49   @ResponseStatus(value = HttpStatus.OK)
50   @ResponseBody
51   public DefaultApiResponse<RouteQueryResponseData> query(RouteQueryRequest queryRequest) {
52
53     Page<Route> page = routeService.selectPageList(
54         queryRequest.isLoadAll(), 
55         queryRequest.getPageIndex(), 
56         queryRequest.getPageSize(),
57         queryRequest.getMapBean(),
58         queryRequest.getOrderBy());
59
60     RouteQueryResponseData data = RouteQueryResponseData.of(queryRequest).build(page);
61
62     return new DefaultApiResponse<RouteQueryResponseData>(data);
63   }
64   
65   @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
66   @ResponseStatus(value = HttpStatus.OK)
67   @ResponseBody
68   public DefaultApiResponse<RouteLoadResponseData> load(@PathVariable("id") String id) {
69
70     if (id == null || id.length() == 0) {
71       throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
72     }
73
74     Route route = routeService.selectById(id);
75
76     if (route == null) {
77       throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
78     }
79     
80     RouteLoadResponseData data = RouteLoadResponseData.of(route);
81
82     return new DefaultApiResponse<RouteLoadResponseData>(data);
83   }
84
85   @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
86   @ResponseStatus(value = HttpStatus.OK)
87   @ResponseBody
88   public DefaultApiResponse<RouteCreateResponseData> create(
89       @RequestBody RouteCreateRequest createRequest) {
90     
91     // FIXME: 验证数据有效性
92     
93     Route route = createRequest.getEntity();
94     
95     Route ret = routeService.insert(route);
96     
97     RouteCreateResponseData data = RouteCreateResponseData.build(ret);
98
99     return new DefaultApiResponse<RouteCreateResponseData>(data);
100   }
101   
102   @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
103   @ResponseStatus(value = HttpStatus.OK)
104   @ResponseBody
105   public DefaultApiResponse<RouteUpdateResponseData> update(
106       @PathVariable("id") String id, 
107       @RequestBody RouteUpdateRequest updateRequest) {
108
109     if (id == null || id.length() == 0) {
110       throw new RuntimeException("exception.update.id.must.not.empty");
111     }
112
113     Route tmp = routeService.selectById(id);
114     if (tmp == null) {
115       throw new RuntimeException("exception.update.domain.not.exist");
116     }
117
118     Route route = updateRequest.getEntity();
119     route.setId(id);
120
121     route = EntityUtils.merge(tmp, route);
122
123     Route ret = routeService.update(route);
124
125     RouteUpdateResponseData data = RouteUpdateResponseData.build(ret);
126     
127     return new DefaultApiResponse<RouteUpdateResponseData>(data);
128   }
129
130   @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
131   @ResponseStatus(value = HttpStatus.OK)
132   @ResponseBody
133   public DefaultApiResponse<RouteRemoveResponseData> delete(
134       @PathVariable("id") String id) {
135
136     if (id == null || id.length() == 0) {
137       throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
138     }
139
140     Route tmp = routeService.selectById(id);
141     if (tmp == null) {
142       throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
143     }
144
145     routeService.deleteById(id);
146
147     RouteRemoveResponseData data = RouteRemoveResponseData.build(tmp);
148     return new DefaultApiResponse<RouteRemoveResponseData>(data);
149   }
150
151   @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
152   @ResponseStatus(value = HttpStatus.OK)
153   @ResponseBody
154   public DefaultApiResponse<RouteDeleteBatchResponseData> deleteBatch(
155       @RequestBody RouteDeleteBatchRequest deleteBatchRequest) {
156     
157     List<String> ids = deleteBatchRequest.getIds();
158     
159     routeService.deleteBatch(ids);
160     
161     RouteDeleteBatchResponseData data = RouteDeleteBatchResponseData.build(ids);
162     return new DefaultApiResponse<RouteDeleteBatchResponseData>(data);
163   }
164
165 }