结构调整

This commit is contained in:
shikong 2023-08-23 14:10:22 +08:00
parent 1a11418868
commit 6de430190b
6 changed files with 103 additions and 47 deletions

View File

@ -1,10 +1,12 @@
package cn.skcks.docking.gb28181.common.json; package cn.skcks.docking.gb28181.common.json;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
@Data @Data
@SuppressWarnings("unused") @SuppressWarnings("unused")
@Schema(title = "返回结果") @Schema(title = "返回结果")
@ -12,52 +14,50 @@ public class JsonResponse<T> {
@Schema(title = "状态码") @Schema(title = "状态码")
private int code; private int code;
@Schema(title = "响应消息")
private String msg;
@Schema(title = "响应数据") @Schema(title = "响应数据")
private T data; private T data;
public JsonResponse(int code, String msg, T data) { @Schema(title = "响应消息")
this.code = code; private String msg;
this.msg = msg;
this.data = data;
}
public static <T> JsonResponse<T> success(T data) { public static <T> JsonResponse<T> success(T data) {
return JsonResponse.build(data, ResponseStatus.OK); return JsonResponse.build(data, ResponseStatus.OK);
} }
public static <T> JsonResponse<T> success(T data, String message) { public static <T> JsonResponse<T> success(T data, String message) {
return JsonResponse.build(data, ResponseStatus.OK.getCode(), message); return JsonResponse.build(ResponseStatus.OK.getCode(), data, message);
} }
public static <T> JsonResponse<T> error(T data) { public static <T> JsonResponse<T> error(String message) {
return JsonResponse.build(data, ResponseStatus.INTERNAL_SERVER_ERROR); return JsonResponse.build(ResponseStatus.INTERNAL_SERVER_ERROR.getCode(), null, message);
} }
public static <T> JsonResponse<T> error(T data, String message) { public static <T> JsonResponse<T> error(T data, String message) {
return JsonResponse.build(data, ResponseStatus.INTERNAL_SERVER_ERROR.getCode(), message); return JsonResponse.build(ResponseStatus.INTERNAL_SERVER_ERROR.getCode(), data, message);
} }
public static <T> JsonResponse<T> build(ResponseStatus status) { public static <T> JsonResponse<T> build(ResponseStatus status) {
return new JsonResponse<>(status.getCode(), status.getMessage(),null); return new JsonResponse<>(status.getCode(), null, status.getMessage());
} }
public static <T> JsonResponse<T> build(T data, ResponseStatus status) { public static <T> JsonResponse<T> build(T data, ResponseStatus status) {
return new JsonResponse<>(status.getCode(), status.getMessage(), data); return new JsonResponse<>(status.getCode(), data, status.getMessage());
} }
public static <T> JsonResponse<T> build(ResponseStatus status,String message) { public static <T> JsonResponse<T> build(ResponseStatus status, String message) {
return new JsonResponse<>(status.getCode(), message, null); return new JsonResponse<>(status.getCode(), null, message);
} }
public static <T> JsonResponse<T> build(T data, int status, String msg) { public static <T> JsonResponse<T> build(ResponseStatus status, T data, String message) {
return new JsonResponse<>(status, msg, data); return new JsonResponse<>(status.getCode(), data, message);
}
public static <T> JsonResponse<T> build(int status, T data, String msg) {
return new JsonResponse<>(status, data, msg);
} }
@Override @Override
public String toString(){ public String toString() {
return JsonUtils.toJson(this); return JsonUtils.toJson(this);
} }
} }

View File

