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