|
@@ -1,19 +1,32 @@
|
|
|
package cc.iotkit.manager.controller.aligenie;
|
|
|
|
|
|
import cc.iotkit.common.exception.BizException;
|
|
|
-import cc.iotkit.dao.*;
|
|
|
+import cc.iotkit.common.exception.OfflineException;
|
|
|
+import cc.iotkit.common.utils.JsonUtil;
|
|
|
+import cc.iotkit.dao.AligenieDeviceRepository;
|
|
|
+import cc.iotkit.dao.AligenieProductRepository;
|
|
|
+import cc.iotkit.dao.DeviceRepository;
|
|
|
+import cc.iotkit.dao.UserInfoRepository;
|
|
|
+import cc.iotkit.deviceapi.IDeviceManager;
|
|
|
import cc.iotkit.manager.service.DataOwnerService;
|
|
|
+import cc.iotkit.manager.utils.AuthUtil;
|
|
|
+import cc.iotkit.model.InvokeResult;
|
|
|
import cc.iotkit.model.UserInfo;
|
|
|
import cc.iotkit.model.aligenie.AligenieDevice;
|
|
|
import cc.iotkit.model.aligenie.AligenieProduct;
|
|
|
import cc.iotkit.model.device.DeviceInfo;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.Data;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
+@Slf4j
|
|
|
@RestController
|
|
|
@RequestMapping("/aligenieDevice")
|
|
|
public class AligenieDeviceController {
|
|
@@ -28,6 +41,8 @@ public class AligenieDeviceController {
|
|
|
private DeviceRepository deviceRepository;
|
|
|
@Autowired
|
|
|
private AligenieProductRepository aligenieProductRepository;
|
|
|
+ @Autowired
|
|
|
+ private IDeviceManager deviceManager;
|
|
|
|
|
|
@GetMapping("/list/{uid}")
|
|
|
public List<AligenieDevice> getDevices(@PathVariable("uid") String uid) {
|
|
@@ -61,6 +76,44 @@ public class AligenieDeviceController {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @ApiOperation("设备服务调用")
|
|
|
+ @PostMapping("/invoke/{deviceId}/{service}")
|
|
|
+ public InvokeResult invokeService(@PathVariable("deviceId") String deviceId,
|
|
|
+ @PathVariable("service") String service,
|
|
|
+ String args) {
|
|
|
+ InvokeResult result = new InvokeResult("", InvokeResult.FAILED_UNKNOWN);
|
|
|
+ AligenieDevice device = aligenieDeviceRepository.findByUidAndDeviceId(AuthUtil.getUserId(), deviceId);
|
|
|
+
|
|
|
+ if (device == null) {
|
|
|
+ result.setCode(InvokeResult.FAILED_NO_AUTH);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(deviceId) || StringUtils.isBlank(service)) {
|
|
|
+ log.error("deviceId/service is blank");
|
|
|
+ result.setCode(InvokeResult.FAILED_PARAM_ERROR);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ String requestId;
|
|
|
+ if ("set".equals(service)) {
|
|
|
+ requestId = deviceManager.setProperty(deviceId,
|
|
|
+ JsonUtil.parse(args, Map.class));
|
|
|
+ } else {
|
|
|
+ requestId = deviceManager.invokeService(deviceId, service,
|
|
|
+ JsonUtil.parse(args, Map.class));
|
|
|
+ }
|
|
|
+ result.setRequestId(requestId);
|
|
|
+ result.setCode(InvokeResult.SUCCESS);
|
|
|
+ } catch (OfflineException e) {
|
|
|
+ log.error("sendMsg failed", e);
|
|
|
+ result.setCode(InvokeResult.FAILED_OFFLINE);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
@Data
|
|
|
public static class Device {
|
|
|
private String deviceId;
|