diff --git a/fastbee-common/src/main/java/com/fastbee/common/model/bto/WebhookMessage.java b/fastbee-common/src/main/java/com/fastbee/common/model/bto/WebhookMessage.java new file mode 100644 index 0000000..25031ce --- /dev/null +++ b/fastbee-common/src/main/java/com/fastbee/common/model/bto/WebhookMessage.java @@ -0,0 +1,113 @@ +package com.fastbee.common.model.bto; + +import lombok.Data; + +import java.io.Serializable; +@Data +public class WebhookMessage implements Serializable { + + /** + * 消息头 + */ + private WebhookMessageHeader header; + + /** + * 消息体 + */ + private Object body; + + public WebhookMessage(WebhookMessageHeader header, Object body) { + this.header = header; + this.body = body; + } + + public WebhookMessage() { + } + + public WebhookMessageHeader getHeader() { + return header; + } + + public void setHeader(WebhookMessageHeader header) { + this.header = header; + } + + public Object getBody() { + return body; + } + + public void setBody(Object body) { + this.body = body; + } + + public class WebhookMessageHeader{ + + /** + * 消息id + */ + private String messageId; + + /** + * 设备序列号 + */ + private String deviceId; + + /** + * 消息类型,需向消息管道服务申请 + */ + private String type; + + /** + * 通道号 + */ + private Integer channelNo; + + /** + * 消息推送时间 + */ + private Long messageTime; + + public WebhookMessageHeader() { + } + + public String getMessageId() { + return messageId; + } + + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getChannelNo() { + return channelNo; + } + + public void setChannelNo(Integer channelNo) { + this.channelNo = channelNo; + } + + public Long getMessageTime() { + return messageTime; + } + + public void setMessageTime(Long messageTime) { + this.messageTime = messageTime; + } + } +} diff --git a/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java b/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java index b644d92..22b1277 100644 --- a/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java +++ b/fastbee-framework/src/main/java/com/fastbee/framework/config/SecurityConfig.java @@ -129,7 +129,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { // dueros .antMatchers("/dueros").permitAll() //安防小板 - .antMatchers("/iot/photos","/iot/photos/**").permitAll() + .antMatchers("/iot/photos","/iot/photos/**","/yinghsiyun/webhook").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/YingshiMsgRecController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/YingshiMsgRecController.java new file mode 100644 index 0000000..f15a291 --- /dev/null +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/anfang/controller/YingshiMsgRecController.java @@ -0,0 +1,47 @@ +package com.fastbee.data.controller.anfang.controller; + +import com.alibaba.fastjson.JSON; +import com.fastbee.common.model.bto.WebhookMessage; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("/yinghsiyun") +@Api(tags = "萤石云信息推送") +public class YingshiMsgRecController { + + @RequestMapping(value = "/webhook") + public ResponseEntity webhook(@RequestHeader HttpHeaders header, @RequestBody String body) { + final List t = header.get("t"); + WebhookMessage receiveMessage = null; + log.info("消息获取时间:{}, 请求头:{},请求体:{}",System.currentTimeMillis(), JSON.toJSONString(header),body); + System.out.println("收到的消息:"+body); + try { + receiveMessage = JSON.parseObject(body, WebhookMessage.class); + //todo:对收到的消息进行处理,最好发送到其他中间件,或者写到数据库中,不要影响回调地址的处理 + + } catch (Exception e) { + e.printStackTrace(); + } + //必须进行返回 + Map result = new HashMap<>(1); + assert receiveMessage != null; + String messageId = receiveMessage.getHeader().getMessageId(); + result.put("messageId", messageId); + final ResponseEntity resp = ResponseEntity.ok(JSON.toJSONString(result)); + log.info("返回的信息:{}",JSON.toJSONString(result)); + return resp; + } + +}