|
|
@@ -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); |
|
|
|
} |