1 package com.supwisdom.institute.backend.base.api.v1.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.vo.request.ApplicationCreateRequest;
24 import com.supwisdom.institute.backend.base.api.vo.request.ApplicationDeleteBatchRequest;
25 import com.supwisdom.institute.backend.base.api.vo.request.ApplicationQueryRequest;
26 import com.supwisdom.institute.backend.base.api.vo.request.ApplicationUpdateRequest;
27 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationCreateResponseData;
28 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationDeleteBatchResponseData;
29 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationLoadResponseData;
30 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationQueryResponseData;
31 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationRemoveResponseData;
32 import com.supwisdom.institute.backend.base.api.vo.response.ApplicationUpdateResponseData;
33 import com.supwisdom.institute.backend.base.domain.entity.Application;
34 import com.supwisdom.institute.backend.base.domain.service.ApplicationService;
35 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
36 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
38 @Api(value = "BaseAdminApplication", tags = { "BaseAdminApplication" }, description = "路由信息的操作接口")
41 @RequestMapping("/v1/admin/applications")
42 public class AdminApplicationController {
45 private ApplicationService applicationService;
48 @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
49 @ResponseStatus(value = HttpStatus.OK)
51 public DefaultApiResponse<ApplicationQueryResponseData> query(ApplicationQueryRequest queryRequest) {
53 Page<Application> page = applicationService.selectPageList(
54 queryRequest.isLoadAll(),
55 queryRequest.getPageIndex(),
56 queryRequest.getPageSize(),
57 queryRequest.getMapBean(),
58 queryRequest.getOrderBy());
60 ApplicationQueryResponseData data = ApplicationQueryResponseData.of(queryRequest).build(page);
62 return new DefaultApiResponse<ApplicationQueryResponseData>(data);
65 @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
66 @ResponseStatus(value = HttpStatus.OK)
68 public DefaultApiResponse<ApplicationLoadResponseData> 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 Application application = applicationService.selectById(id);
76 if (application == null) {
77 throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
80 ApplicationLoadResponseData data = ApplicationLoadResponseData.of(application);
82 return new DefaultApiResponse<ApplicationLoadResponseData>(data);
85 @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
86 @ResponseStatus(value = HttpStatus.OK)
88 public DefaultApiResponse<ApplicationCreateResponseData> create(
89 @RequestBody ApplicationCreateRequest createRequest) {
93 Application application = createRequest.getEntity();
95 Application ret = applicationService.insert(application);
97 ApplicationCreateResponseData data = ApplicationCreateResponseData.build(ret);
99 return new DefaultApiResponse<ApplicationCreateResponseData>(data);
102 @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
103 @ResponseStatus(value = HttpStatus.OK)
105 public DefaultApiResponse<ApplicationUpdateResponseData> update(
106 @PathVariable("id") String id,
107 @RequestBody ApplicationUpdateRequest updateRequest) {
109 if (id == null || id.length() == 0) {
110 throw new RuntimeException("exception.update.id.must.not.empty");
113 Application tmp = applicationService.selectById(id);
115 throw new RuntimeException("exception.update.domain.not.exist");
118 Application application = updateRequest.getEntity();
119 application.setId(id);
121 application = EntityUtils.merge(tmp, application);
123 Application ret = applicationService.update(application);
125 ApplicationUpdateResponseData data = ApplicationUpdateResponseData.build(ret);
127 return new DefaultApiResponse<ApplicationUpdateResponseData>(data);
130 @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
131 @ResponseStatus(value = HttpStatus.OK)
133 public DefaultApiResponse<ApplicationRemoveResponseData> 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 Application tmp = applicationService.selectById(id);
142 throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException
145 applicationService.deleteById(id);
147 ApplicationRemoveResponseData data = ApplicationRemoveResponseData.build(tmp);
148 return new DefaultApiResponse<ApplicationRemoveResponseData>(data);
151 @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
152 @ResponseStatus(value = HttpStatus.OK)
154 public DefaultApiResponse<ApplicationDeleteBatchResponseData> deleteBatch(
155 @RequestBody ApplicationDeleteBatchRequest deleteBatchRequest) {
157 List<String> ids = deleteBatchRequest.getIds();
159 applicationService.deleteBatch(ids);
161 ApplicationDeleteBatchResponseData data = ApplicationDeleteBatchResponseData.build(ids);
162 return new DefaultApiResponse<ApplicationDeleteBatchResponseData>(data);