@@ -10,6 +10,7 @@ import org.springframework.context.annotation.AdviceMode; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.Configuration; | |||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; | |||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | |||
import org.springframework.transaction.annotation.EnableTransactionManagement; | |||
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; | |||
@@ -18,6 +19,8 @@ import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.pub.AppEnv; | |||
import cn.com.taiji.common.repo.jpa.MyJpaRespositoryFactoryBean; | |||
import java.util.concurrent.ThreadPoolExecutor; | |||
@Configuration | |||
@EntityScan(value = {"cn.com.taiji." + AppConfig.APP_NAME + ".entity", "cn.com.taiji.core.entity"}) | |||
@EnableJpaRepositories( | |||
@@ -51,4 +54,17 @@ public class AppConfig extends AbstractManager { | |||
public CommonBatchJdbcDao commonJdbcDao() { | |||
return new CommonBatchJdbcDao(dataSource); | |||
} | |||
@Bean(name = "myExecutor") | |||
public ThreadPoolTaskExecutor threadPoolExecutor() { | |||
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); | |||
threadPoolTaskExecutor.setCorePoolSize(256); | |||
threadPoolTaskExecutor.setMaxPoolSize(512); | |||
threadPoolTaskExecutor.setKeepAliveSeconds(60); | |||
threadPoolTaskExecutor.setQueueCapacity(100); | |||
threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); | |||
return threadPoolTaskExecutor; | |||
} | |||
} |
@@ -0,0 +1,21 @@ | |||
package cn.com.taiji.ias.dict; | |||
public enum RequestDataType { | |||
VEHICLE_PLATE_CHECK("部中心车牌校验") {}, | |||
TOUCH_TOKEN("延长token") {}, | |||
UPLOAD_RECHARGE("上传充值交易") {}, | |||
UPLOAD_REVERSAL("上传充值冲正交易") {}, | |||
VEHICLE_RELEASE("解除车牌占用"), | |||
; | |||
private final String value; | |||
private RequestDataType(String value) { | |||
this.value = value; | |||
} | |||
public String getValue() { | |||
return value; | |||
} | |||
} |
@@ -0,0 +1,20 @@ | |||
package cn.com.taiji.ias.dict; | |||
public enum RequestStatus { | |||
RECEIVE("接收") {}, | |||
FORMAT_VALID("格式校验") {}, | |||
BUSINESS_VALID("业务校验") {}, | |||
PERSIST("持久化") {},; | |||
private final String value; | |||
private RequestStatus(String value) { | |||
this.value = value; | |||
} | |||
public String getValue() { | |||
return value; | |||
} | |||
} |
@@ -1,8 +1,15 @@ | |||
package cn.com.taiji.ias.manager; | |||
import java.io.IOException; | |||
import java.time.LocalDateTime; | |||
import java.time.temporal.ChronoUnit; | |||
import java.util.concurrent.Callable; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.pub.json.JsonTools; | |||
import cn.com.taiji.core.manager.comm.client.IOFunction; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractOldSystemRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonResponse; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
@@ -16,18 +23,53 @@ public abstract class AbstractCommManager extends AbstractManager { | |||
@Autowired | |||
protected FeignClientManager feignClientManager; | |||
public <RS extends AbstractSignTypeResponse> RS jsonPostRepeat(AbstractSignTypeRequest<RS> req) | |||
throws ServiceHandleException { | |||
return jsonPostRepeat(req, 3); | |||
} | |||
/** | |||
* <pre> | |||
* 重复提交业务请求 | |||
* 1、IO异常重试请求,如果一直IO异常返回null | |||
* 2、ApiRequestException 707返回new 创建的response | |||
* 2、ApiRequestException 707返回通过new创建的response | |||
* 3、ApiRequestException 其它错误抛异常 | |||
* </pre> | |||
*/ | |||
public <RS extends AbstractSignTypeResponse> RS jsonPostRepeat(AbstractSignTypeRequest<RS> req, int repeat) { | |||
public <RS extends AbstractSignTypeResponse> RS jsonPostRepeat(AbstractSignTypeRequest<RS> req, int repeat) | |||
throws ServiceHandleException { | |||
return jsonPostRepeat(req, repeat, null, null); | |||
} | |||
public <RS> RS jsonPostRepeat(AbstractOldSystemRequest<RS> req, int repeat, String accessToken) | |||
throws ServiceHandleException { | |||
for (int i = 0; i < repeat; i++) { | |||
try { | |||
return jsonPost(req, accessToken); | |||
} catch (IOException e) { | |||
logger.error("第 {} 次执行Exception:{}", i + 1, e.getMessage()); | |||
// if (logManager != null) { | |||
// logManager.addConsoleLog(FeeBusinessType.EXCEPTION, req.getFilename(), "error", e.getMessage()); | |||
// } | |||
} catch (ApiRequestException e) { | |||
logger.error("接口调用异常", e); | |||
SignJsonResponse jsonRes = toJsonResponse(e); | |||
assert jsonRes != null; | |||
Integer statusCode = jsonRes.getStatusCode(); | |||
if (statusCode.equals(801)) { | |||
statusCode = 704; | |||
} | |||
throw new ServiceHandleException(jsonRes.getErrorMsg(), statusCode); | |||
} | |||
} | |||
return null; | |||
} | |||
public <RS extends AbstractSignTypeResponse> RS jsonPostRepeat(AbstractSignTypeRequest<RS> req, int repeat, | |||
String ifCode, String accessToken) throws ServiceHandleException { | |||
for (int i = 0; i < repeat; i++) { | |||
try { | |||
return jsonPost(req); | |||
return jsonPost(req, ifCode, accessToken); | |||
} catch (IOException e) { | |||
logger.error("第 {} 次执行Exception:{}", i + 1, e.getMessage()); | |||
// if (logManager != null) { | |||
@@ -42,33 +84,45 @@ public abstract class AbstractCommManager extends AbstractManager { | |||
throw new RuntimeException(ex); | |||
} | |||
} | |||
throw e; | |||
logger.error("接口调用异常", e); | |||
SignJsonResponse jsonRes = toJsonResponse(e); | |||
assert jsonRes != null; | |||
Integer statusCode = jsonRes.getStatusCode(); | |||
if (statusCode.equals(801)) { | |||
statusCode = 704; | |||
} | |||
throw new ServiceHandleException(jsonRes.getErrorMsg(), statusCode); | |||
} | |||
} | |||
return null; | |||
} | |||
public <RS extends AbstractSignTypeResponse> RS jsonPost(AbstractSignTypeRequest<RS> req) throws IOException { | |||
/** | |||
* 未做异常处理的接口调用 | |||
*/ | |||
protected <RS extends AbstractSignTypeResponse> RS jsonPost(AbstractSignTypeRequest<RS> req, String ifCode, | |||
String accessToken) throws IOException { | |||
Class<RS> clazz = req.getResponseType(); | |||
return feignClientManager.jsonPost(req, clazz); | |||
return feignClientManager.jsonPost(req, clazz, ifCode, accessToken); | |||
} | |||
/** | |||
* 当不想自己捕获异常时、当你不对异常做什么处理时可调用该方法 | |||
* | |||
* @param businessId | |||
* 业务id | |||
* 未做异常处理的接口调用 | |||
*/ | |||
public <V> V doSafe(Callable<V> call, String businessId) { | |||
protected <RS> RS jsonPost(AbstractOldSystemRequest<RS> req, String accessToken) throws IOException { | |||
return feignClientManager.jsonPost(req, accessToken); | |||
} | |||
private SignJsonResponse toJsonResponse(ApiRequestException e) { | |||
String responseJson = e.getMessage().substring(0, e.getMessage().length() - 4); | |||
try { | |||
return call.call(); | |||
} catch (Exception e) { | |||
logger.error("", e); | |||
// if (logManager != null) { | |||
// logManager.addConsoleLog(FeeBusinessType.EXCEPTION, businessId, "error", e.getMessage()); | |||
// } | |||
return null; | |||
return JsonTools.json2Object(responseJson, SignJsonResponse.class); | |||
} catch (IOException e1) { | |||
logger.error("转换json出错 json:\n{} \n exception:{}", responseJson, e1.getMessage()); | |||
} | |||
return null; | |||
} | |||
} |
@@ -0,0 +1,226 @@ | |||
package cn.com.taiji.ias.manager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.pub.TimeTools; | |||
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.BusinessValidateTools; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.valid.FormatValidateTools; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.dict.RequestStatus; | |||
import cn.com.taiji.ias.model.PersistException; | |||
import cn.com.taiji.ias.model.ServiceLogEvent; | |||
import com.google.common.collect.Maps; | |||
import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Qualifier; | |||
import org.springframework.dao.DataIntegrityViolationException; | |||
import org.springframework.dao.DuplicateKeyException; | |||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.io.IOException; | |||
import java.lang.reflect.ParameterizedType; | |||
import java.time.LocalDateTime; | |||
import java.time.temporal.ChronoUnit; | |||
import java.util.Map; | |||
public abstract class AbstractHandleManager<T extends AbstractSignTypeRequest<?>> extends AbstractCommManager { | |||
protected static final String RESPONSE_KEY = "response"; | |||
public static final String ID_EXITS_KEY = "idExits"; | |||
public static LocalDateTime TIME1990 = LocalDateTime.parse("1990-01-01T00:00:00"); | |||
protected final Class<T> clazz; | |||
protected final DataType dataType; | |||
// @Autowired | |||
// protected LogManager logManager; | |||
@Autowired | |||
@Qualifier("myExecutor") | |||
protected ThreadPoolTaskExecutor executor; | |||
@SuppressWarnings("unchecked") | |||
public AbstractHandleManager(DataType dataType) { | |||
this.dataType = dataType; | |||
ParameterizedType parameterizedType = (ParameterizedType)getClass().getGenericSuperclass(); | |||
this.clazz = (Class<T>)parameterizedType.getActualTypeArguments()[0]; | |||
} | |||
public AbstractSignTypeResponse serviceHandle(T req, String ifCode, String reqId, AbstractHttpRequestInfo reqInfo) | |||
throws ServiceHandleException { | |||
LocalDateTime receiveTime = LocalDateTime.now().withNano(0); | |||
ServiceLogEvent event = new ServiceLogEvent(dataType, ifCode, reqId, receiveTime); | |||
String dataId = getDataId(req); | |||
event.setDataId(dataId); | |||
try { | |||
Map<String, Object> dataStream = Maps.newHashMap(); | |||
formatValidate(req, event, dataStream); | |||
businessValidate(req, event, dataStream); | |||
doBusiness(req, event, dataStream); | |||
persist(req, event, dataStream); | |||
onSuccess(req, event, dataStream); | |||
return generateRes(req, event, dataStream); | |||
} finally { | |||
// logManager.addServiceLog(event); | |||
} | |||
} | |||
@Deprecated | |||
protected void doBusiness(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException { | |||
} | |||
protected abstract String getDataId(T req); | |||
private void formatValidate(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException { | |||
try { | |||
ErrorMsgBuilder builder = new ErrorMsgBuilder(); | |||
FormatValidateTools.validateWithException(builder, req, "formatError"); | |||
formatValidateInternal(builder, req, event, dataStream); | |||
FormatValidateTools.checkWithException(builder); | |||
} catch (ServiceHandleException e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------格式校验失败:" + e.getMessage()); | |||
throw e; | |||
} catch (Exception e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------格式校验失败:", e); | |||
throw GlyServiceError.FORMAT_VALIDATE_ERR.toHandleException("格式校验错误"); | |||
} finally { | |||
event.setReqStatus(RequestStatus.FORMAT_VALID); | |||
event.setFormatValidTime(LocalDateTime.now()); | |||
} | |||
} | |||
protected abstract void formatValidateInternal(ErrorMsgBuilder builder, T req, ServiceLogEvent event, | |||
Map<String, Object> dataStream) throws ServiceHandleException; | |||
private void businessValidate(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException { | |||
ErrorMsgBuilder builder = new ErrorMsgBuilder(); | |||
try { | |||
businessValidateInternal(builder, req, event, dataStream); | |||
BusinessValidateTools.checkWithException(builder); | |||
} catch (ServiceHandleException e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------业务校验失败:{}", e.getMessage()); | |||
onBusinessValidateErr(req, dataStream); | |||
if (builder.getMap().containsKey(ID_EXITS_KEY)) { | |||
throw GlyServiceError.DATA_REPEAT_UPLOAD.toHandleException(builder.toMessageStr()); | |||
} | |||
throw e; | |||
} catch (Exception e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------业务校验失败:", e); | |||
onBusinessValidateErr(req, dataStream); | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("业务校验错误"+e.getMessage()); | |||
} finally { | |||
event.setReqStatus(RequestStatus.BUSINESS_VALID); | |||
LocalDateTime now = LocalDateTime.now(); | |||
event.setBusinessValidTime(now); | |||
event.setBusinessCostTime(ChronoUnit.MILLIS.between(event.getFormatValidTime(), now)); | |||
} | |||
} | |||
protected abstract void businessValidateInternal(ErrorMsgBuilder builder, T req, ServiceLogEvent event, | |||
Map<String, Object> dataStream) throws ServiceHandleException; | |||
protected void onBusinessValidateErr(T req, Map<String, Object> dataStream) { | |||
} | |||
protected void persist(T req, ServiceLogEvent event, Map<String, Object> data) throws ServiceHandleException { | |||
try { | |||
persistHandle(req, data, event); | |||
} catch (PersistException e) { | |||
event.setMsg(e.getMessage()); | |||
// 此处不打印错误日志,由抛出PersistException的地方打印 | |||
throw GlyServiceError.PERSIST_ERR.toHandleException(e.getMessage()); | |||
} catch (DataIntegrityViolationException e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------持久化失败:", e); | |||
throw GlyServiceError.PERSIST_ERR.toHandleException("提交持久化出错:脏数据"); | |||
} catch (Exception e) { | |||
event.setMsg(e.getMessage()); | |||
logger.error("------持久化失败:", e); | |||
throw GlyServiceError.PERSIST_ERR.toHandleException("提交持久化出错"); | |||
} finally { | |||
LocalDateTime persistTime = LocalDateTime.now(); | |||
event.setReqStatus(RequestStatus.PERSIST); | |||
event.setPersistTime(persistTime); | |||
event.setPersistCostTime(ChronoUnit.MILLIS.between(event.getBusinessValidTime(), persistTime)); | |||
} | |||
} | |||
@Transactional(rollbackFor = {PersistException.class}) | |||
public void persistHandle(T req, Map<String, Object> data, ServiceLogEvent event) throws PersistException { | |||
try { | |||
persistInternal(req, event, data); | |||
} catch (DuplicateKeyException e) { | |||
logger.error("------持久化DuplicateKeyException:" + e.getMessage()); | |||
throw new PersistException("持久化时发现有重复数据"); | |||
} catch (DataIntegrityViolationException e) { | |||
logger.error("------持久化失败:", e); | |||
throw new PersistException("持久化时发现脏数据"); | |||
} catch (Exception e) { | |||
logger.error("------持久化时出现异常:", e); | |||
if (e.getMessage().equals("域名映射表未配置")) {//针对渠道回调通知异常特定的报错 | |||
throw new PersistException("持久化时异常:" + e.getMessage()); | |||
} | |||
throw new PersistException("持久化时异常:" + e.getClass().toString()); | |||
} | |||
} | |||
protected void persistInternal(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException { | |||
} | |||
private AbstractSignTypeResponse generateRes(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException { | |||
try { | |||
return getRes(req, event, dataStream); | |||
} catch (Exception e) { | |||
logger.error("------响应失败:", e); | |||
throw GlyServiceError.RESPONSE_ERROR.toHandleException(e.getMessage()); | |||
} | |||
} | |||
protected abstract AbstractSignTypeResponse getRes(T req, ServiceLogEvent event, Map<String, Object> dataStream) | |||
throws ServiceHandleException, IOException; | |||
private void onSuccess(T req, ServiceLogEvent event, Map<String, Object> dataStream) { | |||
try { | |||
onSuccessInternal(req, event, dataStream); | |||
} catch (Exception e) { | |||
logger.error("------处理成功后业务时失败:", e); | |||
} | |||
} | |||
protected void onSuccessInternal(T req, ServiceLogEvent event, Map<String, Object> dataStream) { | |||
} | |||
protected void businessCheck(ErrorMsgBuilder builder, String id, String invalidField, String invalidValue, | |||
String msg) throws ServiceHandleException { | |||
builder.append(id, invalidField, invalidValue, msg); | |||
BusinessValidateTools.checkWithException(builder); | |||
} | |||
protected ServiceHandleException newBusinessException(String msg) { | |||
return GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(msg); | |||
} | |||
protected void throwBisExceptionOn(boolean condition, String msg) throws ServiceHandleException { | |||
if (condition) { | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException(msg); | |||
} | |||
} | |||
protected String getReceiveTimeStr(ServiceLogEvent event) { | |||
return event.getReceiveTime().format(TimeTools.ISO_LOCAL_DATE_TIME); | |||
} | |||
} |
@@ -1,47 +1,47 @@ | |||
package cn.com.taiji.ias.manager; | |||
import javax.annotation.PostConstruct; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import com.zgglyun.common.model.AbstractCommRequest; | |||
import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
import cn.com.taiji.core.manager.comm.AbstractCommHandleManager; | |||
import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceType; | |||
import cn.com.taiji.ias.manager.handler.SampleServiceHandler; | |||
/** | |||
* | |||
* @author Peream <br> | |||
* Create Time:2019年7月28日 下午3:35:29<br> | |||
* @since 1.0 | |||
* @version 1.0 | |||
*/ | |||
@Service | |||
public class MyCommHandleManager extends AbstractCommHandleManager { | |||
@Autowired | |||
private SampleServiceHandler sampleServiceHandler; | |||
public MyCommHandleManager() { | |||
super(SampleServiceSystem.SAMPLE); | |||
} | |||
@PostConstruct | |||
public void init() { | |||
registerJsonService(sampleServiceHandler); | |||
} | |||
@Override | |||
protected SignServiceType getServiceType(String ifCode) { | |||
return SampleServiceType.fromIfCode(ifCode); | |||
} | |||
} | |||
//package cn.com.taiji.ias.manager; | |||
// | |||
//import javax.annotation.PostConstruct; | |||
// | |||
//import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
//import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
//import org.springframework.beans.factory.annotation.Autowired; | |||
//import org.springframework.stereotype.Service; | |||
// | |||
//import com.zgglyun.common.model.AbstractCommRequest; | |||
//import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
// | |||
//import cn.com.taiji.core.manager.comm.AbstractCommHandleManager; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceSystem; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceType; | |||
//import cn.com.taiji.ias.manager.handler.SampleServiceHandler; | |||
// | |||
///** | |||
// * | |||
// * @author Peream <br> | |||
// * Create Time:2019年7月28日 下午3:35:29<br> | |||
// * @since 1.0 | |||
// * @version 1.0 | |||
// */ | |||
//@Service | |||
//public class MyCommHandleManager extends AbstractCommHandleManager { | |||
// @Autowired | |||
// private SampleServiceHandler sampleServiceHandler; | |||
// | |||
// public MyCommHandleManager() { | |||
// super(SampleServiceSystem.SAMPLE); | |||
// } | |||
// | |||
// | |||
// | |||
// | |||
// @PostConstruct | |||
// public void init() { | |||
// registerJsonService(sampleServiceHandler); | |||
// } | |||
// | |||
// @Override | |||
// protected SignServiceType getServiceType(String ifCode) { | |||
// return SampleServiceType.fromIfCode(ifCode); | |||
// } | |||
// | |||
//} |
@@ -0,0 +1,19 @@ | |||
package cn.com.taiji.ias.manager.handler; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.manager.comm.AbstractCommServiceHandler; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.ias.IasServiceType; | |||
public abstract class AbstractIasServiceHandler<C extends SignServiceCommand> | |||
extends AbstractCommServiceHandler<IasServiceType> { | |||
protected AbstractIasServiceHandler(IasServiceType serviceType) { | |||
super(serviceType); | |||
} | |||
@Override | |||
public <T extends AbstractSignTypeRequest<?>> void baseValidate(T t) throws ServiceHandleException { | |||
} | |||
} |
@@ -1,15 +0,0 @@ | |||
package cn.com.taiji.ias.manager.handler; | |||
import cn.com.taiji.core.manager.comm.AbstractCommServiceHandler; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceType; | |||
public abstract class AbstractSampleServiceHandler<C extends SignServiceCommand> | |||
extends AbstractCommServiceHandler<SampleServiceType> { | |||
protected AbstractSampleServiceHandler(SampleServiceType serviceType) { | |||
super(serviceType); | |||
} | |||
} |
@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@Service | |||
public class RefundProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd> { | |||
public class ProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd> { | |||
@Autowired | |||
private GetOriginListManager getOriginListManager; | |||
@@ -27,7 +27,7 @@ public class RefundProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd | |||
private OrderSaveManager orderSaveManager; | |||
public RefundProvinceHandler() { | |||
public ProvinceHandler() { | |||
super(IasServiceType.PROVINCE); | |||
} | |||
@@ -37,20 +37,15 @@ public class RefundProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd | |||
ProvinceCmd cmd = ProvinceCmd.fromIfCode(jsonReq.getIfCode()); | |||
switch (cmd) { | |||
case GET_ORIGIN_LIST: | |||
return getOriginListManager.serviceHandle((GetOriginListRequest) request, jsonReq.getIfCode(), | |||
jsonReq.getReqId(), reqInfo); | |||
return getOriginListManager.serviceHandle((GetOriginListRequest) request); | |||
case ORDER_PUSH: | |||
return orderPushManager.serviceHandle((OrderPushRequest) request, jsonReq.getIfCode(), | |||
jsonReq.getReqId(), reqInfo); | |||
return orderPushManager.serviceHandle((OrderPushRequest) request); | |||
case QUERY_NEW_REFUND: | |||
return queryNewRefundManager.serviceHandle((QueryNewRefundRequest) request, jsonReq.getIfCode(), | |||
jsonReq.getReqId(), reqInfo); | |||
return queryNewRefundManager.serviceHandle((QueryNewRefundRequest) request); | |||
case QUERY_HANDLE_RECORD: | |||
return queryHandleRefundManager.serviceHandle((QueryHandleRecordsRequest) request, jsonReq.getIfCode(), | |||
jsonReq.getReqId(), reqInfo); | |||
return queryHandleRefundManager.serviceHandle((QueryHandleRecordsRequest) request); | |||
case ORDER_SAVE: | |||
return orderSaveManager.serviceHandle((OrderSaveRequest)request, jsonReq.getIfCode(), | |||
jsonReq.getReqId(), reqInfo); | |||
return orderSaveManager.serviceHandle((OrderSaveRequest)request); | |||
default: | |||
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | |||
} |
@@ -1,61 +1,61 @@ | |||
package cn.com.taiji.ias.manager.handler; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.model.file.FileProtocolSystemError; | |||
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.SignJsonRequest; | |||
import cn.com.taiji.core.model.comm.protocol.sample.DemoServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleRequest; | |||
import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleResponse; | |||
import cn.com.taiji.core.model.comm.protocol.sample.valid.demo.CommonResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
/** | |||
* | |||
* @author Peream <br> | |||
* Create Time:2019年7月28日 下午4:45:09<br> | |||
* @since 1.0 | |||
* @version 1.0 | |||
*/ | |||
@Service | |||
public class SampleServiceHandler extends AbstractSampleServiceHandler<DemoServiceCmd> { | |||
@Autowired | |||
public SampleServiceHandler() { | |||
super(SampleServiceType.SAMPLE); | |||
} | |||
@Override | |||
protected <T extends AbstractSignTypeRequest<?>> AbstractSignTypeResponse handleInternal(T request, | |||
SignJsonRequest jsonReq, AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
DemoServiceCmd cmd = DemoServiceCmd.fromIfCode(jsonReq.getIfCode()); | |||
switch (cmd) { | |||
case TYPESAMMPLE: | |||
return typeSample((TypeSampleRequest)request, jsonReq, reqInfo); | |||
case ETCTRANS: | |||
return new CommonResponse(); | |||
default: | |||
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | |||
} | |||
} | |||
private TypeSampleResponse typeSample(TypeSampleRequest req, SignJsonRequest jsonReq, | |||
AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
logger.info("jsonReq:{}", jsonReq); | |||
// 注意,业务逻辑应该写在manager,handler类似controller | |||
if (req.isValid()) { | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("valid为true会抛出异常"); | |||
} | |||
TypeSampleResponse res = new TypeSampleResponse(); | |||
res.setMsg(req.getCardId() + " success!"); | |||
return res; | |||
} | |||
} | |||
//package cn.com.taiji.ias.manager.handler; | |||
// | |||
//import org.springframework.beans.factory.annotation.Autowired; | |||
//import org.springframework.stereotype.Service; | |||
// | |||
//import com.zgglyun.common.model.AbstractHttpRequestInfo; | |||
// | |||
//import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
//import cn.com.taiji.common.model.file.FileProtocolSystemError; | |||
//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.SignJsonRequest; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.DemoServiceCmd; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.SampleServiceType; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleRequest; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleResponse; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.valid.demo.CommonResponse; | |||
//import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
// | |||
///** | |||
// * | |||
// * @author Peream <br> | |||
// * Create Time:2019年7月28日 下午4:45:09<br> | |||
// * @since 1.0 | |||
// * @version 1.0 | |||
// */ | |||
//@Service | |||
//public class SampleServiceHandler extends cn.com.taiji.core.manager.comm.AbstractCommServiceHandler<SampleServiceType> { | |||
// | |||
// @Autowired | |||
// public SampleServiceHandler() { | |||
// super(SampleServiceType.SAMPLE); | |||
// } | |||
// | |||
// @Override | |||
// protected <T extends AbstractSignTypeRequest<?>> AbstractSignTypeResponse handleInternal(T request, | |||
// SignJsonRequest jsonReq, AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
// DemoServiceCmd cmd = DemoServiceCmd.fromIfCode(jsonReq.getIfCode()); | |||
// switch (cmd) { | |||
// case TYPESAMMPLE: | |||
// return typeSample((TypeSampleRequest)request, jsonReq, reqInfo); | |||
// case ETCTRANS: | |||
// return new CommonResponse(); | |||
// default: | |||
// throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | |||
// } | |||
// } | |||
// | |||
// private TypeSampleResponse typeSample(TypeSampleRequest req, SignJsonRequest jsonReq, | |||
// AbstractHttpRequestInfo reqInfo) throws ServiceHandleException { | |||
// logger.info("jsonReq:{}", jsonReq); | |||
// // 注意,业务逻辑应该写在manager,handler类似controller | |||
// if (req.isValid()) { | |||
// throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("valid为true会抛出异常"); | |||
// } | |||
// TypeSampleResponse res = new TypeSampleResponse(); | |||
// res.setMsg(req.getCardId() + " success!"); | |||
// return res; | |||
// } | |||
// | |||
//} |
@@ -1,13 +1,12 @@ | |||
package cn.com.taiji.ias.manager.refund; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.GetOriginListRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.GetOriginListResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.GetOriginListResModel; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.model.refundHttp.GetOriginListAsyncRequest; | |||
import cn.com.taiji.ias.model.refundHttp.GetOriginListAsyncResponse; | |||
import cn.com.taiji.ias.model.refundHttp.model.GetOriginListAsyncModel; | |||
@@ -18,7 +17,6 @@ import org.springframework.stereotype.Service; | |||
import java.io.IOException; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* @Auther: humh | |||
@@ -28,30 +26,12 @@ import java.util.Map; | |||
* @version: 1.0 | |||
*/ | |||
@Service | |||
public class GetOriginListManager extends AbstractHandleManager<GetOriginListRequest> { | |||
public class GetOriginListManager extends AbstractManager { | |||
@Autowired | |||
private RefundHttpManager refundHttpManager; | |||
public GetOriginListManager() { | |||
super(DataType.GET_ORIGIN_LIST); | |||
} | |||
@Override | |||
protected String getDataId(GetOriginListRequest req) { | |||
return null; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, GetOriginListRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, GetOriginListRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected AbstractSignTypeResponse getRes(GetOriginListRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
public AbstractSignTypeResponse serviceHandle(GetOriginListRequest req) throws ServiceHandleException { | |||
GetOriginListAsyncRequest request = copyProperties(req, new GetOriginListAsyncRequest()); | |||
GetOriginListAsyncResponse response = null; | |||
try { | |||
@@ -69,4 +49,5 @@ public class GetOriginListManager extends AbstractHandleManager<GetOriginListReq | |||
res.setModelList(list); | |||
return res; | |||
} | |||
} |
@@ -1,9 +1,13 @@ | |||
package cn.com.taiji.ias.manager.refund; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.OrderPushRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.OrderPushResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.OrderPushReqModel; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.OrderPushResModel; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.model.refundHttp.OrderPushAsyncRequest; | |||
import cn.com.taiji.ias.model.refundHttp.OrderPushAsyncResponse; | |||
import cn.com.taiji.ias.model.refundHttp.model.OrderPushAsyncModel; | |||
@@ -14,7 +18,6 @@ import org.springframework.stereotype.Service; | |||
import java.io.IOException; | |||
import java.util.List; | |||
import java.util.Map; | |||
/** | |||
* @Auther: humh | |||
@@ -24,33 +27,13 @@ import java.util.Map; | |||
* @version: 1.0 | |||
*/ | |||
@Service | |||
public class OrderPushManager extends AbstractHandleManager<OrderPushRequest> { | |||
public class OrderPushManager extends AbstractManager { | |||
@Autowired | |||
private RefundHttpManager refundHttpManager; | |||
public OrderPushManager() { | |||
super(DataType.ORDER_PUSH); | |||
} | |||
@Override | |||
protected String getDataId(OrderPushRequest req) { | |||
return null; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, OrderPushRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, OrderPushRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected AbstractSignTypeResponse getRes(OrderPushRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
public AbstractSignTypeResponse serviceHandle(OrderPushRequest req) throws ServiceHandleException { | |||
//组织请求数据 | |||
List<OrderPushAsyncModel> asyncModels = Lists.newArrayList(); | |||
for (OrderPushReqModel orderPushReqModel : req.getOrderPushReqModels()) { |
@@ -1,12 +1,12 @@ | |||
package cn.com.taiji.ias.manager.refund; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.OrderSaveRequest; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.Map; | |||
/** | |||
* @Auther: humh | |||
@@ -16,31 +16,13 @@ import java.util.Map; | |||
* @version: 1.0 | |||
*/ | |||
@Service | |||
public class OrderSaveManager extends AbstractHandleManager<OrderSaveRequest> { | |||
public class OrderSaveManager extends AbstractManager { | |||
@Autowired | |||
private RefundHttpManager refundHttpManager; | |||
public OrderSaveManager() { | |||
super(DataType.ORDER_PUSH); | |||
} | |||
@Override | |||
protected String getDataId(OrderSaveRequest req) { | |||
return null; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, OrderSaveRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, OrderSaveRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected AbstractSignTypeResponse getRes(OrderSaveRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
public AbstractSignTypeResponse serviceHandle(OrderSaveRequest req) throws ServiceHandleException { | |||
return null; | |||
} | |||
} |
@@ -1,9 +1,10 @@ | |||
package cn.com.taiji.ias.manager.refund; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.QueryHandleRecordsRequest; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.Map; | |||
@@ -16,31 +17,12 @@ import java.util.Map; | |||
* @version: 1.0 | |||
*/ | |||
@Service | |||
public class QueryHandleRefundManager extends AbstractHandleManager<QueryHandleRecordsRequest> { | |||
public class QueryHandleRefundManager extends AbstractManager { | |||
@Autowired | |||
private RefundHttpManager refundHttpManager; | |||
public QueryHandleRefundManager() { | |||
super(DataType.ORDER_PUSH); | |||
} | |||
@Override | |||
protected String getDataId(QueryHandleRecordsRequest req) { | |||
return null; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, QueryHandleRecordsRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, QueryHandleRecordsRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected AbstractSignTypeResponse getRes(QueryHandleRecordsRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
public AbstractSignTypeResponse serviceHandle(QueryHandleRecordsRequest req) throws ServiceHandleException { | |||
return null; | |||
} | |||
} |
@@ -1,9 +1,16 @@ | |||
package cn.com.taiji.ias.manager.refund; | |||
import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.QueryNewRefundRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.QueryNewRefundResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.QueryNewRefundResModel; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.AbstractHandleManager; | |||
import cn.com.taiji.ias.model.ServiceLogEvent; | |||
import cn.com.taiji.ias.model.refundHttp.QueryNewRefundAsyncRequest; | |||
import cn.com.taiji.ias.model.refundHttp.QueryNewRefundAsyncResponse; | |||
import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | |||
@@ -24,36 +31,20 @@ import java.util.Map; | |||
* @version: 1.0 | |||
*/ | |||
@Service | |||
public class QueryNewRefundManager extends AbstractHandleManager<QueryNewRefundRequest> { | |||
public QueryNewRefundManager() { | |||
super(DataType.ORDER_PUSH); | |||
} | |||
public class QueryNewRefundManager extends AbstractManager { | |||
@Autowired | |||
private RefundHttpManager refundHttpManager; | |||
@Override | |||
protected String getDataId(QueryNewRefundRequest req) { | |||
return null; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, QueryNewRefundRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, QueryNewRefundRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected AbstractSignTypeResponse getRes(QueryNewRefundRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException { | |||
public AbstractSignTypeResponse serviceHandle(QueryNewRefundRequest req) throws ServiceHandleException { | |||
QueryNewRefundAsyncRequest request = copyProperties(req, new QueryNewRefundAsyncRequest()); | |||
QueryNewRefundAsyncResponse response = refundHttpManager.queryNewRefundAsync(request); | |||
QueryNewRefundAsyncResponse response = null; | |||
try { | |||
response = refundHttpManager.queryNewRefundAsync(request); | |||
} catch (IOException e) { | |||
logger.error("------响应失败:", e); | |||
throw GlyServiceError.RESPONSE_ERROR.toHandleException(e.getMessage()); | |||
} | |||
List<QueryNewRefundResModel> list = Lists.newArrayList(); | |||
QueryNewRefundResponse res = new QueryNewRefundResponse(); | |||
for (QueryNewRefundAsyncModel asyncModel : response.getList()) { |
@@ -0,0 +1,9 @@ | |||
package cn.com.taiji.ias.model; | |||
public class PersistException extends Exception { | |||
public PersistException(String message) { | |||
super(message); | |||
} | |||
} |
@@ -0,0 +1,28 @@ | |||
package cn.com.taiji.ias.model; | |||
import cn.com.taiji.ias.dict.RequestDataType; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import java.time.LocalDateTime; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class RequestEvent { | |||
public RequestEvent(RequestDataType dataType, String businessId) { | |||
this.dataType = dataType; | |||
this.businessId = businessId; | |||
} | |||
private RequestDataType dataType;// 数据类型 | |||
private String businessId;// 业务id | |||
private String result;// 返回状态 | |||
private String msg;// 返回信息 | |||
private LocalDateTime beginTime;// 开始时间 | |||
private Long execTime;// 执行时间ms | |||
private String reqName;// 请求名称 | |||
private String resName;// 返回名称 | |||
} |
@@ -0,0 +1,34 @@ | |||
package cn.com.taiji.ias.model; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.dict.RequestStatus; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import java.time.LocalDateTime; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class ServiceLogEvent { | |||
public ServiceLogEvent(DataType dataType, String ifCode, String reqId, LocalDateTime receiveTime) { | |||
this.dataType = dataType; | |||
this.ifCode = ifCode; | |||
this.reqId = reqId; | |||
this.receiveTime = receiveTime; | |||
} | |||
private DataType dataType;// 接口类型 | |||
private String dataId;// 业务id | |||
private String ifCode;// 接口文件名 | |||
private final String reqId; | |||
private RequestStatus reqStatus = RequestStatus.RECEIVE;// 状态 | |||
private LocalDateTime receiveTime;// 服务端接收时间 | |||
private LocalDateTime formatValidTime;// 格式校验时间 | |||
private LocalDateTime businessValidTime;// 业务校验时间 | |||
private LocalDateTime persistTime;// 存入关系数据库时间 | |||
private Long businessCostTime = 0L;// 业务校验花费时间 | |||
private Long persistCostTime = 0L;// 持久化花费时间 | |||
private String msg;// 说明 | |||
} |
@@ -1,6 +1,6 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.issues.model.refundHttp.model.GetHandleRecordsModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.GetHandleRecordsModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -1,7 +1,7 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.common.entity.BaseEntity; | |||
import cn.com.taiji.issues.model.refundHttp.model.OrderPushAsyncModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.OrderPushAsyncModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -1,6 +1,6 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.issues.model.refundHttp.model.OrderPushAsyncResModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.OrderPushAsyncResModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -1,7 +1,7 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.common.entity.BaseEntity; | |||
import cn.com.taiji.issues.model.refundHttp.model.OrderSaveAsyncReqModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.OrderSaveAsyncReqModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -1,6 +1,6 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.issues.model.refundHttp.model.OrderSaveAsyncResModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.OrderSaveAsyncResModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -1,6 +1,6 @@ | |||
package cn.com.taiji.ias.model.refundHttp; | |||
import cn.com.taiji.issues.model.refundHttp.model.QueryNewRefundAsyncModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | |||
import com.fasterxml.jackson.annotation.JsonProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; |
@@ -1,5 +1,7 @@ | |||
package cn.com.taiji.ias.tools; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.GetOriginListResModel; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.model.QueryNewRefundResModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.GetOriginListAsyncModel; | |||
import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | |||
import org.mapstruct.Mapper; |
@@ -1,12 +1,12 @@ | |||
spring: | |||
application: | |||
name: sample | |||
name: ias-local | |||
mvc: | |||
locale: zh_CN | |||
messages: | |||
basename: ValidationMessages_zh | |||
jpa: | |||
database-platform: org.hibernate.dialect.MySQL8Dialect | |||
database-platform: org.hibernate.dialect.OracleDialect | |||
open-in-view: false | |||
cloud: | |||
nacos: | |||
@@ -20,28 +20,16 @@ spring: | |||
enabled: true | |||
file-extension: yaml # 必须修改成yaml | |||
server-addr: 100.64.2.105:8848 | |||
namespace: guizhou-issuer | |||
namespace: zhywpt-new-test | |||
username: nacos | |||
password: '!@#$%qwertASDFG' | |||
extension-configs: | |||
- data-id: db-oracle.yaml | |||
refresh: true | |||
- data-id: comm-client.yaml | |||
refresh: true | |||
redis: | |||
#redis本地启动时候配置 | |||
database: 1 | |||
# host: 10.207.132.11 | |||
host: 127.0.0.1 | |||
port: 6379 | |||
# port: 443 | |||
#redis访问密码(默认为空, 如果没有密码, 这里的password整行不需配置) | |||
# password: Taiji@2023 | |||
jedis: | |||
pool: | |||
max-active: 200 | |||
max-idle: 50 | |||
min-idle: 5 | |||
max-wait: 60000 | |||
time-between-eviction-runs: 30000 | |||
- data-id: redis.yaml | |||
refresh: true | |||
feign: | |||
client: | |||
config: | |||
@@ -51,16 +39,16 @@ feign: | |||
server: | |||
port: 8086 | |||
servlet: | |||
context-path: /sample/ | |||
context-path: /ias/ | |||
#应用相关配置 | |||
app: | |||
nodeNum: 001 | |||
path: D:/devEnv/sample/ #工程的目录,#sso集成默认读取该目录下的oauth_client.properties | |||
path: D:/devEnv/ias/ #工程的目录,#sso集成默认读取该目录下的oauth_client.properties | |||
comm: | |||
# 自定义服务地址map,key为服务名、value为服务地址。如果配置了服务地址,接口调用时请求到该地址,如果没配置,默认请求到gateway | |||
serviceAddr: | |||
sample: http://127.0.0.1:8086 | |||
ias: http://127.0.0.1:8086 | |||
# 退费接口相关参数 | |||
refund: |
@@ -18,7 +18,7 @@ public class TestFeignClientRequest extends AbstractCommManager { | |||
TypeSampleRequest req = new TypeSampleRequest(); | |||
try { | |||
logger.info("格式校验异常 req:" + req.toJson(true)); | |||
jsonPostRepeat(req, 3); | |||
// jsonPostRepeat(req, 3); | |||
} catch (ApiRequestException e) { | |||
logger.error("", e); | |||
} | |||
@@ -28,7 +28,7 @@ public class TestFeignClientRequest extends AbstractCommManager { | |||
req.setValid(true); | |||
try { | |||
logger.info("业务校验异常 req:" + req.toJson(true)); | |||
jsonPostRepeat(req, 3); | |||
// jsonPostRepeat(req, 3); | |||
} catch (ApiRequestException e) { | |||
logger.error("", e); | |||
} | |||
@@ -37,8 +37,8 @@ public class TestFeignClientRequest extends AbstractCommManager { | |||
req.setReqStr("hello"); | |||
req.setValid(false); | |||
logger.info("成功 req:" + req.toJson(true)); | |||
TypeSampleResponse res = jsonPostRepeat(req, 1); | |||
logger.info("res:" + res.toJson(true)); | |||
// TypeSampleResponse res = jsonPostRepeat(req, 1); | |||
// logger.info("res:" + res.toJson(true)); | |||
} | |||
} |
@@ -0,0 +1,42 @@ | |||
package cn.com.taiji.oqs.client.province; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.GetOriginListRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.province.GetOriginListResponse; | |||
import cn.com.taiji.ias.Application; | |||
import cn.com.taiji.ias.manager.AbstractCommManager; | |||
import org.junit.jupiter.api.Test; | |||
import org.springframework.boot.test.context.SpringBootTest; | |||
import java.time.LocalDate; | |||
/** | |||
* @Auther: humh | |||
* @Description: | |||
* @Date: 2025/5/12 10:58 | |||
* @email: huminghao@mail.taiji.com.cn | |||
* @version: 1.0 | |||
*/ | |||
@SpringBootTest(classes = Application.class) | |||
public class TestProvinceHandler extends AbstractCommManager { | |||
@Test | |||
public void test() { | |||
logger.info("测试开始。。。"); | |||
GetOriginListRequest req = new GetOriginListRequest(); | |||
req.setExVehPlate("贵BXE005"); | |||
req.setStart(LocalDate.parse("2024-04-02")); | |||
req.setEnd(LocalDate.parse("2024-04-03")); | |||
GetOriginListResponse res = null; | |||
try { | |||
res = jsonPostRepeat(req); | |||
} catch (ServiceHandleException e) { | |||
logger.error(e.getMessage()); | |||
throw new RuntimeException(e); | |||
} | |||
res.toJson(); | |||
logger.info("测试结束。。。"); | |||
} | |||
} |
@@ -1,44 +1,44 @@ | |||
package cn.com.taiji.oqs.client.demo; | |||
import cn.com.taiji.common.manager.net.http.binclient.ApiRequestException; | |||
import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleRequest; | |||
import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleResponse; | |||
import cn.com.taiji.oqs.client.FeignClientApplication; | |||
import cn.com.taiji.inss.manager.AbstractCommManager; | |||
import org.junit.jupiter.api.Test; | |||
import org.springframework.boot.test.context.SpringBootTest; | |||
import java.util.Random; | |||
@SpringBootTest(classes = FeignClientApplication.class) | |||
public class TestFeignClientRequest extends AbstractCommManager { | |||
@Test | |||
public void testSampleRequest() { | |||
TypeSampleRequest req = new TypeSampleRequest(); | |||
try { | |||
logger.info("格式校验异常 req:" + req.toJson(true)); | |||
jsonPostRepeat(req, 3); | |||
} catch (ApiRequestException e) { | |||
logger.error("", e); | |||
} | |||
req = new TypeSampleRequest(); | |||
req.setCardId("cardId" + new Random().nextInt(1000000)); | |||
req.setReqStr("hello"); | |||
req.setValid(true); | |||
try { | |||
logger.info("业务校验异常 req:" + req.toJson(true)); | |||
jsonPostRepeat(req, 3); | |||
} catch (ApiRequestException e) { | |||
logger.error("", e); | |||
} | |||
req = new TypeSampleRequest(); | |||
req.setCardId("cardId" + new Random().nextInt(1000000)); | |||
req.setReqStr("hello"); | |||
req.setValid(false); | |||
logger.info("成功 req:" + req.toJson(true)); | |||
TypeSampleResponse res = jsonPostRepeat(req, 1); | |||
logger.info("res:" + res.toJson(true)); | |||
} | |||
} | |||
//package cn.com.taiji.oqs.client.demo; | |||
// | |||
//import cn.com.taiji.common.manager.net.http.binclient.ApiRequestException; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleRequest; | |||
//import cn.com.taiji.core.model.comm.protocol.sample.TypeSampleResponse; | |||
//import cn.com.taiji.oqs.client.FeignClientApplication; | |||
//import cn.com.taiji.inss.manager.AbstractCommManager; | |||
//import org.junit.jupiter.api.Test; | |||
//import org.springframework.boot.test.context.SpringBootTest; | |||
// | |||
//import java.util.Random; | |||
// | |||
//@SpringBootTest(classes = FeignClientApplication.class) | |||
//public class TestFeignClientRequest extends AbstractCommManager { | |||
// | |||
// @Test | |||
// public void testSampleRequest() { | |||
// TypeSampleRequest req = new TypeSampleRequest(); | |||
// try { | |||
// logger.info("格式校验异常 req:" + req.toJson(true)); | |||
// jsonPostRepeat(req, 3); | |||
// } catch (ApiRequestException e) { | |||
// logger.error("", e); | |||
// } | |||
// req = new TypeSampleRequest(); | |||
// req.setCardId("cardId" + new Random().nextInt(1000000)); | |||
// req.setReqStr("hello"); | |||
// req.setValid(true); | |||
// try { | |||
// logger.info("业务校验异常 req:" + req.toJson(true)); | |||
// jsonPostRepeat(req, 3); | |||
// } catch (ApiRequestException e) { | |||
// logger.error("", e); | |||
// } | |||
// req = new TypeSampleRequest(); | |||
// req.setCardId("cardId" + new Random().nextInt(1000000)); | |||
// req.setReqStr("hello"); | |||
// req.setValid(false); | |||
// logger.info("成功 req:" + req.toJson(true)); | |||
// TypeSampleResponse res = jsonPostRepeat(req, 1); | |||
// logger.info("res:" + res.toJson(true)); | |||
// | |||
// } | |||
//} |