修改网关端口
This commit is contained in:
parent
df2901012f
commit
cb902b5ffb
@ -1,4 +1,4 @@
|
|||||||
package com.qiuguo.iot.user.api.resp.device;
|
package com.qiuguo.iot.data.resp.device;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
server:
|
server:
|
||||||
port: 8081
|
port: 8080
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: qiuguo-iot-gateway
|
name: qiuguo-iot-gateway
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.qiuguo.iot.user.api.controller.device;
|
package com.qiuguo.iot.user.api.controller.device;
|
||||||
|
|
||||||
import cn.hutool.crypto.digest.MD5;
|
import cn.hutool.crypto.digest.MD5;
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.qiuguo.iot.base.constans.RedisConstans;
|
import com.qiuguo.iot.base.constans.RedisConstans;
|
||||||
@ -22,13 +21,12 @@ import com.qiuguo.iot.data.service.device.DeviceInfoService;
|
|||||||
import com.qiuguo.iot.data.service.device.DeviceUserBindService;
|
import com.qiuguo.iot.data.service.device.DeviceUserBindService;
|
||||||
import com.qiuguo.iot.data.service.device.DeviceUserTalkRecordService;
|
import com.qiuguo.iot.data.service.device.DeviceUserTalkRecordService;
|
||||||
import com.qiuguo.iot.third.service.TuyaDeviceConnector;
|
import com.qiuguo.iot.third.service.TuyaDeviceConnector;
|
||||||
import com.qiuguo.iot.user.api.resp.device.DeviceInitResp;
|
import com.qiuguo.iot.data.resp.device.DeviceInitResp;
|
||||||
import com.qiuguo.iot.user.api.rest.device.SetDeviceBindInfoRest;
|
import com.qiuguo.iot.user.api.rest.device.SetDeviceBindInfoRest;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
||||||
import org.springframework.data.redis.core.ReactiveValueOperations;
|
import org.springframework.data.redis.core.ReactiveValueOperations;
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@ -0,0 +1,142 @@
|
|||||||
|
package com.qiuguo.iot.box.websocket.api.controller;
|
||||||
|
|
||||||
|
import cn.hutool.crypto.digest.MD5;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.qiuguo.iot.base.constans.RedisConstans;
|
||||||
|
import com.qiuguo.iot.base.enums.DeviceTypeEnum;
|
||||||
|
import com.qiuguo.iot.base.enums.OrderByEnum;
|
||||||
|
import com.qiuguo.iot.base.enums.YesNo;
|
||||||
|
import com.qiuguo.iot.base.utils.StringUtils;
|
||||||
|
import com.qiuguo.iot.data.entity.device.DeviceInfoEntity;
|
||||||
|
import com.qiuguo.iot.data.entity.device.DeviceUserBindEntity;
|
||||||
|
import com.qiuguo.iot.data.entity.device.DeviceUserTalkRecordEntity;
|
||||||
|
import com.qiuguo.iot.data.request.device.DeviceInfoRequest;
|
||||||
|
import com.qiuguo.iot.data.request.device.DeviceUserBindRequest;
|
||||||
|
import com.qiuguo.iot.data.request.device.DeviceUserTalkRecordRequest;
|
||||||
|
import com.qiuguo.iot.data.resp.device.DeviceInitResp;
|
||||||
|
import com.qiuguo.iot.data.resp.device.DeviceTalkRecordResp;
|
||||||
|
import com.qiuguo.iot.data.resp.device.DeviceUserBindResp;
|
||||||
|
import com.qiuguo.iot.data.service.device.DeviceBatchService;
|
||||||
|
import com.qiuguo.iot.data.service.device.DeviceInfoService;
|
||||||
|
import com.qiuguo.iot.data.service.device.DeviceUserBindService;
|
||||||
|
import com.qiuguo.iot.data.service.device.DeviceUserTalkRecordService;
|
||||||
|
import com.qiuguo.iot.third.service.TuyaDeviceConnector;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.hswebframework.web.api.crud.entity.PagerResult;
|
||||||
|
import org.hswebframework.web.exception.BusinessException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
||||||
|
import org.springframework.data.redis.core.ReactiveValueOperations;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@Slf4j
|
||||||
|
@RequestMapping("/device")
|
||||||
|
public class DeviceController {
|
||||||
|
@Value("${device.key}")
|
||||||
|
private String key;
|
||||||
|
@Value("${device.checkTimeout}")
|
||||||
|
private Boolean checkTimeout;
|
||||||
|
@Autowired
|
||||||
|
private DeviceInfoService deviceInfoService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DeviceBatchService deviceBatchService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private TuyaDeviceConnector tuyaDeviceConnector;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DeviceUserTalkRecordService deviceUserTalkRecordService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DeviceUserBindService deviceUserBindService;
|
||||||
|
|
||||||
|
|
||||||
|
@Value("${device.timeout}")
|
||||||
|
private Long timeOut;//2分钟
|
||||||
|
@GetMapping("/init")
|
||||||
|
public Mono<DeviceInitResp> deviceInit(@RequestParam String wifiMac, @RequestParam String btMac,
|
||||||
|
@RequestParam Integer type, @RequestParam Long time,
|
||||||
|
@RequestParam String signature){
|
||||||
|
//deviceInfoService.
|
||||||
|
Long now = System.currentTimeMillis();
|
||||||
|
if(checkTimeout && now - time > timeOut){
|
||||||
|
//超时
|
||||||
|
log.info("请求过期");
|
||||||
|
BusinessException ex = new BusinessException("请求已失效");
|
||||||
|
return Mono.error(ex);
|
||||||
|
}
|
||||||
|
//设备类型是否匹配暂时不做限制
|
||||||
|
DeviceTypeEnum entryTypeEnum = DeviceTypeEnum.getEnumWithCode(type);
|
||||||
|
if(entryTypeEnum == null){
|
||||||
|
log.info("不支持的设备类型");
|
||||||
|
BusinessException ex = new BusinessException("不支持的设备类型");
|
||||||
|
return Mono.error(ex);
|
||||||
|
}
|
||||||
|
//验签
|
||||||
|
String wifiMd5 = MD5.create().digestHex(wifiMac).toUpperCase();
|
||||||
|
String btMd5 = MD5.create().digestHex(btMac).toUpperCase();
|
||||||
|
String typeMd5 = MD5.create().digestHex(type.toString()).toUpperCase();
|
||||||
|
String md5 = MD5.create().digestHex(wifiMd5 + btMd5 + typeMd5 + time + key).toUpperCase();
|
||||||
|
if (!md5.equals(signature)) {
|
||||||
|
//
|
||||||
|
//验签失败
|
||||||
|
log.info("验签失败");
|
||||||
|
BusinessException ex = new BusinessException("验签失败");
|
||||||
|
return Mono.error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceInfoRequest request = new DeviceInfoRequest();
|
||||||
|
request.setWifiMac(wifiMac);
|
||||||
|
request.setBtMac(btMac);
|
||||||
|
Mono<DeviceInfoEntity> mono = deviceInfoService.selectDeviceInfoByRequest(request);
|
||||||
|
|
||||||
|
return mono.defaultIfEmpty(new DeviceInfoEntity()).flatMap(entity -> {
|
||||||
|
Mono mono1 = null;
|
||||||
|
if(entity.getId() == null){
|
||||||
|
entity.setWifiMac(wifiMac);
|
||||||
|
entity.setBtMac(btMac);
|
||||||
|
entity.setBatchId(1l);
|
||||||
|
entity.setName(entryTypeEnum.getName());
|
||||||
|
entity.setDeviceType(type);
|
||||||
|
entity.setKey( StringUtils.getRandomStr(10));//生成key
|
||||||
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyMMddHHmmss");
|
||||||
|
entity.setSn("QG" + entryTypeEnum.getSn() +df.format(LocalDateTime.now()) + StringUtils.getRandomStr(3));
|
||||||
|
mono1 = deviceInfoService.insertDeviceInfo(entity);
|
||||||
|
}else{
|
||||||
|
entity.setKey( StringUtils.getRandomStr(10));//重新生成Key
|
||||||
|
mono1 = deviceInfoService.updateDeviceInfoById(entity);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
return mono1.map(m ->{
|
||||||
|
return entity;
|
||||||
|
});
|
||||||
|
}).map(o -> {
|
||||||
|
DeviceInfoEntity deviceInfoEntity = (DeviceInfoEntity)o;
|
||||||
|
ReactiveValueOperations<String, String> operations = reactiveStringRedisTemplate.opsForValue();
|
||||||
|
operations.set(RedisConstans.DEVICE_INFO + deviceInfoEntity.getSn()
|
||||||
|
, JSONObject.toJSONString(deviceInfoEntity)
|
||||||
|
, RedisConstans.ONE_HOUR).subscribe();
|
||||||
|
DeviceInitResp resp = new DeviceInitResp();
|
||||||
|
resp.setKey(deviceInfoEntity.getKey());
|
||||||
|
resp.setSn(deviceInfoEntity.getSn());
|
||||||
|
return resp;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user