|
|
@@ -1,7 +1,9 @@
|
|
|
package cc.iotkit.openapi.service.impl;
|
|
|
|
|
|
+import cc.iotkit.common.constant.GlobalConstants;
|
|
|
import cc.iotkit.common.enums.ErrCode;
|
|
|
import cc.iotkit.common.exception.BizException;
|
|
|
+import cc.iotkit.common.redis.utils.RedisUtils;
|
|
|
import cc.iotkit.common.utils.DeviceUtil;
|
|
|
import cc.iotkit.common.utils.JsonUtils;
|
|
|
import cc.iotkit.common.utils.MapstructUtils;
|
|
|
@@ -12,6 +14,7 @@ import cc.iotkit.manager.service.DeviceCtrlService;
|
|
|
import cc.iotkit.model.device.DeviceInfo;
|
|
|
import cc.iotkit.model.product.Product;
|
|
|
import cc.iotkit.model.product.ThingModel;
|
|
|
+import cc.iotkit.model.system.SysDept;
|
|
|
import cc.iotkit.openapi.dto.bo.device.OpenapiDeviceBo;
|
|
|
import cc.iotkit.openapi.dto.vo.OpenDeviceInfoVo;
|
|
|
import cc.iotkit.openapi.dto.vo.OpenDevicePropertyVo;
|
|
|
@@ -26,6 +29,7 @@ import org.springframework.stereotype.Service;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
@@ -46,6 +50,8 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
|
|
|
@Autowired
|
|
|
private DeviceCtrlService deviceCtrlService;
|
|
|
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public DeviceInfo getDetail(OpenapiDeviceBo data) {
|
|
|
DeviceInfo deviceInfo = deviceInfoData.findByDeviceName(data.getDeviceName());
|
|
|
@@ -63,11 +69,13 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
|
|
|
if (product == null) {
|
|
|
throw new BizException(ErrCode.PRODUCT_NOT_FOUND);
|
|
|
}
|
|
|
+ String tenantId = product.getTenantId();
|
|
|
//同产品不可重复设备名
|
|
|
DeviceInfo deviceRepetition = deviceInfoData.findByDeviceName(deviceName);
|
|
|
if (deviceRepetition != null) {
|
|
|
throw new BizException(ErrCode.MODEL_DEVICE_ALREADY);
|
|
|
}
|
|
|
+
|
|
|
//生成设备密钥
|
|
|
String chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678";
|
|
|
int maxPos = chars.length();
|
|
|
@@ -75,7 +83,16 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
|
|
|
for (var i = 0; i < 16; i++) {
|
|
|
secret.append(chars.charAt((int) Math.floor(Math.random() * maxPos)));
|
|
|
}
|
|
|
-
|
|
|
+ //获取部门信息
|
|
|
+ Long deptId = null;
|
|
|
+ if(StringUtils.isNotEmpty(bo.getDeptName())){
|
|
|
+ String deptInfoKey = GlobalConstants.DEPT_INFO_PREFIX + tenantId + ":" + bo.getDeptName();
|
|
|
+ String deptInfo = RedisUtils.getCacheObject(deptInfoKey);
|
|
|
+ if(StringUtils.isNotEmpty(deptInfo)){
|
|
|
+ SysDept sysDept = JsonUtils.parseObject(deptInfo, SysDept.class);
|
|
|
+ deptId = Objects.isNull(sysDept)?null:sysDept.getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
DeviceInfo device = new DeviceInfo();
|
|
|
device.setId(DeviceUtil.newDeviceId(deviceName));
|
|
|
device.setUid(product.getUid());
|
|
|
@@ -83,6 +100,8 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
|
|
|
device.setProductKey(productKey);
|
|
|
device.setDeviceName(deviceName);
|
|
|
device.setSecret(secret.toString());
|
|
|
+ device.setTenantId(product.getTenantId());
|
|
|
+ device.setCreateDept(deptId);
|
|
|
device.setState(new DeviceInfo.State(false, null, null));
|
|
|
// device.setLocate(new DeviceInfo.Locate(deviceInfo.getLongitude(),deviceInfo.getLatitude()));
|
|
|
device.setCreateAt(System.currentTimeMillis());
|