@@ -4,10 +4,13 @@ import cn.com.taiji.common.manager.AbstractManager; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.dict.issue.TransactionBizType; | |||
import cn.com.taiji.core.entity.issue.TransactionStatus; | |||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||
import cn.com.taiji.core.manager.comm.LogManager; | |||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | |||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.issue.TransactionStatusRepo; | |||
import cn.com.taiji.core.repo.jpa.log.InssInterfaceLogRepo; | |||
import cn.com.taiji.inss.manager.cache.RedisWrapManager; | |||
import cn.com.taiji.inss.manager.model.inst.IssueOrderVO; | |||
import com.google.common.collect.Maps; | |||
@@ -21,30 +24,39 @@ import static cn.com.taiji.inss.manager.model.MyFinals.ISSUE_KEY; | |||
import static cn.com.taiji.inss.manager.model.inst.InstConstant.CMD_SUCCESS; | |||
public abstract class AbstractCallBackManager extends AbstractManager { | |||
public abstract class AbstractCallBackManager extends AbstractManager implements LogManager<InstCallBackRequest, InstCallBackResponse, InssInterfaceLog> { | |||
@Autowired | |||
private RedisWrapManager redisWrapManager; | |||
@Autowired | |||
private TransactionStatusRepo transactionStatusRepo; | |||
@Autowired | |||
private InssInterfaceLogRepo logRepo; | |||
protected Map<Integer, AbstractCommandHandler> cmdHandlers = Maps.newHashMap(); | |||
public final InstCallBackResponse serviceHandle(InstCallBackRequest request) throws ServiceHandleException { | |||
//读缓存 | |||
IssueOrderVO vo = readCache(request.getTransOrderId()); | |||
//业务校验 | |||
valid(request, vo); | |||
//上一步指令执行成功保存数据 | |||
saveData(vo); | |||
//初始化flag | |||
vo.initFlag(); | |||
//业务处理 | |||
CommandHandler cmdHandler = cmdHandlers.get(request.getStepNo()); | |||
if (cmdHandler == null) | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未找到处理模块,请联系管理员"); | |||
InstCallBackResponse response = cmdHandler.doHandle(request, vo); | |||
//写缓存 | |||
writeCache(cmdHandler.getOrderVo()); | |||
return response.setStepNo(nextStep(vo, request)).setTransOrderId(request.getTransOrderId()); | |||
try { | |||
long begin = System.currentTimeMillis(); | |||
//读缓存 | |||
IssueOrderVO vo = readCache(request.getTransOrderId()); | |||
//业务校验 | |||
valid(request, vo); | |||
//上一步指令执行成功保存数据 | |||
saveData(vo); | |||
//初始化flag | |||
vo.initFlag(); | |||
//业务处理 | |||
CommandHandler cmdHandler = cmdHandlers.get(request.getStepNo()); | |||
if (cmdHandler == null) | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未找到处理模块,请联系管理员"); | |||
InstCallBackResponse response = cmdHandler.doHandle(request, vo); | |||
//写缓存 | |||
writeCache(cmdHandler.getOrderVo()); | |||
response.setStepNo(nextStep(vo, request)).setTransOrderId(request.getTransOrderId()); | |||
return onSuccess(request, response, InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||
} catch (ServiceHandleException e) { | |||
throw exception(request, InssInterfaceLog.class, e.getMessage()); | |||
} | |||
} | |||
abstract void validInternal(InstCallBackRequest request, IssueOrderVO vo) throws ServiceHandleException; | |||
@@ -91,4 +103,9 @@ public abstract class AbstractCallBackManager extends AbstractManager { | |||
tx.setInfo(info); | |||
transactionStatusRepo.persist(tx); | |||
} | |||
@Override | |||
public void doSaveLog(InstCallBackRequest request, InstCallBackResponse response, InssInterfaceLog log) { | |||
logRepo.persist(log); | |||
} | |||
} |
@@ -11,7 +11,9 @@ import cn.com.taiji.core.entity.invw.InvwCardDetails; | |||
import cn.com.taiji.core.entity.invw.InvwObuDetails; | |||
import cn.com.taiji.core.entity.invw.InvwWarehouse; | |||
import cn.com.taiji.core.entity.issue.IssueOrderinfo; | |||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||
import cn.com.taiji.core.manager.cache.RedisCacheManager; | |||
import cn.com.taiji.core.manager.comm.LogManager; | |||
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | |||
import cn.com.taiji.core.model.comm.protocol.ats.notice.AtsChannelNoticeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstApplyRequest; | |||
@@ -21,6 +23,7 @@ import cn.com.taiji.core.repo.jpa.invw.InvwCardDetailsRepo; | |||
import cn.com.taiji.core.repo.jpa.invw.InvwObuDetailsRepo; | |||
import cn.com.taiji.core.repo.jpa.invw.InvwWarehouseRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo; | |||
import cn.com.taiji.core.repo.jpa.log.InssInterfaceLogRepo; | |||
import cn.com.taiji.inss.manager.model.MyFinals; | |||
import cn.com.taiji.inss.manager.model.inst.CmdType; | |||
import cn.com.taiji.inss.manager.model.inst.InstConstant; | |||
@@ -32,7 +35,7 @@ import java.util.UUID; | |||
import java.util.concurrent.TimeUnit; | |||
@Service | |||
public class InstApplyManager extends RedisCacheManager { | |||
public class InstApplyManager extends RedisCacheManager implements LogManager<InstApplyRequest, InstApplyResponse, InssInterfaceLog> { | |||
@Autowired | |||
private IssueOrderinfoRepo orderInfoRepo; | |||
@@ -43,34 +46,41 @@ public class InstApplyManager extends RedisCacheManager { | |||
@Autowired | |||
private InvwWarehouseRepo warehouseRepo; | |||
@Autowired | |||
private InssInterfaceLogRepo logRepo; | |||
@Autowired | |||
private QdCallUtil qdCallUtil; | |||
public InstApplyResponse serviceHandle(InstApplyRequest req) throws ServiceHandleException { | |||
IssueOrderinfo orderInfo = orderInfoRepo.findByOrderNo(req.getOrderNo()); | |||
if (orderInfo == null) { | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单不存在"); | |||
} | |||
// 业务校验 | |||
businessValidate(orderInfo, req); | |||
public InstApplyResponse serviceHandle(InstApplyRequest request) throws ServiceHandleException { | |||
try { | |||
long begin = System.currentTimeMillis(); | |||
IssueOrderinfo orderInfo = orderInfoRepo.findByOrderNo(request.getOrderNo()); | |||
if (orderInfo == null) { | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单不存在"); | |||
} | |||
// 业务校验 | |||
businessValidate(orderInfo, request); | |||
// 指令回传所需信息加入缓存.有效期 20 秒 | |||
String transOrderId = UUID.randomUUID().toString().replace("-", ""); | |||
IssueOrderVO vo = new IssueOrderVO(transOrderId, orderInfo.getVehicleId(), orderInfo.getCustomerId(), | |||
orderInfo.getOrderNo(), orderInfo.getOrderSource(), orderInfo.getProductId()); | |||
vo.setCardId(req.getCardId()); | |||
vo.setObuId(req.getObuId()); | |||
vo.setCardVersion(req.getCardVersion()); | |||
vo.setObuVersion(req.getObuVersion()); | |||
redisManager.set(MyFinals.ISSUE_KEY + transOrderId, vo.toJson(), 300000, TimeUnit.SECONDS); | |||
// 指令回传所需信息加入缓存.有效期 20 秒 | |||
String transOrderId = UUID.randomUUID().toString().replace("-", ""); | |||
IssueOrderVO vo = new IssueOrderVO(transOrderId, orderInfo.getVehicleId(), orderInfo.getCustomerId(), | |||
orderInfo.getOrderNo(), orderInfo.getOrderSource(), orderInfo.getProductId()); | |||
vo.setCardId(request.getCardId()); | |||
vo.setObuId(request.getObuId()); | |||
vo.setCardVersion(request.getCardVersion()); | |||
vo.setObuVersion(request.getObuVersion()); | |||
redisManager.set(MyFinals.ISSUE_KEY + transOrderId, vo.toJson(), 300000, TimeUnit.SECONDS); | |||
if (vo.getCardStatus() == CardStatus.ZC) { | |||
return new InstApplyResponse(9, InstConstant.GET_CARD_CMD, | |||
CmdType.CARD.value(), transOrderId); | |||
} else { | |||
return new InstApplyResponse(1, InstConstant.HOME_DIRECTORY, | |||
CmdType.CARD.value(), transOrderId); | |||
if (vo.getCardStatus() == CardStatus.ZC) { | |||
return onSuccess(request, new InstApplyResponse(9, InstConstant.GET_CARD_CMD, | |||
CmdType.CARD.value(), transOrderId), InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||
} else { | |||
return onSuccess(request, new InstApplyResponse(1, InstConstant.HOME_DIRECTORY, | |||
CmdType.CARD.value(), transOrderId), InssInterfaceLog.class, System.currentTimeMillis() - begin); | |||
} | |||
} catch (ServiceHandleException e) { | |||
throw exception(request, InssInterfaceLog.class, e.getMessage()); | |||
} | |||
} | |||
private void businessValidate(IssueOrderinfo orderInfo, InstApplyRequest req) throws ServiceHandleException { | |||
@@ -120,4 +130,8 @@ public class InstApplyManager extends RedisCacheManager { | |||
} | |||
} | |||
@Override | |||
public void doSaveLog(InstApplyRequest request, InstApplyResponse response, InssInterfaceLog log) { | |||
logRepo.persist(log); | |||
} | |||
} |
@@ -3,7 +3,6 @@ package cn.com.taiji.inss.manager.inst; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.basic.QtkCustomerInfo; | |||
import cn.com.taiji.core.entity.dict.issue.ExcuteByVfjStep; | |||
import cn.com.taiji.core.entity.issue.VfjCOSRecord; | |||
import cn.com.taiji.core.model.comm.COSConstant; | |||
import cn.com.taiji.core.model.comm.protocol.FormatException; |
@@ -11,8 +11,10 @@ import cn.com.taiji.core.entity.invw.InvwCardDetails; | |||
import cn.com.taiji.core.entity.invw.InvwObuDetails; | |||
import cn.com.taiji.core.entity.issue.IssueOrderinfo; | |||
import cn.com.taiji.core.entity.issue.IssueProduct; | |||
import cn.com.taiji.core.entity.log.InssInterfaceLog; | |||
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | |||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackRequest; | |||
import cn.com.taiji.core.model.comm.protocol.inss.inst.InstCallBackResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.basic.*; | |||
import cn.com.taiji.core.repo.jpa.invw.InvwCardDetailsRepo; | |||
@@ -388,4 +390,6 @@ public class InstOnlineActiveMananger extends AbstractCallBackManager { | |||
} | |||
} | |||
} |