|
1
|
package com.zhonglai.luhui.http.service.proxy.controller;
|
1
|
package com.zhonglai.luhui.http.service.proxy.controller;
|
|
2
|
|
2
|
|
|
|
|
3
|
+import cn.hutool.crypto.digest.MD5;
|
|
3
|
import com.alibaba.fastjson.JSON;
|
4
|
import com.alibaba.fastjson.JSON;
|
|
4
|
import com.alibaba.fastjson.JSONObject;
|
5
|
import com.alibaba.fastjson.JSONObject;
|
|
5
|
import com.google.gson.JsonElement;
|
6
|
import com.google.gson.JsonElement;
|
|
6
|
import com.google.gson.JsonObject;
|
7
|
import com.google.gson.JsonObject;
|
|
|
|
8
|
+import com.ruoyi.common.constant.HttpStatus;
|
|
7
|
import com.ruoyi.common.core.domain.AjaxResult;
|
9
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
|
10
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
|
11
|
+import com.ruoyi.common.utils.DateUtils;
|
|
8
|
import com.ruoyi.common.utils.GsonConstructor;
|
12
|
import com.ruoyi.common.utils.GsonConstructor;
|
|
9
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
13
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
|
10
|
import com.zhonglai.luhui.device.analysis.comm.util.ByteUtil;
|
14
|
import com.zhonglai.luhui.device.analysis.comm.util.ByteUtil;
|
|
11
|
import com.zhonglai.luhui.device.domain.IotDevice;
|
15
|
import com.zhonglai.luhui.device.domain.IotDevice;
|
|
|
|
16
|
+import com.zhonglai.luhui.device.domain.IotProduct;
|
|
12
|
import com.zhonglai.luhui.device.protocol.factory.ProtocolParserAndPurificationFactory;
|
17
|
import com.zhonglai.luhui.device.protocol.factory.ProtocolParserAndPurificationFactory;
|
|
13
|
import com.zhonglai.luhui.device.protocol.factory.comm.DataLogType;
|
18
|
import com.zhonglai.luhui.device.protocol.factory.comm.DataLogType;
|
|
14
|
import com.zhonglai.luhui.device.protocol.factory.comm.DeviceDataLog;
|
19
|
import com.zhonglai.luhui.device.protocol.factory.comm.DeviceDataLog;
|
|
@@ -19,6 +24,9 @@ import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto; |
|
@@ -19,6 +24,9 @@ import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto; |
|
19
|
import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
|
24
|
import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
|
|
20
|
import com.zhonglai.luhui.device.protocol.factory.service.DeviceCashUpService;
|
25
|
import com.zhonglai.luhui.device.protocol.factory.service.DeviceCashUpService;
|
|
21
|
import com.zhonglai.luhui.device.protocol.factory.service.PersistenceDBService;
|
26
|
import com.zhonglai.luhui.device.protocol.factory.service.PersistenceDBService;
|
|
|
|
27
|
+import com.zhonglai.luhui.device.protocol.factory.service.impl.DefaultDbService;
|
|
|
|
28
|
+import com.zhonglai.luhui.device.service.IIotDeviceService;
|
|
|
|
29
|
+import com.zhonglai.luhui.device.service.IIotProductService;
|
|
22
|
import com.zhonglai.luhui.http.service.proxy.service.HttpCallback;
|
30
|
import com.zhonglai.luhui.http.service.proxy.service.HttpCallback;
|
|
23
|
import io.swagger.annotations.Api;
|
31
|
import io.swagger.annotations.Api;
|
|
24
|
import io.swagger.annotations.ApiImplicitParam;
|
32
|
import io.swagger.annotations.ApiImplicitParam;
|
|
@@ -51,6 +59,12 @@ public class HttpDataProxyController { |
|
@@ -51,6 +59,12 @@ public class HttpDataProxyController { |
|
51
|
@Autowired
|
59
|
@Autowired
|
|
52
|
private HttpCallback httpCallback;
|
60
|
private HttpCallback httpCallback;
|
|
53
|
|
61
|
|
|
|
|
62
|
+ @Autowired
|
|
|
|
63
|
+ protected PersistenceDBService persistenceDBService;
|
|
|
|
64
|
+
|
|
|
|
65
|
+ @Autowired
|
|
|
|
66
|
+ private DefaultDbService defaultDbService;
|
|
|
|
67
|
+
|
|
54
|
@ApiOperation(value = "post提交数据",notes = "数据由body传值")
|
68
|
@ApiOperation(value = "post提交数据",notes = "数据由body传值")
|
|
55
|
@ApiImplicitParams({
|
69
|
@ApiImplicitParams({
|
|
56
|
@ApiImplicitParam(value = "时间(时间戳单位毫秒)",name = "time"),
|
70
|
@ApiImplicitParam(value = "时间(时间戳单位毫秒)",name = "time"),
|
|
@@ -65,7 +79,11 @@ public class HttpDataProxyController { |
|
@@ -65,7 +79,11 @@ public class HttpDataProxyController { |
|
65
|
String body = new String(bodyBytes, request.getCharacterEncoding());
|
79
|
String body = new String(bodyBytes, request.getCharacterEncoding());
|
|
66
|
String topic = "/"+role+"/"+username+"/"+imei+"/Json/"+topicType+"/"+time;
|
80
|
String topic = "/"+role+"/"+username+"/"+imei+"/Json/"+topicType+"/"+time;
|
|
67
|
DeviceDataLog.info(imei, DataLogType.发来数据,topic,body);
|
81
|
DeviceDataLog.info(imei, DataLogType.发来数据,topic,body);
|
|
68
|
-
|
82
|
+ ParserDeviceHostDto oldparserDeviceHostDto = persistenceDBService.getOldParserDeviceHostDto(imei);
|
|
|
|
83
|
+ if (null == oldparserDeviceHostDto)
|
|
|
|
84
|
+ {
|
|
|
|
85
|
+ return AjaxResult.error(HttpStatus.UNAUTHORIZED,"设备不存在");
|
|
|
|
86
|
+ }
|
|
69
|
ProtocolPurificationModel protocolPurificationModel = httpCallback.messageArrived(imei,topic,body.getBytes(StandardCharsets.UTF_8));
|
87
|
ProtocolPurificationModel protocolPurificationModel = httpCallback.messageArrived(imei,topic,body.getBytes(StandardCharsets.UTF_8));
|
|
70
|
|
88
|
|
|
71
|
Map<String,Object> map = HttpNoticeCach.consumer(imei);
|
89
|
Map<String,Object> map = HttpNoticeCach.consumer(imei);
|
|
@@ -126,4 +144,58 @@ public class HttpDataProxyController { |
|
@@ -126,4 +144,58 @@ public class HttpDataProxyController { |
|
126
|
log.info("返回的数据【{}】",map);
|
144
|
log.info("返回的数据【{}】",map);
|
|
127
|
return AjaxResult.success(map);
|
145
|
return AjaxResult.success(map);
|
|
128
|
}
|
146
|
}
|
|
|
|
147
|
+
|
|
|
|
148
|
+ @ApiOperation(value = "设备注册")
|
|
|
|
149
|
+ @ApiImplicitParams({
|
|
|
|
150
|
+ @ApiImplicitParam(value = "设备imei",name = "imei"),
|
|
|
|
151
|
+ @ApiImplicitParam(value = "设备纬度",name = "latitude"),
|
|
|
|
152
|
+ @ApiImplicitParam(value = "设备经度",name = "longitude"),
|
|
|
|
153
|
+ @ApiImplicitParam(value = "产品类型",name = "product_name"),
|
|
|
|
154
|
+ @ApiImplicitParam(value = "令牌",name = "token"),
|
|
|
|
155
|
+ })
|
|
|
|
156
|
+ @RequestMapping(value = "register/{product_type}/{imei}/{token}")
|
|
|
|
157
|
+ public AjaxResult register(@PathVariable String imei, @PathVariable String product_type, @PathVariable String token,Double latitude,Double longitude) throws IOException {
|
|
|
|
158
|
+ log.info("设备注册imei【{}】,product_type【{}】,token【{}】,latitude【{}】,longitude【{}】",imei,product_type,token,latitude,longitude);
|
|
|
|
159
|
+ String tokenKey = "yu2le.com";
|
|
|
|
160
|
+ String authString = product_type + imei + tokenKey;
|
|
|
|
161
|
+ //对authString进行MD5加密
|
|
|
|
162
|
+ String authToken = MD5.create().digestHex(authString);
|
|
|
|
163
|
+ if (!authToken.equals(token)) {
|
|
|
|
164
|
+ log.warn("设备注册失败,imei【{}】,product_type【{}】,token【{}】,latitude【{}】,longitude【{}】",imei,product_type,token,latitude,longitude);
|
|
|
|
165
|
+ return AjaxResult.error("注册失败,令牌错误");
|
|
|
|
166
|
+ }
|
|
|
|
167
|
+
|
|
|
|
168
|
+ IotProduct iotProduct = defaultDbService.getIotProductByProductType(product_type);
|
|
|
|
169
|
+ if(null == iotProduct)
|
|
|
|
170
|
+ {
|
|
|
|
171
|
+ return AjaxResult.error("产品类型不存在");
|
|
|
|
172
|
+ }
|
|
|
|
173
|
+
|
|
|
|
174
|
+ IotDevice old = defaultDbService.getDeviceById(imei);
|
|
|
|
175
|
+ if(null != old)
|
|
|
|
176
|
+ {
|
|
|
|
177
|
+ return AjaxResult.success("设备已存在,不用重复注册");
|
|
|
|
178
|
+ }
|
|
|
|
179
|
+
|
|
|
|
180
|
+ IotDevice iotDevice = new IotDevice();
|
|
|
|
181
|
+ iotDevice.setDevice_life(1800l);
|
|
|
|
182
|
+ iotDevice.setClient_id(imei);
|
|
|
|
183
|
+ iotDevice.setName(imei.substring(imei.length()-5,imei.length()));
|
|
|
|
184
|
+ iotDevice.setFirmware_version("V0001");
|
|
|
|
185
|
+ iotDevice.setMqtt_username(product_type);
|
|
|
|
186
|
+ iotDevice.setProduct_id(iotProduct.getId());
|
|
|
|
187
|
+ iotDevice.setCompletion_auth(0);
|
|
|
|
188
|
+ iotDevice.setIs_shadow(0);
|
|
|
|
189
|
+ iotDevice.setLocation_way(1);
|
|
|
|
190
|
+ iotDevice.setPayload_type("Json");
|
|
|
|
191
|
+ iotDevice.setLatitude(latitude);
|
|
|
|
192
|
+ iotDevice.setLongitude(longitude);
|
|
|
|
193
|
+ iotDevice.setSys_user_id(0L);
|
|
|
|
194
|
+ iotDevice.setCreate_by("设备自动注册");
|
|
|
|
195
|
+ iotDevice.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
196
|
+ iotDevice.setCreate_time(DateUtils.getNowTimeMilly());
|
|
|
|
197
|
+ defaultDbService.insertIotDevice(iotDevice);
|
|
|
|
198
|
+ return AjaxResult.success("注册成功");
|
|
|
|
199
|
+ }
|
|
|
|
200
|
+
|
|
129
|
} |
201
|
} |