Parcourir la source

提交接口日志

master
梁超 il y a 1 mois
Parent
révision
202c33e0d1

+ 31
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/AbstractInterfaceLog.java Voir le fichier

@@ -0,0 +1,31 @@
package cn.com.taiji.core.entity;

import cn.com.taiji.common.entity.StringPropertyUUIDEntity;
import cn.com.taiji.core.entity.dict.InterfaceStatus;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

@Getter
@Setter
@MappedSuperclass
public abstract class AbstractInterfaceLog extends AbstractStringPropertyUUIDEntity {
@Column(name="IF_CODE")
private String ifCode;
@Column(name="REQUEST_JSON")
private String requestJson;
@Column(name="RESPONSE_JSON")
private String responseJson;
@Column(name="COST")
private long cost = 0L;
@Column(name="CREATE_TIME")
private LocalDateTime createTime = LocalDateTime.now();
@Column(name="STATUS")
private InterfaceStatus status;
@Column(name="ERROR_MSG")
private String errorMsg;

}

+ 27
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/dict/InterfaceStatus.java Voir le fichier

@@ -0,0 +1,27 @@
/**
* @Title YgzSendStatus.java
* @Package cn.com.taiji.dsi.entity.dict
* @Description TODO
* @author yaonanlin
* @date 2019年7月3日 下午1:02:47
* @version V1.0
*/
package cn.com.taiji.core.entity.dict;


import lombok.Getter;

@Getter
public enum InterfaceStatus {
SUCCESS("接口调用成功", 1) {},
FAILED("接口调用失败", 2) {},
;
private final String name;
private final Integer code;

InterfaceStatus(String name, Integer code) {
this.name = name;
this.code = code;
}
}


+ 17
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/log/PortalInterfaceLog.java Voir le fichier

@@ -0,0 +1,17 @@
package cn.com.taiji.core.entity.log;

import cn.com.taiji.core.entity.AbstractInterfaceLog;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.persistence.Entity;
import javax.persistence.Table;

@Getter
@Setter
@Accessors(chain = true)
@Entity
@Table(name = "log_portal_interface_log")
public class PortalInterfaceLog extends AbstractInterfaceLog {
}

+ 70
- 0
gly-base-core/src/main/java/cn/com/taiji/core/manager/comm/LogManager.java Voir le fichier

@@ -0,0 +1,70 @@
package cn.com.taiji.core.manager.comm;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.entity.AbstractInterfaceLog;
import cn.com.taiji.core.entity.dict.InterfaceStatus;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse;
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.LocalDateTime;


public interface LogManager<R extends AbstractSignTypeRequest<?>, T extends AbstractSignTypeResponse, L extends AbstractInterfaceLog> {
Logger logLogger = LoggerFactory.getLogger(LogManager.class);

default T onSuccess(R request, T response, Class<L> clazz, long cost) {
try {
L log = clazz.getDeclaredConstructor().newInstance();
log.setRequestJson(request.toJson());
log.setResponseJson(response.toJson());
log.setCreateTime(LocalDateTime.now());
log.setIfCode(request.getServiceCommand().getIfCode());
log.setStatus(InterfaceStatus.SUCCESS);
log.setCost(cost);
doSaveLog(request, response, log);
return response;
} catch (Exception e) {
logLogger.error("onSuccess接口日志记录异常:", e);
throw new RuntimeException("接口日志记录异常");
}
}

default T onFailed(R request, T response, Class<L> clazz, long cost, String errorMsg) {
try {
L log = clazz.getDeclaredConstructor().newInstance();
log.setRequestJson(request.toJson());
log.setResponseJson(response.toJson());
log.setCreateTime(LocalDateTime.now());
log.setIfCode(request.getServiceCommand().getIfCode());
log.setStatus(InterfaceStatus.FAILED);
log.setCost(cost);
log.setErrorMsg(errorMsg);
doSaveLog(request, response, log);
return response;
} catch (Exception e) {
logLogger.error("onFailed接口日志记录异常:", e);
throw new RuntimeException("接口日志记录异常");
}
}

default ServiceHandleException exception(R request, Class<L> clazz, String errorMsg) {
try {
L log = clazz.getDeclaredConstructor().newInstance();
log.setRequestJson(request.toJson());
log.setCreateTime(LocalDateTime.now());
log.setIfCode(request.getServiceCommand().getIfCode());
log.setStatus(InterfaceStatus.FAILED);
log.setErrorMsg(errorMsg);
doSaveLog(request, null, log);
} catch (Exception e) {
logLogger.error("exception接口日志记录异常:", e);
throw new RuntimeException("接口日志记录异常");
}
return GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(errorMsg);
}

void doSaveLog(R request, T response, L log);
}

+ 12
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ygz/YgzCommonResponse.java Voir le fichier

@@ -0,0 +1,12 @@
package cn.com.taiji.core.model.comm.protocol.ias.ygz;

import cn.com.taiji.core.model.comm.protocol.ias.AbstractIasResponse;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class YgzCommonResponse extends AbstractIasResponse {
private boolean success;
private String msg;
}

+ 7
- 0
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/log/PortalInterfaceLogRepo.java Voir le fichier

@@ -0,0 +1,7 @@
package cn.com.taiji.core.repo.jpa.log;

import cn.com.taiji.common.repo.jpa.AbstractJpaRepo;
import cn.com.taiji.core.entity.log.PortalInterfaceLog;

public interface PortalInterfaceLogRepo extends AbstractJpaRepo<PortalInterfaceLog, String> {
}

Chargement…
Annuler
Enregistrer