|
|
|
package com.zhonglai.luhui.http.service.proxy.controller;
|
|
|
|
|
|
|
|
import cn.hutool.crypto.digest.MD5;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.google.gson.JsonElement;
|
|
|
|
import com.google.gson.JsonObject;
|
|
|
|
import com.ruoyi.common.constant.HttpStatus;
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.common.utils.GsonConstructor;
|
|
|
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
|
|
|
import com.zhonglai.luhui.device.analysis.comm.util.ByteUtil;
|
|
|
|
import com.zhonglai.luhui.device.domain.IotDevice;
|
|
|
|
import com.zhonglai.luhui.device.domain.IotProduct;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.ProtocolParserAndPurificationFactory;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.comm.DataLogType;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.comm.DeviceDataLog;
|
|
...
|
...
|
@@ -19,6 +24,9 @@ import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto; |
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.service.DeviceCashUpService;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.service.PersistenceDBService;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.service.impl.DefaultDbService;
|
|
|
|
import com.zhonglai.luhui.device.service.IIotDeviceService;
|
|
|
|
import com.zhonglai.luhui.device.service.IIotProductService;
|
|
|
|
import com.zhonglai.luhui.http.service.proxy.service.HttpCallback;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
...
|
...
|
@@ -51,6 +59,12 @@ public class HttpDataProxyController { |
|
|
|
@Autowired
|
|
|
|
private HttpCallback httpCallback;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
protected PersistenceDBService persistenceDBService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private DefaultDbService defaultDbService;
|
|
|
|
|
|
|
|
@ApiOperation(value = "post提交数据",notes = "数据由body传值")
|
|
|
|
@ApiImplicitParams({
|
|
|
|
@ApiImplicitParam(value = "时间(时间戳单位毫秒)",name = "time"),
|
|
...
|
...
|
@@ -65,7 +79,11 @@ public class HttpDataProxyController { |
|
|
|
String body = new String(bodyBytes, request.getCharacterEncoding());
|
|
|
|
String topic = "/"+role+"/"+username+"/"+imei+"/Json/"+topicType+"/"+time;
|
|
|
|
DeviceDataLog.info(imei, DataLogType.发来数据,topic,body);
|
|
|
|
|
|
|
|
ParserDeviceHostDto oldparserDeviceHostDto = persistenceDBService.getOldParserDeviceHostDto(imei);
|
|
|
|
if (null == oldparserDeviceHostDto)
|
|
|
|
{
|
|
|
|
return AjaxResult.error(HttpStatus.UNAUTHORIZED,"设备不存在");
|
|
|
|
}
|
|
|
|
ProtocolPurificationModel protocolPurificationModel = httpCallback.messageArrived(imei,topic,body.getBytes(StandardCharsets.UTF_8));
|
|
|
|
|
|
|
|
Map<String,Object> map = HttpNoticeCach.consumer(imei);
|
|
...
|
...
|
@@ -126,4 +144,58 @@ public class HttpDataProxyController { |
|
|
|
log.info("返回的数据【{}】",map);
|
|
|
|
return AjaxResult.success(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation(value = "设备注册")
|
|
|
|
@ApiImplicitParams({
|
|
|
|
@ApiImplicitParam(value = "设备imei",name = "imei"),
|
|
|
|
@ApiImplicitParam(value = "设备纬度",name = "latitude"),
|
|
|
|
@ApiImplicitParam(value = "设备经度",name = "longitude"),
|
|
|
|
@ApiImplicitParam(value = "产品类型",name = "product_name"),
|
|
|
|
@ApiImplicitParam(value = "令牌",name = "token"),
|
|
|
|
})
|
|
|
|
@RequestMapping(value = "register/{product_type}/{imei}/{token}")
|
|
|
|
public AjaxResult register(@PathVariable String imei, @PathVariable String product_type, @PathVariable String token,Double latitude,Double longitude) throws IOException {
|
|
|
|
log.info("设备注册imei【{}】,product_type【{}】,token【{}】,latitude【{}】,longitude【{}】",imei,product_type,token,latitude,longitude);
|
|
|
|
String tokenKey = "yu2le.com";
|
|
|
|
String authString = product_type + imei + tokenKey;
|
|
|
|
//对authString进行MD5加密
|
|
|
|
String authToken = MD5.create().digestHex(authString);
|
|
|
|
if (!authToken.equals(token)) {
|
|
|
|
log.warn("设备注册失败,imei【{}】,product_type【{}】,token【{}】,latitude【{}】,longitude【{}】",imei,product_type,token,latitude,longitude);
|
|
|
|
return AjaxResult.error("注册失败,令牌错误");
|
|
|
|
}
|
|
|
|
|
|
|
|
IotProduct iotProduct = defaultDbService.getIotProductByProductType(product_type);
|
|
|
|
if(null == iotProduct)
|
|
|
|
{
|
|
|
|
return AjaxResult.error("产品类型不存在");
|
|
|
|
}
|
|
|
|
|
|
|
|
IotDevice old = defaultDbService.getDeviceById(imei);
|
|
|
|
if(null != old)
|
|
|
|
{
|
|
|
|
return AjaxResult.success("设备已存在,不用重复注册");
|
|
|
|
}
|
|
|
|
|
|
|
|
IotDevice iotDevice = new IotDevice();
|
|
|
|
iotDevice.setDevice_life(1800l);
|
|
|
|
iotDevice.setClient_id(imei);
|
|
|
|
iotDevice.setName(imei.substring(imei.length()-5,imei.length()));
|
|
|
|
iotDevice.setFirmware_version("V0001");
|
|
|
|
iotDevice.setMqtt_username(product_type);
|
|
|
|
iotDevice.setProduct_id(iotProduct.getId());
|
|
|
|
iotDevice.setCompletion_auth(0);
|
|
|
|
iotDevice.setIs_shadow(0);
|
|
|
|
iotDevice.setLocation_way(1);
|
|
|
|
iotDevice.setPayload_type("Json");
|
|
|
|
iotDevice.setLatitude(latitude);
|
|
|
|
iotDevice.setLongitude(longitude);
|
|
|
|
iotDevice.setSys_user_id(0L);
|
|
|
|
iotDevice.setCreate_by("设备自动注册");
|
|
|
|
iotDevice.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
iotDevice.setCreate_time(DateUtils.getNowTimeMilly());
|
|
|
|
defaultDbService.insertIotDevice(iotDevice);
|
|
|
|
return AjaxResult.success("注册成功");
|
|
|
|
}
|
|
|
|
|
|
|
|
} |
...
|
...
|
|