Commit d8ef107bf8eaad947199b7573fc28a142449df24
1 parent
e6bc09ea
feat: 公共接口增加接口类型,同时允许超级管理员平台管理进行大屏设计
Showing
12 changed files
with
437 additions
and
377 deletions
1 | 1 | package org.thingsboard.server.controller.yunteng; |
2 | 2 | |
3 | 3 | import io.swagger.annotations.Api; |
4 | +import io.swagger.annotations.ApiOperation; | |
4 | 5 | import lombok.RequiredArgsConstructor; |
5 | 6 | import org.apache.commons.lang3.StringUtils; |
6 | 7 | import org.springframework.http.ResponseEntity; |
... | ... | @@ -20,6 +21,8 @@ import org.thingsboard.server.common.data.id.UserId; |
20 | 21 | import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; |
21 | 22 | import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; |
22 | 23 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
24 | +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; | |
25 | +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; | |
23 | 26 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
24 | 27 | import org.thingsboard.server.common.data.yunteng.dto.MenuDTO; |
25 | 28 | import org.thingsboard.server.common.data.yunteng.dto.TenantDTO; |
... | ... | @@ -213,6 +216,21 @@ public class TkAdminController extends BaseController { |
213 | 216 | return tkTenantService.updateOrCreateTenant(tenantReqDTO); |
214 | 217 | } |
215 | 218 | |
219 | + @GetMapping("all/tenants") | |
220 | + @ApiOperation("获取租户列表") | |
221 | + @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{})") | |
222 | + public ResponseEntity<List<TenantDTO>> getAllTenants() { | |
223 | + return ResponseEntity.ok(tkTenantService.getAllTenant()); | |
224 | + } | |
225 | + | |
226 | + @GetMapping("/{tenantId}/all/tenant_admin") | |
227 | + @ApiOperation("通过租户ID获取所有租户管理员") | |
228 | + @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{})") | |
229 | + public ResponseEntity<List<UserDTO>> getAllTenantAdminsByTenantId( | |
230 | + @PathVariable("tenantId") String tenantId) { | |
231 | + return ResponseEntity.ok(tkUserService.findAllTenantAdminsByTenantId(tenantId)); | |
232 | + } | |
233 | + | |
216 | 234 | private void deleteTenantAdmin(String strUserId, boolean isPtAdmin) throws ThingsboardException { |
217 | 235 | try { |
218 | 236 | UserId currentUserId = new UserId(toUUID(strUserId)); | ... | ... |
... | ... | @@ -33,7 +33,6 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. |
33 | 33 | @RequestMapping("/api/yt/data_view") |
34 | 34 | @RequiredArgsConstructor |
35 | 35 | @Api(tags = "大屏设计器") |
36 | -@PreAuthorize("@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{})") | |
37 | 36 | public class TkDataViewController extends BaseController { |
38 | 37 | |
39 | 38 | private final TkDataViewService tkDataViewService; |
... | ... | @@ -68,9 +67,10 @@ public class TkDataViewController extends BaseController { |
68 | 67 | queryMap.put(ORDER_TYPE, orderType.name()); |
69 | 68 | } |
70 | 69 | queryMap.put("userId", getCurrentUser().getCurrentUserId()); |
71 | - TkPageData<TkDataViewDTO> pageData = tkDataViewService.page(queryMap, getCurrentUser().isTenantAdmin()); | |
72 | - if(!pageData.getItems().isEmpty()){ | |
73 | - for(TkDataViewDTO dto : pageData.getItems()){ | |
70 | + TkPageData<TkDataViewDTO> pageData = | |
71 | + tkDataViewService.page(queryMap, getCurrentUser().isTenantAdmin()); | |
72 | + if (!pageData.getItems().isEmpty()) { | |
73 | + for (TkDataViewDTO dto : pageData.getItems()) { | |
74 | 74 | setPublicCustomerIdToCache(dto); |
75 | 75 | } |
76 | 76 | } |
... | ... | @@ -80,7 +80,7 @@ public class TkDataViewController extends BaseController { |
80 | 80 | @PostMapping |
81 | 81 | @ApiOperation("新增") |
82 | 82 | @PreAuthorize( |
83 | - "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:dataview:center:post'})") | |
83 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:dataview:center:post'})") | |
84 | 84 | public ResponseEntity<TkDataViewDTO> save( |
85 | 85 | @Validated({AddGroup.class}) @RequestBody TkDataViewDTO TkDataViewDTO) |
86 | 86 | throws ThingsboardException { |
... | ... | @@ -91,7 +91,8 @@ public class TkDataViewController extends BaseController { |
91 | 91 | @PutMapping |
92 | 92 | @ApiOperation("修改") |
93 | 93 | @PreAuthorize( |
94 | - "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:dataview:center:update'})") | |
94 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
95 | + "{'api:yt:dataview:center:update'})") | |
95 | 96 | public ResponseEntity<TkDataViewDTO> update( |
96 | 97 | @Validated({UpdateGroup.class}) @RequestBody TkDataViewDTO TkDataViewDTO) |
97 | 98 | throws ThingsboardException { |
... | ... | @@ -102,7 +103,8 @@ public class TkDataViewController extends BaseController { |
102 | 103 | @DeleteMapping |
103 | 104 | @ApiOperation("删除") |
104 | 105 | @PreAuthorize( |
105 | - "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:dataview:center:delete'})") | |
106 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
107 | + "{'api:yt:dataview:center:delete'})") | |
106 | 108 | public ResponseEntity<Boolean> delete( |
107 | 109 | @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) |
108 | 110 | throws ThingsboardException { |
... | ... | @@ -113,7 +115,8 @@ public class TkDataViewController extends BaseController { |
113 | 115 | @GetMapping("/get_configuration_info/{id}") |
114 | 116 | @ApiOperation("获取大屏信息") |
115 | 117 | @PreAuthorize( |
116 | - "@check.checkPermissions({'TENANT_ADMIN','CUSTOMER_USER'},{'api:yt:dataview:center:get_dataview_info:design'," | |
118 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
119 | + "{'api:yt:dataview:center:get_dataview_info:design'," | |
117 | 120 | + "'api:yt:dataview:center:get_dataview_info:preview'})") |
118 | 121 | public ResponseEntity<TkDataViewContentInfoDTO> getConfigurationInfos( |
119 | 122 | @PathVariable("id") String id) throws ThingsboardException { |
... | ... | @@ -123,7 +126,9 @@ public class TkDataViewController extends BaseController { |
123 | 126 | |
124 | 127 | @GetMapping("/publish/{id}") |
125 | 128 | @ApiOperation("发布") |
126 | - @PreAuthorize("@check.checkPermissions({},{})") | |
129 | + @PreAuthorize( | |
130 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
131 | + "{'api:yt:dataview:center:publish'})") | |
127 | 132 | public ResponseEntity<Boolean> publishDataView(@PathVariable("id") String id) |
128 | 133 | throws ThingsboardException { |
129 | 134 | return ResponseEntity.ok( |
... | ... | @@ -132,7 +137,9 @@ public class TkDataViewController extends BaseController { |
132 | 137 | |
133 | 138 | @GetMapping("/cancel_publish/{id}") |
134 | 139 | @ApiOperation("取消发布") |
135 | - @PreAuthorize("@check.checkPermissions({},{})") | |
140 | + @PreAuthorize( | |
141 | + "@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
142 | + "{'api:yt:dataview:center:cancel_publish'})") | |
136 | 143 | public ResponseEntity<Boolean> cancelPublishDataView(@PathVariable("id") String id) |
137 | 144 | throws ThingsboardException { |
138 | 145 | return ResponseEntity.ok( |
... | ... | @@ -141,7 +148,8 @@ public class TkDataViewController extends BaseController { |
141 | 148 | |
142 | 149 | @PostMapping("share/{id}") |
143 | 150 | @ApiOperation("分享") |
144 | - @PreAuthorize("@check.checkPermissions({'TENANT_ADMIN'},{'api:yt:dataview:center:share'})") | |
151 | + @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN','TENANT_ADMIN','CUSTOMER_USER'}," + | |
152 | + "{'api:yt:dataview:center:share'})") | |
145 | 153 | public ResponseEntity<Boolean> share( |
146 | 154 | @PathVariable("id") String id, |
147 | 155 | @RequestParam(value = "accessCredentials", required = false) String accessCredentials, | ... | ... |
1 | 1 | package org.thingsboard.server.controller.yunteng; |
2 | 2 | |
3 | -import com.google.common.util.concurrent.ListenableFuture; | |
4 | 3 | import io.swagger.annotations.Api; |
5 | 4 | import io.swagger.annotations.ApiOperation; |
6 | 5 | import io.swagger.annotations.ApiParam; |
7 | 6 | import lombok.RequiredArgsConstructor; |
8 | -import org.apache.commons.lang3.StringUtils; | |
9 | -import org.springframework.http.MediaType; | |
10 | 7 | import org.springframework.http.ResponseEntity; |
11 | 8 | import org.springframework.security.access.prepost.PreAuthorize; |
12 | 9 | import org.springframework.validation.annotation.Validated; |
13 | 10 | import org.springframework.web.bind.annotation.*; |
14 | -import org.thingsboard.server.common.data.asset.Asset; | |
15 | 11 | import org.thingsboard.server.common.data.exception.ThingsboardException; |
16 | -import org.thingsboard.server.common.data.id.AssetId; | |
17 | -import org.thingsboard.server.common.data.id.CustomerId; | |
18 | -import org.thingsboard.server.common.data.id.TenantId; | |
19 | 12 | import org.thingsboard.server.common.data.yunteng.common.AddGroup; |
20 | 13 | import org.thingsboard.server.common.data.yunteng.common.DeleteGroup; |
21 | 14 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
22 | 15 | import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO; |
23 | 16 | import org.thingsboard.server.common.data.yunteng.dto.TkDataViewInterfaceDTO; |
24 | -import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | |
25 | 17 | import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum; |
18 | +import org.thingsboard.server.common.data.yunteng.enums.TkSystemTypeEnum; | |
26 | 19 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
27 | 20 | import org.thingsboard.server.controller.BaseController; |
28 | 21 | import org.thingsboard.server.dao.yunteng.service.TkDataViewInterfaceService; |
29 | -import org.thingsboard.server.service.security.model.SecurityUser; | |
30 | 22 | |
31 | 23 | import java.util.*; |
32 | 24 | |
... | ... | @@ -41,153 +33,154 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant. |
41 | 33 | @Api(tags = "大屏公共接口") |
42 | 34 | public class TkDataViewInterfaceController extends BaseController { |
43 | 35 | |
44 | - private final TkDataViewInterfaceService tkDataViewInterfaceService; | |
45 | - | |
46 | - @GetMapping(params = {PAGE_SIZE, PAGE}) | |
47 | - @ApiOperation("分页") | |
48 | - public TkPageData<TkDataViewInterfaceDTO> page( | |
49 | - @RequestParam(PAGE_SIZE) int pageSize, | |
50 | - @RequestParam(PAGE) int page, | |
51 | - @RequestParam(value = "name", required = false) String name, | |
52 | - @RequestParam(value = "state", required = false) String state, | |
53 | - @RequestParam(value = ORDER_FILED, required = false) String orderBy, | |
54 | - @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | |
55 | - throws ThingsboardException { | |
56 | - | |
57 | - HashMap<String, Object> queryMap = new HashMap<>(); | |
58 | - queryMap.put(PAGE_SIZE, pageSize); | |
59 | - queryMap.put(PAGE, page); | |
60 | - queryMap.put(ORDER_FILED, orderBy); | |
61 | - queryMap.put("tenantId", getCurrentUser().getCurrentTenantId()); | |
62 | - if (StringUtils.isNotBlank(name)) { | |
63 | - queryMap.put("name", name); | |
64 | - } | |
65 | - if (StringUtils.isNotBlank(state)) { | |
66 | - queryMap.put("state", state); | |
67 | - } | |
68 | - if (null != orderType) { | |
69 | - queryMap.put(ORDER_TYPE, orderType.name()); | |
70 | - } | |
71 | - return tkDataViewInterfaceService.page(queryMap); | |
36 | + private final TkDataViewInterfaceService tkDataViewInterfaceService; | |
37 | + | |
38 | + @GetMapping(params = {PAGE_SIZE, PAGE}) | |
39 | + @ApiOperation("分页") | |
40 | + public TkPageData<TkDataViewInterfaceDTO> page( | |
41 | + @RequestParam(PAGE_SIZE) int pageSize, | |
42 | + @RequestParam(PAGE) int page, | |
43 | + @RequestParam(value = "name", required = false) String name, | |
44 | + @RequestParam(value = "state", required = false) Integer state, | |
45 | + @RequestParam(value = "interfaceType", required = false) TkSystemTypeEnum interfaceType, | |
46 | + @RequestParam(value = ORDER_FILED, required = false) String orderBy, | |
47 | + @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) | |
48 | + throws ThingsboardException { | |
49 | + | |
50 | + HashMap<String, Object> queryMap = new HashMap<>(); | |
51 | + queryMap.put(PAGE_SIZE, pageSize); | |
52 | + queryMap.put(PAGE, page); | |
53 | + queryMap.put(ORDER_FILED, orderBy); | |
54 | + queryMap.put(TENANT_ID, getCurrentUser().getCurrentTenantId()); | |
55 | + queryMap.put("name", name); | |
56 | + queryMap.put("state", state); | |
57 | + if (null != orderType) { | |
58 | + queryMap.put(ORDER_TYPE, orderType.name()); | |
72 | 59 | } |
73 | - | |
74 | - @PostMapping | |
75 | - @ApiOperation("新增") | |
76 | - @PreAuthorize("@check.checkPermissions({},{})") | |
77 | - public ResponseEntity<TkDataViewInterfaceDTO> save( | |
78 | - @Validated({AddGroup.class}) @RequestBody TkDataViewInterfaceDTO tkDataViewInterfaceDTO) | |
79 | - throws ThingsboardException { | |
80 | - tkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
81 | - | |
82 | - return ResponseEntity.ok( | |
83 | - tkDataViewInterfaceService.saveDataViewInterface(tkDataViewInterfaceDTO)); | |
84 | - } | |
85 | - | |
86 | - @PutMapping | |
87 | - @ApiOperation("修改") | |
88 | - @PreAuthorize("@check.checkPermissions({},{})") | |
89 | - public ResponseEntity<TkDataViewInterfaceDTO> update( | |
90 | - @Validated({UpdateGroup.class}) @RequestBody TkDataViewInterfaceDTO TkDataViewInterfaceDTO) | |
91 | - throws ThingsboardException { | |
92 | - TkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
93 | - return ResponseEntity.ok( | |
94 | - tkDataViewInterfaceService.updateDataViewInterface(TkDataViewInterfaceDTO)); | |
95 | - } | |
96 | - | |
97 | - @DeleteMapping | |
98 | - @ApiOperation("删除") | |
99 | - @PreAuthorize("@check.checkPermissions({},{})") | |
100 | - public ResponseEntity<Boolean> delete( | |
101 | - @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) | |
102 | - throws ThingsboardException { | |
103 | - deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
104 | - return ResponseEntity.ok(tkDataViewInterfaceService.deleteDataViewInterface(deleteDTO)); | |
105 | - } | |
106 | - | |
107 | - | |
108 | - @GetMapping("/publish/{id}") | |
109 | - @ApiOperation("发布") | |
110 | - @PreAuthorize("@check.checkPermissions({},{})") | |
111 | - public ResponseEntity<Boolean> publishInterface(@PathVariable("id") String id) throws ThingsboardException { | |
112 | - return ResponseEntity.ok( | |
113 | - tkDataViewInterfaceService.publishInterface(id, getCurrentUser().getCurrentTenantId())); | |
114 | - } | |
115 | - | |
116 | - @GetMapping("/cancel_publish/{id}") | |
117 | - @ApiOperation("取消发布") | |
118 | - @PreAuthorize("@check.checkPermissions({},{})") | |
119 | - public ResponseEntity<Boolean> cancelPublishInterface(@PathVariable("id") String id) throws ThingsboardException { | |
120 | - return ResponseEntity.ok( | |
121 | - tkDataViewInterfaceService.cancelPublishInterface(id, getCurrentUser().getCurrentTenantId())); | |
122 | - } | |
123 | - | |
124 | - | |
125 | - @ApiOperation("根据接口ID,获得接口详情") | |
126 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | |
127 | - @RequestMapping(value = "/get_interface_details", params = {"ids"}, method = RequestMethod.GET) | |
128 | - @ResponseBody | |
129 | - public List<TkDataViewInterfaceDTO> getInterfaceDetails( | |
130 | - @ApiParam(value = "A list of interface ids, separated by comma ','") | |
131 | - @RequestParam("ids") String[] ids) throws ThingsboardException { | |
132 | - | |
133 | - List<String> idsList = new ArrayList<>(); | |
134 | - for (String strId : ids) { | |
135 | - idsList.add(strId); | |
136 | - } | |
137 | - return tkDataViewInterfaceService.getInterfaceDetails(idsList); | |
60 | + if (null != interfaceType) { | |
61 | + queryMap.put("interfaceType", interfaceType); | |
138 | 62 | } |
139 | - | |
140 | - @GetMapping("/filter_by_interface_type/{type}") | |
141 | - @ApiOperation("根据接口类型过滤数据") | |
142 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | |
143 | - public List<TkDataViewInterfaceDTO> filterByInterfaceType(@PathVariable("type") String type) throws ThingsboardException { | |
144 | - return tkDataViewInterfaceService.filterByInterfaceType(type, getCurrentUser().getCurrentTenantId()); | |
145 | - } | |
146 | - | |
147 | - | |
148 | - @GetMapping("/find_all_interface/{state}") | |
149 | - @ApiOperation("查询所有接口") | |
150 | - @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')") | |
151 | - public List<TkDataViewInterfaceDTO> findAll(@PathVariable("state") String state) throws ThingsboardException { | |
152 | - return tkDataViewInterfaceService.findAll(state,getCurrentUser().getCurrentTenantId()); | |
153 | - } | |
154 | - | |
155 | - | |
156 | - @ApiOperation("批量发布") | |
157 | - @RequestMapping(value = "/batch_publish", params = {"ids"}, method = RequestMethod.PUT) | |
158 | - @ResponseBody | |
159 | - public ResponseEntity<Boolean> batchPublishInterface( | |
160 | - @ApiParam(value = "A list of interface ids, separated by comma ','") | |
161 | - @RequestParam("ids") String[] ids) throws ThingsboardException { | |
162 | - | |
163 | - List<String> idsList = new ArrayList<>(); | |
164 | - for (String strId : ids) { | |
165 | - idsList.add(strId); | |
166 | - } | |
167 | - return ResponseEntity.ok(tkDataViewInterfaceService.batchPublishInterface(idsList, getCurrentUser().getCurrentTenantId())); | |
168 | - } | |
169 | - | |
170 | - @ApiOperation("批量取消发布") | |
171 | - @RequestMapping(value = "/batch_cancel_publish", params = {"ids"}, method = RequestMethod.PUT) | |
172 | - @ResponseBody | |
173 | - public ResponseEntity<Boolean> batchCancelPublishInterface( | |
174 | - @ApiParam(value = "A list of interface ids, separated by comma ','") | |
175 | - @RequestParam("ids") String[] ids) throws ThingsboardException { | |
176 | - | |
177 | - List<String> idsList = new ArrayList<>(); | |
178 | - for (String strId : ids) { | |
179 | - idsList.add(strId); | |
180 | - } | |
181 | - return ResponseEntity.ok(tkDataViewInterfaceService.batchCancelPublishInterface(idsList, getCurrentUser().getCurrentTenantId())); | |
182 | - } | |
183 | - | |
184 | - | |
185 | -// @ApiOperation("SQL查询") | |
186 | -// @RequestMapping(value = "/sql_select", params = {"sql"}, method = RequestMethod.POST) | |
187 | -// @ResponseBody | |
188 | -// public List<LinkedHashMap<String, Object>> sqlSelect( | |
189 | -// @RequestParam("sql") String sql) throws ThingsboardException { | |
190 | -// return tkDataViewInterfaceService.executeSql(sql); | |
191 | -// } | |
192 | - | |
63 | + return tkDataViewInterfaceService.page(queryMap); | |
64 | + } | |
65 | + | |
66 | + @PostMapping | |
67 | + @ApiOperation("新增") | |
68 | + @PreAuthorize("@check.checkPermissions({},{})") | |
69 | + public ResponseEntity<TkDataViewInterfaceDTO> save( | |
70 | + @Validated({AddGroup.class}) @RequestBody TkDataViewInterfaceDTO tkDataViewInterfaceDTO) | |
71 | + throws ThingsboardException { | |
72 | + tkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
73 | + | |
74 | + return ResponseEntity.ok( | |
75 | + tkDataViewInterfaceService.saveDataViewInterface(tkDataViewInterfaceDTO)); | |
76 | + } | |
77 | + | |
78 | + @PutMapping | |
79 | + @ApiOperation("修改") | |
80 | + @PreAuthorize("@check.checkPermissions({},{})") | |
81 | + public ResponseEntity<TkDataViewInterfaceDTO> update( | |
82 | + @Validated({UpdateGroup.class}) @RequestBody TkDataViewInterfaceDTO TkDataViewInterfaceDTO) | |
83 | + throws ThingsboardException { | |
84 | + TkDataViewInterfaceDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
85 | + return ResponseEntity.ok( | |
86 | + tkDataViewInterfaceService.updateDataViewInterface(TkDataViewInterfaceDTO)); | |
87 | + } | |
88 | + | |
89 | + @DeleteMapping | |
90 | + @ApiOperation("删除") | |
91 | + @PreAuthorize("@check.checkPermissions({},{})") | |
92 | + public ResponseEntity<Boolean> delete( | |
93 | + @Validated({DeleteGroup.class}) @RequestBody DeleteDTO deleteDTO) | |
94 | + throws ThingsboardException { | |
95 | + deleteDTO.setTenantId(getCurrentUser().getCurrentTenantId()); | |
96 | + return ResponseEntity.ok(tkDataViewInterfaceService.deleteDataViewInterface(deleteDTO)); | |
97 | + } | |
98 | + | |
99 | + @GetMapping("/publish/{id}") | |
100 | + @ApiOperation("发布") | |
101 | + @PreAuthorize("@check.checkPermissions({},{})") | |
102 | + public ResponseEntity<Boolean> publishInterface(@PathVariable("id") String id) | |
103 | + throws ThingsboardException { | |
104 | + return ResponseEntity.ok( | |
105 | + tkDataViewInterfaceService.publishInterface(id, getCurrentUser().getCurrentTenantId())); | |
106 | + } | |
107 | + | |
108 | + @GetMapping("/cancel_publish/{id}") | |
109 | + @ApiOperation("取消发布") | |
110 | + @PreAuthorize("@check.checkPermissions({},{})") | |
111 | + public ResponseEntity<Boolean> cancelPublishInterface(@PathVariable("id") String id) | |
112 | + throws ThingsboardException { | |
113 | + return ResponseEntity.ok( | |
114 | + tkDataViewInterfaceService.cancelPublishInterface( | |
115 | + id, getCurrentUser().getCurrentTenantId())); | |
116 | + } | |
117 | + | |
118 | + @ApiOperation("根据接口ID,获得接口详情") | |
119 | + @PreAuthorize("@check.checkPermissions({},{})") | |
120 | + @RequestMapping( | |
121 | + value = "/get_interface_details", | |
122 | + params = {"ids"}, | |
123 | + method = RequestMethod.GET) | |
124 | + @ResponseBody | |
125 | + public List<TkDataViewInterfaceDTO> getInterfaceDetails( | |
126 | + @ApiParam(value = "A list of interface ids, separated by comma ','") @RequestParam("ids") | |
127 | + String[] ids) { | |
128 | + return tkDataViewInterfaceService.getInterfaceDetails(new ArrayList<>(Arrays.asList(ids))); | |
129 | + } | |
130 | + | |
131 | + @GetMapping("/filter_by_interface_type/{type}") | |
132 | + @ApiOperation("根据接口类型过滤数据") | |
133 | + @PreAuthorize("@check.checkPermissions({},{})") | |
134 | + public List<TkDataViewInterfaceDTO> filterByInterfaceType(@PathVariable("type") String type) | |
135 | + throws ThingsboardException { | |
136 | + return tkDataViewInterfaceService.filterByInterfaceType( | |
137 | + type, getCurrentUser().getCurrentTenantId()); | |
138 | + } | |
139 | + | |
140 | + @GetMapping("/find_all_interface/{state}") | |
141 | + @ApiOperation("查询所有接口") | |
142 | + @PreAuthorize("@check.checkPermissions({},{})") | |
143 | + public List<TkDataViewInterfaceDTO> findAll(@PathVariable("state") String state) | |
144 | + throws ThingsboardException { | |
145 | + return tkDataViewInterfaceService.findAll(state, getCurrentUser().getCurrentTenantId()); | |
146 | + } | |
147 | + | |
148 | + @GetMapping("/find/can_use_interfaces") | |
149 | + @ApiOperation("查询当前用户可使用的接口") | |
150 | + @PreAuthorize("@check.checkPermissions({},{})") | |
151 | + public List<TkDataViewInterfaceDTO> findCanUseInterfaces() throws ThingsboardException { | |
152 | + boolean isSysAdminOrPtAdmin = getCurrentUser().isPtAdmin() || getCurrentUser().isSystemAdmin(); | |
153 | + return tkDataViewInterfaceService.findCanUseInterfaces( | |
154 | + isSysAdminOrPtAdmin, getCurrentUser().getCurrentTenantId()); | |
155 | + } | |
156 | + | |
157 | + @ApiOperation("批量发布") | |
158 | + @RequestMapping( | |
159 | + value = "/batch_publish", | |
160 | + params = {"ids"}, | |
161 | + method = RequestMethod.PUT) | |
162 | + @ResponseBody | |
163 | + public ResponseEntity<Boolean> batchPublishInterface( | |
164 | + @ApiParam(value = "A list of interface ids, separated by comma ','") @RequestParam("ids") | |
165 | + String[] ids) | |
166 | + throws ThingsboardException { | |
167 | + return ResponseEntity.ok( | |
168 | + tkDataViewInterfaceService.batchPublishInterface( | |
169 | + new ArrayList<>(Arrays.asList(ids)), getCurrentUser().getCurrentTenantId())); | |
170 | + } | |
171 | + | |
172 | + @ApiOperation("批量取消发布") | |
173 | + @RequestMapping( | |
174 | + value = "/batch_cancel_publish", | |
175 | + params = {"ids"}, | |
176 | + method = RequestMethod.PUT) | |
177 | + @ResponseBody | |
178 | + public ResponseEntity<Boolean> batchCancelPublishInterface( | |
179 | + @ApiParam(value = "A list of interface ids, separated by comma ','") @RequestParam("ids") | |
180 | + String[] ids) | |
181 | + throws ThingsboardException { | |
182 | + return ResponseEntity.ok( | |
183 | + tkDataViewInterfaceService.batchCancelPublishInterface( | |
184 | + new ArrayList<>(Arrays.asList(ids)), getCurrentUser().getCurrentTenantId())); | |
185 | + } | |
193 | 186 | } | ... | ... |
common/data/src/main/java/org/thingsboard/server/common/data/yunteng/dto/TkDataViewInterfaceDTO.java
... | ... | @@ -5,6 +5,7 @@ import lombok.Data; |
5 | 5 | import lombok.EqualsAndHashCode; |
6 | 6 | import org.thingsboard.server.common.data.yunteng.common.AddGroup; |
7 | 7 | import org.thingsboard.server.common.data.yunteng.common.UpdateGroup; |
8 | +import org.thingsboard.server.common.data.yunteng.enums.TkSystemTypeEnum; | |
8 | 9 | |
9 | 10 | import javax.validation.constraints.NotEmpty; |
10 | 11 | /** |
... | ... | @@ -14,31 +15,33 @@ import javax.validation.constraints.NotEmpty; |
14 | 15 | @Data |
15 | 16 | public class TkDataViewInterfaceDTO extends TenantDTO { |
16 | 17 | |
17 | - @ApiModelProperty(value = "接口名称", required = true) | |
18 | - @NotEmpty( | |
19 | - message = "名称不能为空或空字符串", | |
20 | - groups = {UpdateGroup.class, AddGroup.class}) | |
21 | - private String interfaceName; | |
18 | + @ApiModelProperty(value = "接口名称", required = true) | |
19 | + @NotEmpty( | |
20 | + message = "名称不能为空或空字符串", | |
21 | + groups = {UpdateGroup.class, AddGroup.class}) | |
22 | + private String interfaceName; | |
22 | 23 | |
23 | - @ApiModelProperty(value = "请求方式:0普通请求 1SQL请求 2websocket请求") | |
24 | - private Integer requestContentType; | |
24 | + @ApiModelProperty(value = "请求方式:0普通请求 1SQL请求 2websocket请求") | |
25 | + private Integer requestContentType; | |
25 | 26 | |
26 | - @ApiModelProperty(value = "源地址") | |
27 | - private String requestOriginUrl; | |
27 | + @ApiModelProperty(value = "源地址") | |
28 | + private String requestOriginUrl; | |
28 | 29 | |
29 | - @ApiModelProperty(value = "请求类型:GET、PUT、POST", required = true) | |
30 | - private String requestHttpType; | |
30 | + @ApiModelProperty(value = "请求类型:GET、PUT、POST", required = true) | |
31 | + private String requestHttpType; | |
31 | 32 | |
32 | - @ApiModelProperty(value = "接口地址") | |
33 | - private String requestUrl; | |
33 | + @ApiModelProperty(value = "接口类型:系统、自定义(默认)") | |
34 | + private TkSystemTypeEnum interfaceType = TkSystemTypeEnum.CUSTOM; | |
34 | 35 | |
35 | - @ApiModelProperty(value = "参数配置") | |
36 | - private String requestParams; | |
36 | + @ApiModelProperty(value = "接口地址") | |
37 | + private String requestUrl; | |
37 | 38 | |
38 | - @ApiModelProperty(value = "状态:0待发布 1已发布") | |
39 | - private Integer state; | |
39 | + @ApiModelProperty(value = "参数配置") | |
40 | + private String requestParams; | |
40 | 41 | |
41 | - @ApiModelProperty(value = "接口描述") | |
42 | - private String remark; | |
42 | + @ApiModelProperty(value = "状态:0待发布 1已发布") | |
43 | + private Integer state; | |
43 | 44 | |
45 | + @ApiModelProperty(value = "接口描述") | |
46 | + private String remark; | |
44 | 47 | } | ... | ... |
... | ... | @@ -10,10 +10,13 @@ public enum StatusEnum { |
10 | 10 | DISABLE("禁用", 0), |
11 | 11 | NORMAL("正常", 1), |
12 | 12 | PAUSE("暂停", 0), |
13 | + | |
14 | + NOT_RELEASE("未发布", 0), | |
15 | + RELEASE("发布", 1), | |
13 | 16 | FAIL("失败", 0), |
14 | 17 | SUCCESS("成功", 1), |
15 | - RUNNING("运行中",2), | |
16 | - NOT_RUNNING("未执行",3); | |
18 | + RUNNING("运行中", 2), | |
19 | + NOT_RUNNING("未执行", 3); | |
17 | 20 | |
18 | 21 | @Getter @Setter private String name; |
19 | 22 | @Getter @Setter private Integer index; | ... | ... |
1 | 1 | package org.thingsboard.server.dao.yunteng.entities; |
2 | - | |
3 | -import com.baomidou.mybatisplus.annotation.FieldStrategy; | |
4 | 2 | import com.baomidou.mybatisplus.annotation.TableField; |
5 | 3 | import com.baomidou.mybatisplus.annotation.TableName; |
6 | -import io.swagger.annotations.ApiModelProperty; | |
7 | 4 | import lombok.Data; |
8 | 5 | import lombok.EqualsAndHashCode; |
6 | +import org.apache.ibatis.type.EnumTypeHandler; | |
9 | 7 | import org.thingsboard.server.common.data.yunteng.constant.ModelConstants; |
8 | +import org.thingsboard.server.common.data.yunteng.enums.TkSystemTypeEnum; | |
10 | 9 | |
11 | 10 | /** |
12 | 11 | * @author tianfuLei |
... | ... | @@ -26,4 +25,6 @@ public class TkDataViewInterfaceEntity extends TenantBaseEntity { |
26 | 25 | private Integer state; |
27 | 26 | private String remark; |
28 | 27 | |
28 | + @TableField(typeHandler = EnumTypeHandler.class) | |
29 | + private TkSystemTypeEnum interfaceType; | |
29 | 30 | } | ... | ... |
... | ... | @@ -692,6 +692,21 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE |
692 | 692 | } |
693 | 693 | |
694 | 694 | @Override |
695 | + public List<UserDTO> findAllTenantAdminsByTenantId(String tenantId) { | |
696 | + List<SysUserEntity> entities = | |
697 | + baseMapper.selectList( | |
698 | + new LambdaQueryWrapper<SysUserEntity>() | |
699 | + .eq(SysUserEntity::getTenantId, tenantId) | |
700 | + .eq(SysUserEntity::getLevel, 2)); | |
701 | + if (null != entities && !entities.isEmpty()) { | |
702 | + return entities.stream() | |
703 | + .map(entity -> entity.getDTO(UserDTO.class)) | |
704 | + .collect(Collectors.toList()); | |
705 | + } | |
706 | + return null; | |
707 | + } | |
708 | + | |
709 | + @Override | |
695 | 710 | public UserDTO accountExist(String userName) { |
696 | 711 | if (StringUtils.isEmpty(userName)) { |
697 | 712 | throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | ... | ... |
... | ... | @@ -5,21 +5,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | 5 | import com.baomidou.mybatisplus.core.metadata.IPage; |
6 | 6 | import lombok.RequiredArgsConstructor; |
7 | 7 | import lombok.extern.slf4j.Slf4j; |
8 | -import org.apache.ibatis.annotations.Param; | |
8 | +import org.apache.commons.lang3.StringUtils; | |
9 | 9 | import org.springframework.stereotype.Service; |
10 | 10 | import org.springframework.transaction.annotation.Transactional; |
11 | 11 | import org.thingsboard.server.common.data.id.EntityId; |
12 | +import org.thingsboard.server.common.data.id.UserId; | |
12 | 13 | import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants; |
13 | 14 | import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException; |
14 | 15 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
15 | 16 | import org.thingsboard.server.common.data.yunteng.dto.*; |
16 | -import org.thingsboard.server.common.data.yunteng.dto.request.TkDataViewContentInfoDTO; | |
17 | +import org.thingsboard.server.common.data.yunteng.enums.StatusEnum; | |
18 | +import org.thingsboard.server.common.data.yunteng.enums.TkSystemTypeEnum; | |
17 | 19 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
18 | -import org.thingsboard.server.dao.yunteng.entities.*; | |
19 | 20 | import org.thingsboard.server.dao.yunteng.entities.TkDataViewInterfaceEntity; |
20 | -import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper; | |
21 | 21 | import org.thingsboard.server.dao.yunteng.mapper.TkDataViewInterfaceMapper; |
22 | -import org.thingsboard.server.dao.yunteng.mapper.TkDataViewMapper; | |
23 | 22 | import org.thingsboard.server.dao.yunteng.service.*; |
24 | 23 | |
25 | 24 | import java.util.*; |
... | ... | @@ -32,182 +31,186 @@ import java.util.stream.Collectors; |
32 | 31 | @Service |
33 | 32 | @RequiredArgsConstructor |
34 | 33 | public class TkDataViewInterfaceServiceImpl |
35 | - extends AbstractBaseService<TkDataViewInterfaceMapper, TkDataViewInterfaceEntity> | |
36 | - implements TkDataViewInterfaceService { | |
37 | - | |
38 | - @Override | |
39 | - public TkPageData<TkDataViewInterfaceDTO> page( | |
40 | - Map<String, Object> queryMap) { | |
41 | - IPage<TkDataViewInterfaceEntity> iPage = null; | |
42 | - if(queryMap.get("state") != null){ | |
43 | - iPage = baseMapper.selectPage( | |
44 | - getPage(queryMap, "create_time", false), | |
45 | - new QueryWrapper<TkDataViewInterfaceEntity>() | |
46 | - .lambda() | |
47 | - .like( | |
48 | - queryMap.get("name") != null, | |
49 | - TkDataViewInterfaceEntity::getInterfaceName, | |
50 | - String.valueOf(queryMap.get("name"))) | |
51 | - .in( | |
52 | - queryMap.get("tenantId") != null, | |
53 | - TkDataViewInterfaceEntity::getTenantId, EntityId.NULL_UUID.toString(), | |
54 | - String.valueOf(queryMap.get("tenantId"))) | |
55 | - .eq( | |
56 | - queryMap.get("state") != null, | |
57 | - TkDataViewInterfaceEntity::getState, | |
58 | - Integer.parseInt((String)queryMap.get("state")))); | |
59 | - }else{ | |
60 | - iPage = baseMapper.selectPage( | |
61 | - getPage(queryMap, "create_time", false), | |
62 | - new QueryWrapper<TkDataViewInterfaceEntity>() | |
63 | - .lambda() | |
64 | - .like( | |
65 | - queryMap.get("name") != null, | |
66 | - TkDataViewInterfaceEntity::getInterfaceName, | |
67 | - String.valueOf(queryMap.get("name"))) | |
68 | - .in( | |
69 | - queryMap.get("tenantId") != null, | |
70 | - TkDataViewInterfaceEntity::getTenantId, EntityId.NULL_UUID.toString(), | |
71 | - String.valueOf(queryMap.get("tenantId"))) | |
72 | - .eq( | |
73 | - queryMap.get("state") != null, | |
74 | - TkDataViewInterfaceEntity::getState, | |
75 | - String.valueOf(queryMap.get("state")))); | |
76 | - } | |
77 | - | |
78 | - return getPageData(iPage, TkDataViewInterfaceDTO.class); | |
34 | + extends AbstractBaseService<TkDataViewInterfaceMapper, TkDataViewInterfaceEntity> | |
35 | + implements TkDataViewInterfaceService { | |
36 | + | |
37 | + @Override | |
38 | + public TkPageData<TkDataViewInterfaceDTO> page(Map<String, Object> queryMap) { | |
39 | + String name = null != queryMap.get("name") ? (String) queryMap.get("name") : null; | |
40 | + Integer state = null != queryMap.get("state") ? (Integer) queryMap.get("state") : null; | |
41 | + TkSystemTypeEnum interfaceType = | |
42 | + null != queryMap.get("interfaceType") | |
43 | + ? (TkSystemTypeEnum) queryMap.get("interfaceType") | |
44 | + : null; | |
45 | + String tenantId = (String) queryMap.get("tenantId"); | |
46 | + IPage<TkDataViewInterfaceEntity> iPage = | |
47 | + baseMapper.selectPage( | |
48 | + getPage(queryMap, "create_time", false), | |
49 | + new QueryWrapper<TkDataViewInterfaceEntity>() | |
50 | + .lambda() | |
51 | + .eq(TkDataViewInterfaceEntity::getTenantId, tenantId) | |
52 | + .eq( | |
53 | + null != interfaceType, | |
54 | + TkDataViewInterfaceEntity::getInterfaceType, | |
55 | + interfaceType) | |
56 | + .like( | |
57 | + StringUtils.isNotEmpty(name), TkDataViewInterfaceEntity::getInterfaceName, name) | |
58 | + .eq(state != null, TkDataViewInterfaceEntity::getState, state)); | |
59 | + return getPageData(iPage, TkDataViewInterfaceDTO.class); | |
60 | + } | |
61 | + | |
62 | + @Override | |
63 | + @Transactional | |
64 | + public TkDataViewInterfaceDTO saveDataViewInterface( | |
65 | + TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | |
66 | + TkDataViewInterfaceEntity interfaceEntity = | |
67 | + tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class); | |
68 | + interfaceEntity.setState(0); | |
69 | + | |
70 | + baseMapper.insert(interfaceEntity); | |
71 | + return tkDataViewInterfaceDTO; | |
72 | + } | |
73 | + | |
74 | + @Override | |
75 | + @Transactional | |
76 | + public TkDataViewInterfaceDTO updateDataViewInterface( | |
77 | + TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | |
78 | + TkDataViewInterfaceEntity interfaceEntity = | |
79 | + baseMapper.selectById(tkDataViewInterfaceDTO.getId()); | |
80 | + if (!interfaceEntity.getTenantId().equals(tkDataViewInterfaceDTO.getTenantId())) { | |
81 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
79 | 82 | } |
80 | - | |
81 | - @Override | |
82 | - @Transactional | |
83 | - public TkDataViewInterfaceDTO saveDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | |
84 | - TkDataViewInterfaceEntity interfaceEntity = | |
85 | - tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class); | |
86 | - interfaceEntity.setState(0); | |
87 | - | |
88 | - baseMapper.insert(interfaceEntity); | |
89 | - return tkDataViewInterfaceDTO; | |
90 | - } | |
91 | - | |
92 | - @Override | |
93 | - @Transactional | |
94 | - public TkDataViewInterfaceDTO updateDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO) { | |
95 | - TkDataViewInterfaceEntity interfaceEntity = baseMapper.selectById(tkDataViewInterfaceDTO.getId()); | |
96 | - if (!interfaceEntity.getTenantId().equals(tkDataViewInterfaceDTO.getTenantId())) { | |
97 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
98 | - } | |
99 | - baseMapper.updateById(tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class)); | |
100 | - return tkDataViewInterfaceDTO; | |
101 | - } | |
102 | - | |
103 | - @Override | |
104 | - @Transactional | |
105 | - public boolean deleteDataViewInterface(DeleteDTO deleteDTO) { | |
106 | - List<TkDataViewInterfaceEntity> interfaceEntityList = | |
107 | - baseMapper.selectList( | |
108 | - new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
109 | - .in(TkDataViewInterfaceEntity::getId, deleteDTO.getIds())); | |
110 | - for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
111 | - if (!center.getTenantId().equals(deleteDTO.getTenantId())) { | |
112 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
113 | - } | |
114 | - } | |
115 | - return baseMapper.deleteBatchIds(deleteDTO.getIds()) > FastIotConstants.MagicNumber.ZERO; | |
116 | - } | |
117 | - | |
118 | - | |
119 | - @Override | |
120 | - public boolean publishInterface(String id, String tenantId) { | |
121 | - TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | |
122 | - if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | |
123 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
124 | - } | |
125 | - //Modify interface state is publish | |
126 | - dataViewInterfaceEntity.setState(1); | |
127 | - int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | |
128 | - return resultInt > 0 ; | |
83 | + baseMapper.updateById(tkDataViewInterfaceDTO.getEntity(TkDataViewInterfaceEntity.class)); | |
84 | + return tkDataViewInterfaceDTO; | |
85 | + } | |
86 | + | |
87 | + @Override | |
88 | + @Transactional | |
89 | + public boolean deleteDataViewInterface(DeleteDTO deleteDTO) { | |
90 | + List<TkDataViewInterfaceEntity> interfaceEntityList = | |
91 | + baseMapper.selectList( | |
92 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
93 | + .in(TkDataViewInterfaceEntity::getId, deleteDTO.getIds())); | |
94 | + for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
95 | + if (!center.getTenantId().equals(deleteDTO.getTenantId())) { | |
96 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
97 | + } | |
129 | 98 | } |
130 | - | |
131 | - @Override | |
132 | - public boolean cancelPublishInterface(String id, String tenantId) { | |
133 | - TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | |
134 | - if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | |
135 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
136 | - } | |
137 | - //Modify interface state is cancelPublish | |
138 | - dataViewInterfaceEntity.setState(0); | |
139 | - int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | |
140 | - return resultInt > 0 ; | |
99 | + return baseMapper.deleteBatchIds(deleteDTO.getIds()) > FastIotConstants.MagicNumber.ZERO; | |
100 | + } | |
101 | + | |
102 | + @Override | |
103 | + public boolean publishInterface(String id, String tenantId) { | |
104 | + TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | |
105 | + if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | |
106 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
141 | 107 | } |
142 | - | |
143 | - @Override | |
144 | - public List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids) { | |
145 | - List<TkDataViewInterfaceDTO> lists = baseMapper.getInterfaceDetails(ids); | |
146 | - return lists; | |
108 | + // Modify interface state is publish | |
109 | + dataViewInterfaceEntity.setState(1); | |
110 | + int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | |
111 | + return resultInt > 0; | |
112 | + } | |
113 | + | |
114 | + @Override | |
115 | + public boolean cancelPublishInterface(String id, String tenantId) { | |
116 | + TkDataViewInterfaceEntity dataViewInterfaceEntity = baseMapper.selectById(id); | |
117 | + if (!dataViewInterfaceEntity.getTenantId().equals(tenantId)) { | |
118 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
147 | 119 | } |
148 | - | |
149 | - @Override | |
150 | - public List<TkDataViewInterfaceDTO> filterByInterfaceType(String type,String tenantId) { | |
151 | - List<String> tenantIds = new ArrayList<>(); | |
152 | - tenantIds.add(tenantId); | |
153 | - tenantIds.add(EntityId.NULL_UUID.toString()); | |
154 | - List<TkDataViewInterfaceDTO> lists = baseMapper.filterByInterfaceType(type,tenantIds); | |
155 | - return lists; | |
120 | + // Modify interface state is cancelPublish | |
121 | + dataViewInterfaceEntity.setState(0); | |
122 | + int resultInt = baseMapper.updateById(dataViewInterfaceEntity); | |
123 | + return resultInt > 0; | |
124 | + } | |
125 | + | |
126 | + @Override | |
127 | + public List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids) { | |
128 | + return baseMapper.getInterfaceDetails(ids); | |
129 | + } | |
130 | + | |
131 | + @Override | |
132 | + public List<TkDataViewInterfaceDTO> filterByInterfaceType(String type, String tenantId) { | |
133 | + List<String> tenantIds = new ArrayList<>(); | |
134 | + tenantIds.add(tenantId); | |
135 | + tenantIds.add(EntityId.NULL_UUID.toString()); | |
136 | + return baseMapper.filterByInterfaceType(type, tenantIds); | |
137 | + } | |
138 | + | |
139 | + @Override | |
140 | + public List<TkDataViewInterfaceDTO> findAll(String state, String tenantId) { | |
141 | + List<String> tenantIds = new ArrayList<>(); | |
142 | + tenantIds.add(tenantId); | |
143 | + tenantIds.add(EntityId.NULL_UUID.toString()); | |
144 | + return baseMapper.findAll(Integer.parseInt(state), tenantIds); | |
145 | + } | |
146 | + | |
147 | + @Override | |
148 | + public List<TkDataViewInterfaceDTO> findCanUseInterfaces( | |
149 | + boolean isSysAdminOrPtAdmin, String tenantId) { | |
150 | + List<TkDataViewInterfaceEntity> entities = | |
151 | + baseMapper.selectList( | |
152 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
153 | + .eq(TkDataViewInterfaceEntity::getTenantId, tenantId) | |
154 | + .eq(TkDataViewInterfaceEntity::getState, StatusEnum.RELEASE.getIndex())); | |
155 | + // 租户或客户可使用的接口包含,超级管理或平台管理员发布的SYSTEM接口 | |
156 | + if (!isSysAdminOrPtAdmin) { | |
157 | + List<TkDataViewInterfaceEntity> systemEntities = | |
158 | + baseMapper.selectList( | |
159 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
160 | + .eq(TkDataViewInterfaceEntity::getTenantId, UserId.NULL_UUID.toString()) | |
161 | + .eq(TkDataViewInterfaceEntity::getInterfaceType, TkSystemTypeEnum.SYSTEM.name()) | |
162 | + .eq(TkDataViewInterfaceEntity::getState, StatusEnum.RELEASE.getIndex())); | |
163 | + entities.addAll(systemEntities); | |
156 | 164 | } |
157 | - | |
158 | - @Override | |
159 | - public List<TkDataViewInterfaceDTO> findAll(String state,String tenantId){ | |
160 | - List<String> tenantIds = new ArrayList<>(); | |
161 | - tenantIds.add(tenantId); | |
162 | - tenantIds.add(EntityId.NULL_UUID.toString()); | |
163 | - List<TkDataViewInterfaceDTO> lists =baseMapper.findAll(Integer.parseInt(state),tenantIds); | |
164 | - return lists; | |
165 | + return Optional.ofNullable(entities) | |
166 | + .map( | |
167 | + entityList -> | |
168 | + entityList.stream() | |
169 | + .map(entity -> entity.getDTO(TkDataViewInterfaceDTO.class)) | |
170 | + .collect(Collectors.toList())) | |
171 | + .orElse(null); | |
172 | + } | |
173 | + | |
174 | + @Override | |
175 | + public boolean batchPublishInterface(List<String> ids, String tenantId) { | |
176 | + List<TkDataViewInterfaceEntity> interfaceEntityList = | |
177 | + baseMapper.selectList( | |
178 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
179 | + .in(TkDataViewInterfaceEntity::getId, ids)); | |
180 | + for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
181 | + if (!center.getTenantId().equals(tenantId)) { | |
182 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
183 | + } | |
165 | 184 | } |
166 | - | |
167 | - | |
168 | - @Override | |
169 | - public boolean batchPublishInterface(List<String> ids, String tenantId) { | |
170 | - List<TkDataViewInterfaceEntity> interfaceEntityList = | |
171 | - baseMapper.selectList( | |
172 | - new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
173 | - .in(TkDataViewInterfaceEntity::getId, ids)); | |
174 | - for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
175 | - if (!center.getTenantId().equals(tenantId)) { | |
176 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
177 | - } | |
178 | - } | |
179 | - int resultInt = 0; | |
180 | - for (TkDataViewInterfaceEntity interfaceEntity : interfaceEntityList) { | |
181 | - interfaceEntity.setState(1); | |
182 | - resultInt+=baseMapper.updateById(interfaceEntity); | |
183 | - } | |
184 | - return resultInt>0; | |
185 | + int resultInt = 0; | |
186 | + for (TkDataViewInterfaceEntity interfaceEntity : interfaceEntityList) { | |
187 | + interfaceEntity.setState(1); | |
188 | + resultInt += baseMapper.updateById(interfaceEntity); | |
185 | 189 | } |
186 | - | |
187 | - | |
188 | - @Override | |
189 | - public boolean batchCancelPublishInterface(List<String> ids, String tenantId) { | |
190 | - List<TkDataViewInterfaceEntity> interfaceEntityList = | |
191 | - baseMapper.selectList( | |
192 | - new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
193 | - .in(TkDataViewInterfaceEntity::getId, ids)); | |
194 | - for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
195 | - if (!center.getTenantId().equals(tenantId)) { | |
196 | - throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
197 | - } | |
198 | - } | |
199 | - int resultInt = 0; | |
200 | - for (TkDataViewInterfaceEntity interfaceEntity : interfaceEntityList) { | |
201 | - interfaceEntity.setState(0); | |
202 | - resultInt+=baseMapper.updateById(interfaceEntity); | |
203 | - } | |
204 | - return resultInt>0; | |
190 | + return resultInt > 0; | |
191 | + } | |
192 | + | |
193 | + @Override | |
194 | + public boolean batchCancelPublishInterface(List<String> ids, String tenantId) { | |
195 | + List<TkDataViewInterfaceEntity> interfaceEntityList = | |
196 | + baseMapper.selectList( | |
197 | + new LambdaQueryWrapper<TkDataViewInterfaceEntity>() | |
198 | + .in(TkDataViewInterfaceEntity::getId, ids)); | |
199 | + for (TkDataViewInterfaceEntity center : interfaceEntityList) { | |
200 | + if (!center.getTenantId().equals(tenantId)) { | |
201 | + throw new TkDataValidationException(ErrorMessage.TENANT_MISMATCHING.getMessage()); | |
202 | + } | |
205 | 203 | } |
206 | - | |
207 | - @Override | |
208 | - public List<LinkedHashMap<String, Object>> executeSql(String sql){ | |
209 | - List<LinkedHashMap<String, Object>> resultList = baseMapper.executeSql(sql); | |
210 | - return resultList; | |
204 | + int resultInt = 0; | |
205 | + for (TkDataViewInterfaceEntity interfaceEntity : interfaceEntityList) { | |
206 | + interfaceEntity.setState(0); | |
207 | + resultInt += baseMapper.updateById(interfaceEntity); | |
211 | 208 | } |
209 | + return resultInt > 0; | |
210 | + } | |
212 | 211 | |
212 | + @Override | |
213 | + public List<LinkedHashMap<String, Object>> executeSql(String sql) { | |
214 | + return baseMapper.executeSql(sql); | |
215 | + } | |
213 | 216 | } | ... | ... |
... | ... | @@ -12,28 +12,29 @@ import java.util.Map; |
12 | 12 | */ |
13 | 13 | public interface TkDataViewInterfaceService { |
14 | 14 | |
15 | - TkPageData<TkDataViewInterfaceDTO> page(Map<String, Object> queryMap); | |
15 | + TkPageData<TkDataViewInterfaceDTO> page(Map<String, Object> queryMap); | |
16 | 16 | |
17 | - TkDataViewInterfaceDTO saveDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | |
17 | + TkDataViewInterfaceDTO saveDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | |
18 | 18 | |
19 | - TkDataViewInterfaceDTO updateDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | |
19 | + TkDataViewInterfaceDTO updateDataViewInterface(TkDataViewInterfaceDTO tkDataViewInterfaceDTO); | |
20 | 20 | |
21 | - boolean deleteDataViewInterface(DeleteDTO deleteDTO); | |
21 | + boolean deleteDataViewInterface(DeleteDTO deleteDTO); | |
22 | 22 | |
23 | - boolean publishInterface(String id, String tenantId); | |
23 | + boolean publishInterface(String id, String tenantId); | |
24 | 24 | |
25 | - boolean cancelPublishInterface(String id, String tenantId); | |
25 | + boolean cancelPublishInterface(String id, String tenantId); | |
26 | 26 | |
27 | - List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids); | |
27 | + List<TkDataViewInterfaceDTO> getInterfaceDetails(List<String> ids); | |
28 | 28 | |
29 | - List<TkDataViewInterfaceDTO> filterByInterfaceType(String type,String tenantId); | |
29 | + List<TkDataViewInterfaceDTO> filterByInterfaceType(String type, String tenantId); | |
30 | 30 | |
31 | - List<TkDataViewInterfaceDTO> findAll(String state,String tenantId); | |
31 | + List<TkDataViewInterfaceDTO> findAll(String state, String tenantId); | |
32 | 32 | |
33 | - boolean batchPublishInterface(List<String> ids, String tenantId); | |
33 | + List<TkDataViewInterfaceDTO> findCanUseInterfaces(boolean isSysAdminOrPtAdmin, String tenantId); | |
34 | 34 | |
35 | - boolean batchCancelPublishInterface(List<String> ids, String tenantId); | |
35 | + boolean batchPublishInterface(List<String> ids, String tenantId); | |
36 | 36 | |
37 | - List<LinkedHashMap<String, Object>> executeSql(String sql); | |
37 | + boolean batchCancelPublishInterface(List<String> ids, String tenantId); | |
38 | 38 | |
39 | + List<LinkedHashMap<String, Object>> executeSql(String sql); | |
39 | 40 | } | ... | ... |
... | ... | @@ -141,4 +141,11 @@ public interface TkUserService { |
141 | 141 | */ |
142 | 142 | UserDTO checkAccount(String userId,Integer level); |
143 | 143 | |
144 | + /** | |
145 | + * 根据租户ID查询所有的租户管理员 | |
146 | + * @param tenantId 租户ID | |
147 | + * @return 租户管理员列表 | |
148 | + */ | |
149 | + List<UserDTO> findAllTenantAdminsByTenantId(String tenantId); | |
150 | + | |
144 | 151 | } | ... | ... |