1 package com.supwisdom.institute.backend.base.api.v1.controller.admin;
5 import io.swagger.annotations.Api;
6 import lombok.extern.slf4j.Slf4j;
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;
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;
38 @Api(value = "BaseAdminRoute", tags = { "BaseAdminRoute" }, description = "路由信息的操作接口")
41 @RequestMapping("/v1/admin/routes")
42 public class AdminRouteController {
45 private RouteService routeService;
48 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
49 @ResponseStatus(value = HttpStatus.OK)
51 public DefaultApiResponse<RouteQueryResponseData> query(RouteQueryRequest queryRequest) {
53 Page<Route> page = routeService.selectPageList(
54 queryRequest.isLoadAll(),
55 queryRequest.getPageIndex(),
56 queryRequest.getPageSize(),
57 queryRequest.getMapBean(),
58 queryRequest.getOrderBy());
60 RouteQueryResponseData data = RouteQueryResponseData.of(queryRequest).build(page);
62 return new DefaultApiResponse<RouteQueryResponseData>(data);
65 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
66 @ResponseStatus(value = HttpStatus.OK)
68 public DefaultApiResponse<RouteLoadResponseData> load(@PathVariable("id") String id) {
70 if (id == null || id.length() == 0) {
71 throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
74 Route route = routeService.selectById(id);
77 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
80 RouteLoadResponseData data = RouteLoadResponseData.of(route);
82 return new DefaultApiResponse<RouteLoadResponseData>(data);
85 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
86 @ResponseStatus(value = HttpStatus.OK)
88 public DefaultApiResponse<RouteCreateResponseData> create(
89 @RequestBody RouteCreateRequest createRequest) {
93 Route route = createRequest.getEntity();
95 Route ret = routeService.insert(route);
97 RouteCreateResponseData data = RouteCreateResponseData.build(ret);
99 return new DefaultApiResponse<RouteCreateResponseData>(data);
102 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
103 @ResponseStatus(value = HttpStatus.OK)
105 public DefaultApiResponse<RouteUpdateResponseData> update(
106 @PathVariable("id") String id,
107 @RequestBody RouteUpdateRequest updateRequest) {
109 if (id == null || id.length() == 0) {
110 throw new RuntimeException("exception.update.id.must.not.empty");
113 Route tmp = routeService.selectById(id);
115 throw new RuntimeException("exception.update.domain.not.exist");
118 Route route = updateRequest.getEntity();
121 route = EntityUtils.merge(tmp, route);
123 Route ret = routeService.update(route);
125 RouteUpdateResponseData data = RouteUpdateResponseData.build(ret);
127 return new DefaultApiResponse<RouteUpdateResponseData>(data);
130 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
131 @ResponseStatus(value = HttpStatus.OK)
133 public DefaultApiResponse<RouteRemoveResponseData> delete(
134 @PathVariable("id") String id) {
136 if (id == null || id.length() == 0) {
137 throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException
140 Route tmp = routeService.selectById(id);
142 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
145 routeService.deleteById(id);
147 RouteRemoveResponseData data = RouteRemoveResponseData.build(tmp);
148 return new DefaultApiResponse<RouteRemoveResponseData>(data);
151 @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
152 @ResponseStatus(value = HttpStatus.OK)
154 public DefaultApiResponse<RouteDeleteBatchResponseData> deleteBatch(
155 @RequestBody RouteDeleteBatchRequest deleteBatchRequest) {
157 List<String> ids = deleteBatchRequest.getIds();
159 routeService.deleteBatch(ids);
161 RouteDeleteBatchResponseData data = RouteDeleteBatchResponseData.build(ids);
162 return new DefaultApiResponse<RouteDeleteBatchResponseData>(data);