@ -13,6 +13,7 @@ public enum ResponseStatus {
CREATED(201, "Created"), CREATED(201, "Created"),
ACCEPTED(202, "Accepted"), ACCEPTED(202, "Accepted"),
NO_CONTENT(204, "No Content"), NO_CONTENT(204, "No Content"),
PARTIAL_CONTENT(206, "Partial Content"),
MOVED_PERMANENTLY(301, "Moved Permanently"), MOVED_PERMANENTLY(301, "Moved Permanently"),
FOUND(302, "Found"), FOUND(302, "Found"),
SEE_OTHER(303, "See Other"), SEE_OTHER(303, "See Other"),

View File

@ -0,0 +1,53 @@
package cn.skcks.docking.gb28181.core.sip.message;
import lombok.SneakyThrows;
import javax.sip.SipFactory;
import javax.sip.address.Address;
import javax.sip.address.AddressFactory;
import javax.sip.address.SipURI;
import javax.sip.header.FromHeader;
import javax.sip.header.HeaderFactory;
import javax.sip.header.MaxForwardsHeader;
import javax.sip.header.ToHeader;
public class MessageHelper {
public static SipFactory getSipFactory() {
return SipFactory.getInstance();
}
@SneakyThrows
public static AddressFactory createAddressFactory() {
return getSipFactory().createAddressFactory();
}
@SneakyThrows
public static HeaderFactory createHeaderFactory() {
return getSipFactory().createHeaderFactory();
}
@SneakyThrows
public static SipURI createSipURI(String id, String address) {
return createAddressFactory().createSipURI(id, address);
}
@SneakyThrows
public static Address createAddress(SipURI uri) {
return createAddressFactory().createAddress(uri);
}
@SneakyThrows
public static FromHeader createFromHeader(Address fromAddress, String fromTag) {
return createHeaderFactory().createFromHeader(fromAddress, fromTag);
}
@SneakyThrows
public static ToHeader createToHeader(Address toAddress, String toTag) {
return createHeaderFactory().createToHeader(toAddress, toTag);
}
@SneakyThrows
public static MaxForwardsHeader createMaxForwardsHeader(int maxForwards) {
return createHeaderFactory().createMaxForwardsHeader(maxForwards);
}
}

View File

@ -14,6 +14,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import cn.skcks.docking.gb28181.core.sip.message.MessageHelper;
import javax.sip.InvalidArgumentException; import javax.sip.InvalidArgumentException;
import javax.sip.PeerUnavailableException; import javax.sip.PeerUnavailableException;
@ -39,22 +40,22 @@ public class SipRequestBuilder implements ApplicationContextAware {
@SneakyThrows @SneakyThrows
private static SipURI getSipURI(String id,String address){ private static SipURI getSipURI(String id,String address){
return getSipFactory().createAddressFactory().createSipURI(id, address); return MessageHelper.createSipURI(id, address);
} }
@SneakyThrows @SneakyThrows
private static Address getAddress(SipURI uri){ private static Address getAddress(SipURI uri){
return getSipFactory().createAddressFactory().createAddress(uri); return MessageHelper.createAddress(uri);
} }
@SneakyThrows @SneakyThrows
private static FromHeader getFromHeader(Address fromAddress,String fromTag){ private static FromHeader getFromHeader(Address fromAddress,String fromTag){
return getSipFactory().createHeaderFactory().createFromHeader(fromAddress, fromTag); return MessageHelper.createFromHeader(fromAddress, fromTag);
} }
@SneakyThrows @SneakyThrows
private static ToHeader getToHeader(Address toAddress,String toTag){ private static ToHeader getToHeader(Address toAddress,String toTag){
return getSipFactory().createHeaderFactory().createToHeader(toAddress, toTag); return MessageHelper.createToHeader(toAddress, toTag);
} }
@SneakyThrows @SneakyThrows
@ -77,11 +78,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
List<ViaHeader> viaHeaders = getDeviceViaHeaders(device, viaTag); List<ViaHeader> viaHeaders = getDeviceViaHeaders(device, viaTag);
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, fromTag); FromHeader fromHeader = getFromHeader(fromAddress, fromTag);
// to // to
SipURI toSipURI = getSipURI(device.getDeviceId(), device.getHostAddress()); SipURI toSipURI = getSipURI(device.getDeviceId(), device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, toTag); ToHeader toHeader = getToHeader(toAddress, toTag);
// Forwards // Forwards
@ -108,11 +109,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, fromTag); // 必须要有标记否则无法创建会话无法回应ack FromHeader fromHeader = getFromHeader(fromAddress, fromTag); // 必须要有标记否则无法创建会话无法回应ack
// to // to
SipURI toSipURI = getSipURI(channelId, device.getHostAddress()); SipURI toSipURI = getSipURI(channelId, device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, null); ToHeader toHeader = getToHeader(toAddress, null);
// Forwards // Forwards
@ -124,8 +125,8 @@ public class SipRequestBuilder implements ApplicationContextAware {
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort()));
// Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort())); // Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
// Subject // Subject
SubjectHeader subjectHeader = getSipFactory().createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0)); SubjectHeader subjectHeader = getSipFactory().createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
@ -146,11 +147,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
viaHeaders.add(viaHeader); viaHeaders.add(viaHeader);
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, fromTag); // 必须要有标记否则无法创建会话无法回应ack FromHeader fromHeader = getFromHeader(fromAddress, fromTag); // 必须要有标记否则无法创建会话无法回应ack
// to // to
SipURI toSipURI = getSipURI(channelId, device.getHostAddress()); SipURI toSipURI = getSipURI(channelId, device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, null); ToHeader toHeader = getToHeader(toAddress, null);
// Forwards // Forwards
@ -160,8 +161,8 @@ public class SipRequestBuilder implements ApplicationContextAware {
CSeqHeader cSeqHeader = getSipFactory().createHeaderFactory().createCSeqHeader(getCSeq(), Request.INVITE); CSeqHeader cSeqHeader = getSipFactory().createHeaderFactory().createCSeqHeader(getCSeq(), Request.INVITE);
request = getSipFactory().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards); request = getSipFactory().createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwards);
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort()));
// Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort())); // Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
@ -185,11 +186,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
viaHeaders.add(viaHeader); viaHeaders.add(viaHeader);
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, transactionInfo.getFromTag()); FromHeader fromHeader = getFromHeader(fromAddress, transactionInfo.getFromTag());
// to // to
SipURI toSipURI = getSipURI(channelId, device.getHostAddress()); SipURI toSipURI = getSipURI(channelId, device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, transactionInfo.getToTag()); ToHeader toHeader = getToHeader(toAddress, transactionInfo.getToTag());
// Forwards // Forwards
@ -202,7 +203,7 @@ public class SipRequestBuilder implements ApplicationContextAware {
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
@ -222,11 +223,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
viaHeaders.add(viaHeader); viaHeaders.add(viaHeader);
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, requestOld == null ? SipUtil.generateFromTag() : requestOld.getFromTag()); FromHeader fromHeader = getFromHeader(fromAddress, requestOld == null ? SipUtil.generateFromTag() : requestOld.getFromTag());
// to // to
SipURI toSipURI = getSipURI(device.getDeviceId(), device.getHostAddress()); SipURI toSipURI = getSipURI(device.getDeviceId(), device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, requestOld == null ? null : requestOld.getToTag()); ToHeader toHeader = getToHeader(toAddress, requestOld == null ? null : requestOld.getToTag());
// Forwards // Forwards
@ -239,7 +240,7 @@ public class SipRequestBuilder implements ApplicationContextAware {
toHeader, viaHeaders, maxForwards); toHeader, viaHeaders, maxForwards);
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
// Expires // Expires
@ -275,11 +276,11 @@ public class SipRequestBuilder implements ApplicationContextAware {
viaHeaders.add(viaHeader); viaHeaders.add(viaHeader);
// from // from
SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain()); SipURI fromSipURI = getSipURI(sipConfig.getId(), sipConfig.getDomain());
Address fromAddress = getAddress(fromSipURI); Address fromAddress = MessageHelper.createAddress(fromSipURI);
FromHeader fromHeader = getFromHeader(fromAddress, transactionInfo.getFromTag()); FromHeader fromHeader = getFromHeader(fromAddress, transactionInfo.getFromTag());
// to // to
SipURI toSipURI = getSipURI(channelId, device.getHostAddress()); SipURI toSipURI = getSipURI(channelId, device.getHostAddress());
Address toAddress = getAddress(toSipURI); Address toAddress = MessageHelper.createAddress(toSipURI);
ToHeader toHeader = getToHeader(toAddress, transactionInfo.getToTag()); ToHeader toHeader = getToHeader(toAddress, transactionInfo.getToTag());
// Forwards // Forwards
@ -292,7 +293,7 @@ public class SipRequestBuilder implements ApplicationContextAware {
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), device.getLocalIp() + ":" + sipConfig.getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
@ -323,7 +324,7 @@ public class SipRequestBuilder implements ApplicationContextAware {
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());
Address concatAddress = getAddress(getSipURI(sipConfig.getId(), localIp + ":" + sipConfig.getPort())); Address concatAddress = MessageHelper.createAddress(getSipURI(sipConfig.getId(), localIp + ":" + sipConfig.getPort()));
request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); request.addHeader(getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
request.addHeader(SipUtil.createUserAgentHeader()); request.addHeader(SipUtil.createUserAgentHeader());

View File

@ -2,6 +2,7 @@ package cn.skcks.docking.gb28181.service.record;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.skcks.docking.gb28181.common.json.JsonResponse; import cn.skcks.docking.gb28181.common.json.JsonResponse;
import cn.skcks.docking.gb28181.common.json.ResponseStatus;
import cn.skcks.docking.gb28181.common.xml.XmlUtils; import cn.skcks.docking.gb28181.common.xml.XmlUtils;
import cn.skcks.docking.gb28181.core.sip.gb28181.constant.CmdType; import cn.skcks.docking.gb28181.core.sip.gb28181.constant.CmdType;
import cn.skcks.docking.gb28181.core.sip.message.processor.message.types.recordinfo.query.dto.RecordInfoRequestDTO; import cn.skcks.docking.gb28181.core.sip.message.processor.message.types.recordinfo.query.dto.RecordInfoRequestDTO;
@ -58,8 +59,8 @@ public class RecordService {
String sn = String.valueOf((int) (Math.random() * 9 + 1) * 100000); String sn = String.valueOf((int) (Math.random() * 9 + 1) * 100000);
RecordInfoRequestDTO dto = RecordInfoRequestDTO.builder() RecordInfoRequestDTO dto = RecordInfoRequestDTO.builder()
.deviceId(deviceId) .deviceId(deviceId)
.startTime(DateUtil.beginOfDay(DateUtil.date())) .startTime(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.date(),-1)))
.endTime(DateUtil.endOfDay(DateUtil.date())) .endTime(DateUtil.endOfDay(DateUtil.offsetDay(DateUtil.date(),-1)))
.sn(sn) .sn(sn)
.build(); .build();
Request request = SipRequestBuilder.createMessageRequest(device, Request request = SipRequestBuilder.createMessageRequest(device,
@ -122,7 +123,7 @@ public class RecordService {
subscribe.getRecordInfoSubscribe().addSubscribe(key, subscriber); subscribe.getRecordInfoSubscribe().addSubscribe(key, subscriber);
result.onTimeout(()->{ result.onTimeout(()->{
result.setResult(JsonResponse.success(sortedRecordList(list),"查询超时, 结果可能不完整")); result.setResult(JsonResponse.build(ResponseStatus.PARTIAL_CONTENT, sortedRecordList(list),"查询超时, 结果可能不完整"));
subscribe.getRecordInfoSubscribe().delPublisher(key); subscribe.getRecordInfoSubscribe().delPublisher(key);
}); });

View File

@ -10,7 +10,7 @@ public interface ZlmResponseConvertor {
ZlmResponseConvertor INSTANCE = Mappers.getMapper(ZlmResponseConvertor.class); ZlmResponseConvertor INSTANCE = Mappers.getMapper(ZlmResponseConvertor.class);
default <T> JsonResponse<T> toJsonResponse(ZlmResponse<T> response){ default <T> JsonResponse<T> toJsonResponse(ZlmResponse<T> response){
return JsonResponse.build(response.getData(), response.getCode().getCode(), response.getMsg()); return JsonResponse.build(response.getCode().getCode(), response.getData(), response.getMsg());
} }
default <T> ZlmResponse<T> toZlmResponse(JsonResponse<T> response){ default <T> ZlmResponse<T> toZlmResponse(JsonResponse<T> response){
return new ZlmResponse<>(ResponseStatus.fromCode(response.getCode()), response.getData(), response.getMsg()); return new ZlmResponse<>(ResponseStatus.fromCode(response.getCode()), response.getData(), response.getMsg());