import org.springframework.context.annotation.Bean; | import org.springframework.context.annotation.Bean; | ||||
import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; | import org.springframework.data.jpa.repository.config.EnableJpaRepositories; | ||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | |||||
import org.springframework.transaction.annotation.EnableTransactionManagement; | import org.springframework.transaction.annotation.EnableTransactionManagement; | ||||
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; | import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; | ||||
import cn.com.taiji.common.pub.AppEnv; | import cn.com.taiji.common.pub.AppEnv; | ||||
import cn.com.taiji.common.repo.jpa.MyJpaRespositoryFactoryBean; | import cn.com.taiji.common.repo.jpa.MyJpaRespositoryFactoryBean; | ||||
import java.util.concurrent.ThreadPoolExecutor; | |||||
@Configuration | @Configuration | ||||
@EntityScan(value = {"cn.com.taiji." + AppConfig.APP_NAME + ".entity", "cn.com.taiji.core.entity"}) | @EntityScan(value = {"cn.com.taiji." + AppConfig.APP_NAME + ".entity", "cn.com.taiji.core.entity"}) | ||||
@EnableJpaRepositories( | @EnableJpaRepositories( | ||||
public CommonBatchJdbcDao commonJdbcDao() { | public CommonBatchJdbcDao commonJdbcDao() { | ||||
return new CommonBatchJdbcDao(dataSource); | 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; | |||||
} | |||||
} | } |
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; | |||||
} | |||||
} |
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; | |||||
} | |||||
} |
package cn.com.taiji.ias.manager; | package cn.com.taiji.ias.manager; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.time.LocalDateTime; | |||||
import java.time.temporal.ChronoUnit; | |||||
import java.util.concurrent.Callable; | 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 org.springframework.beans.factory.annotation.Autowired; | ||||
import cn.com.taiji.common.manager.AbstractManager; | import cn.com.taiji.common.manager.AbstractManager; | ||||
@Autowired | @Autowired | ||||
protected FeignClientManager feignClientManager; | protected FeignClientManager feignClientManager; | ||||
public <RS extends AbstractSignTypeResponse> RS jsonPostRepeat(AbstractSignTypeRequest<RS> req) | |||||
throws ServiceHandleException { | |||||
return jsonPostRepeat(req, 3); | |||||
} | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
* 重复提交业务请求 | * 重复提交业务请求 | ||||
* 1、IO异常重试请求,如果一直IO异常返回null | * 1、IO异常重试请求,如果一直IO异常返回null | ||||
* 2、ApiRequestException 707返回new 创建的response | |||||
* 2、ApiRequestException 707返回通过new创建的response | |||||
* 3、ApiRequestException 其它错误抛异常 | * 3、ApiRequestException 其它错误抛异常 | ||||
* </pre> | * </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++) { | for (int i = 0; i < repeat; i++) { | ||||
try { | try { | ||||
return jsonPost(req); | |||||
return jsonPost(req, ifCode, accessToken); | |||||
} catch (IOException e) { | } catch (IOException e) { | ||||
logger.error("第 {} 次执行Exception:{}", i + 1, e.getMessage()); | logger.error("第 {} 次执行Exception:{}", i + 1, e.getMessage()); | ||||
// if (logManager != null) { | // if (logManager != null) { | ||||
throw new RuntimeException(ex); | 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; | 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(); | 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 { | 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; | |||||
} | } | ||||
} | } |
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); | |||||
} | |||||
} |
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); | |||||
// } | |||||
// | |||||
//} |
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 { | |||||
} | |||||
} |
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); | |||||
} | |||||
} |
import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
@Service | @Service | ||||
public class RefundProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd> { | |||||
public class ProvinceHandler extends AbstractIasServiceHandler<ProvinceCmd> { | |||||
@Autowired | @Autowired | ||||
private GetOriginListManager getOriginListManager; | private GetOriginListManager getOriginListManager; | ||||
private OrderSaveManager orderSaveManager; | private OrderSaveManager orderSaveManager; | ||||
public RefundProvinceHandler() { | |||||
public ProvinceHandler() { | |||||
super(IasServiceType.PROVINCE); | super(IasServiceType.PROVINCE); | ||||
} | } | ||||
ProvinceCmd cmd = ProvinceCmd.fromIfCode(jsonReq.getIfCode()); | ProvinceCmd cmd = ProvinceCmd.fromIfCode(jsonReq.getIfCode()); | ||||
switch (cmd) { | switch (cmd) { | ||||
case GET_ORIGIN_LIST: | case GET_ORIGIN_LIST: | ||||
return getOriginListManager.serviceHandle((GetOriginListRequest) request, jsonReq.getIfCode(), | |||||
jsonReq.getReqId(), reqInfo); | |||||
return getOriginListManager.serviceHandle((GetOriginListRequest) request); | |||||
case ORDER_PUSH: | case ORDER_PUSH: | ||||
return orderPushManager.serviceHandle((OrderPushRequest) request, jsonReq.getIfCode(), | |||||
jsonReq.getReqId(), reqInfo); | |||||
return orderPushManager.serviceHandle((OrderPushRequest) request); | |||||
case QUERY_NEW_REFUND: | case QUERY_NEW_REFUND: | ||||
return queryNewRefundManager.serviceHandle((QueryNewRefundRequest) request, jsonReq.getIfCode(), | |||||
jsonReq.getReqId(), reqInfo); | |||||
return queryNewRefundManager.serviceHandle((QueryNewRefundRequest) request); | |||||
case QUERY_HANDLE_RECORD: | case QUERY_HANDLE_RECORD: | ||||
return queryHandleRefundManager.serviceHandle((QueryHandleRecordsRequest) request, jsonReq.getIfCode(), | |||||
jsonReq.getReqId(), reqInfo); | |||||
return queryHandleRefundManager.serviceHandle((QueryHandleRecordsRequest) request); | |||||
case ORDER_SAVE: | case ORDER_SAVE: | ||||
return orderSaveManager.serviceHandle((OrderSaveRequest)request, jsonReq.getIfCode(), | |||||
jsonReq.getReqId(), reqInfo); | |||||
return orderSaveManager.serviceHandle((OrderSaveRequest)request); | |||||
default: | default: | ||||
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode()); | ||||
} | } |
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; | |||||
// } | |||||
// | |||||
//} |
package cn.com.taiji.ias.manager.refund; | 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.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | 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.GetOriginListRequest; | ||||
import cn.com.taiji.core.model.comm.protocol.ias.province.GetOriginListResponse; | 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.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.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.GetOriginListAsyncRequest; | ||||
import cn.com.taiji.ias.model.refundHttp.GetOriginListAsyncResponse; | import cn.com.taiji.ias.model.refundHttp.GetOriginListAsyncResponse; | ||||
import cn.com.taiji.ias.model.refundHttp.model.GetOriginListAsyncModel; | import cn.com.taiji.ias.model.refundHttp.model.GetOriginListAsyncModel; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | |||||
/** | /** | ||||
* @Auther: humh | * @Auther: humh | ||||
* @version: 1.0 | * @version: 1.0 | ||||
*/ | */ | ||||
@Service | @Service | ||||
public class GetOriginListManager extends AbstractHandleManager<GetOriginListRequest> { | |||||
public class GetOriginListManager extends AbstractManager { | |||||
@Autowired | @Autowired | ||||
private RefundHttpManager refundHttpManager; | 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()); | GetOriginListAsyncRequest request = copyProperties(req, new GetOriginListAsyncRequest()); | ||||
GetOriginListAsyncResponse response = null; | GetOriginListAsyncResponse response = null; | ||||
try { | try { | ||||
res.setModelList(list); | res.setModelList(list); | ||||
return res; | return res; | ||||
} | } | ||||
} | } |
package cn.com.taiji.ias.manager.refund; | 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.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.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.OrderPushAsyncRequest; | ||||
import cn.com.taiji.ias.model.refundHttp.OrderPushAsyncResponse; | import cn.com.taiji.ias.model.refundHttp.OrderPushAsyncResponse; | ||||
import cn.com.taiji.ias.model.refundHttp.model.OrderPushAsyncModel; | import cn.com.taiji.ias.model.refundHttp.model.OrderPushAsyncModel; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | |||||
/** | /** | ||||
* @Auther: humh | * @Auther: humh | ||||
* @version: 1.0 | * @version: 1.0 | ||||
*/ | */ | ||||
@Service | @Service | ||||
public class OrderPushManager extends AbstractHandleManager<OrderPushRequest> { | |||||
public class OrderPushManager extends AbstractManager { | |||||
@Autowired | @Autowired | ||||
private RefundHttpManager refundHttpManager; | 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(); | List<OrderPushAsyncModel> asyncModels = Lists.newArrayList(); | ||||
for (OrderPushReqModel orderPushReqModel : req.getOrderPushReqModels()) { | for (OrderPushReqModel orderPushReqModel : req.getOrderPushReqModels()) { |
package cn.com.taiji.ias.manager.refund; | 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.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | 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 org.springframework.stereotype.Service; | ||||
import java.util.Map; | |||||
/** | /** | ||||
* @Auther: humh | * @Auther: humh | ||||
* @version: 1.0 | * @version: 1.0 | ||||
*/ | */ | ||||
@Service | @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; | return null; | ||||
} | } | ||||
} | } |
package cn.com.taiji.ias.manager.refund; | 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.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | 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 org.springframework.stereotype.Service; | ||||
import java.util.Map; | import java.util.Map; | ||||
* @version: 1.0 | * @version: 1.0 | ||||
*/ | */ | ||||
@Service | @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; | return null; | ||||
} | } | ||||
} | } |
package cn.com.taiji.ias.manager.refund; | 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.common.manager.net.http.ServiceHandleException; | ||||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | 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.ErrorMsgBuilder; | ||||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||||
import cn.com.taiji.ias.dict.DataType; | 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.QueryNewRefundAsyncRequest; | ||||
import cn.com.taiji.ias.model.refundHttp.QueryNewRefundAsyncResponse; | import cn.com.taiji.ias.model.refundHttp.QueryNewRefundAsyncResponse; | ||||
import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | ||||
* @version: 1.0 | * @version: 1.0 | ||||
*/ | */ | ||||
@Service | @Service | ||||
public class QueryNewRefundManager extends AbstractHandleManager<QueryNewRefundRequest> { | |||||
public QueryNewRefundManager() { | |||||
super(DataType.ORDER_PUSH); | |||||
} | |||||
public class QueryNewRefundManager extends AbstractManager { | |||||
@Autowired | @Autowired | ||||
private RefundHttpManager refundHttpManager; | 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()); | 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(); | List<QueryNewRefundResModel> list = Lists.newArrayList(); | ||||
QueryNewRefundResponse res = new QueryNewRefundResponse(); | QueryNewRefundResponse res = new QueryNewRefundResponse(); | ||||
for (QueryNewRefundAsyncModel asyncModel : response.getList()) { | for (QueryNewRefundAsyncModel asyncModel : response.getList()) { |
package cn.com.taiji.ias.model; | |||||
public class PersistException extends Exception { | |||||
public PersistException(String message) { | |||||
super(message); | |||||
} | |||||
} |
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;// 返回名称 | |||||
} |
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;// 说明 | |||||
} |
package cn.com.taiji.ias.model.refundHttp; | 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.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
package cn.com.taiji.ias.model.refundHttp; | package cn.com.taiji.ias.model.refundHttp; | ||||
import cn.com.taiji.common.entity.BaseEntity; | 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.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
package cn.com.taiji.ias.model.refundHttp; | 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.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
package cn.com.taiji.ias.model.refundHttp; | package cn.com.taiji.ias.model.refundHttp; | ||||
import cn.com.taiji.common.entity.BaseEntity; | 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.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
package cn.com.taiji.ias.model.refundHttp; | 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.Getter; | ||||
import lombok.Setter; | import lombok.Setter; | ||||
package cn.com.taiji.ias.model.refundHttp; | 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 com.fasterxml.jackson.annotation.JsonProperty; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import lombok.Setter; | import lombok.Setter; |
package cn.com.taiji.ias.tools; | 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.GetOriginListAsyncModel; | ||||
import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | import cn.com.taiji.ias.model.refundHttp.model.QueryNewRefundAsyncModel; | ||||
import org.mapstruct.Mapper; | import org.mapstruct.Mapper; |
spring: | spring: | ||||
application: | application: | ||||
name: sample | |||||
name: ias-local | |||||
mvc: | mvc: | ||||
locale: zh_CN | locale: zh_CN | ||||
messages: | messages: | ||||
basename: ValidationMessages_zh | basename: ValidationMessages_zh | ||||
jpa: | jpa: | ||||
database-platform: org.hibernate.dialect.MySQL8Dialect | |||||
database-platform: org.hibernate.dialect.OracleDialect | |||||
open-in-view: false | open-in-view: false | ||||
cloud: | cloud: | ||||
nacos: | nacos: | ||||
enabled: true | enabled: true | ||||
file-extension: yaml # 必须修改成yaml | file-extension: yaml # 必须修改成yaml | ||||
server-addr: 100.64.2.105:8848 | server-addr: 100.64.2.105:8848 | ||||
namespace: guizhou-issuer | |||||
namespace: zhywpt-new-test | |||||
username: nacos | |||||
password: '!@#$%qwertASDFG' | |||||
extension-configs: | extension-configs: | ||||
- data-id: db-oracle.yaml | - data-id: db-oracle.yaml | ||||
refresh: true | refresh: true | ||||
- data-id: comm-client.yaml | - data-id: comm-client.yaml | ||||
refresh: true | 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: | feign: | ||||
client: | client: | ||||
config: | config: | ||||
server: | server: | ||||
port: 8086 | port: 8086 | ||||
servlet: | servlet: | ||||
context-path: /sample/ | |||||
context-path: /ias/ | |||||
#应用相关配置 | #应用相关配置 | ||||
app: | app: | ||||
nodeNum: 001 | nodeNum: 001 | ||||
path: D:/devEnv/sample/ #工程的目录,#sso集成默认读取该目录下的oauth_client.properties | |||||
path: D:/devEnv/ias/ #工程的目录,#sso集成默认读取该目录下的oauth_client.properties | |||||
comm: | comm: | ||||
# 自定义服务地址map,key为服务名、value为服务地址。如果配置了服务地址,接口调用时请求到该地址,如果没配置,默认请求到gateway | # 自定义服务地址map,key为服务名、value为服务地址。如果配置了服务地址,接口调用时请求到该地址,如果没配置,默认请求到gateway | ||||
serviceAddr: | serviceAddr: | ||||
sample: http://127.0.0.1:8086 | |||||
ias: http://127.0.0.1:8086 | |||||
# 退费接口相关参数 | # 退费接口相关参数 | ||||
refund: | refund: |
TypeSampleRequest req = new TypeSampleRequest(); | TypeSampleRequest req = new TypeSampleRequest(); | ||||
try { | try { | ||||
logger.info("格式校验异常 req:" + req.toJson(true)); | logger.info("格式校验异常 req:" + req.toJson(true)); | ||||
jsonPostRepeat(req, 3); | |||||
// jsonPostRepeat(req, 3); | |||||
} catch (ApiRequestException e) { | } catch (ApiRequestException e) { | ||||
logger.error("", e); | logger.error("", e); | ||||
} | } | ||||
req.setValid(true); | req.setValid(true); | ||||
try { | try { | ||||
logger.info("业务校验异常 req:" + req.toJson(true)); | logger.info("业务校验异常 req:" + req.toJson(true)); | ||||
jsonPostRepeat(req, 3); | |||||
// jsonPostRepeat(req, 3); | |||||
} catch (ApiRequestException e) { | } catch (ApiRequestException e) { | ||||
logger.error("", e); | logger.error("", e); | ||||
} | } | ||||
req.setReqStr("hello"); | req.setReqStr("hello"); | ||||
req.setValid(false); | req.setValid(false); | ||||
logger.info("成功 req:" + req.toJson(true)); | 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)); | |||||
} | } | ||||
} | } |
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("测试结束。。。"); | |||||
} | |||||
} |
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)); | |||||
// | |||||
// } | |||||
//} |