|
|
@@ -1,169 +0,0 @@ |
|
|
|
package cn.com.taiji.inss.manager.inst; |
|
|
|
|
|
|
|
import cn.com.taiji.common.manager.net.http.ServiceHandleException; |
|
|
|
import cn.com.taiji.core.entity.dict.basic.CardType; |
|
|
|
import cn.com.taiji.core.manager.cache.RedisCacheManager; |
|
|
|
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.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.inss.manager.cache.RedisWrapManager; |
|
|
|
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.IssueOrderRequset; |
|
|
|
import cn.com.taiji.inss.manager.model.inst.IssueOrderResponse; |
|
|
|
import cn.com.taiji.inss.manager.model.inst.IssueStepNo; |
|
|
|
import cn.com.taiji.inss.manager.tools.InstTools; |
|
|
|
import org.apache.commons.lang3.ObjectUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
@Service |
|
|
|
public class InstCallBackManager extends RedisCacheManager { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IssueOrderinfoRepo orderInfoRepo; |
|
|
|
@Autowired |
|
|
|
private InvwCardDetailsRepo cardDetailsRepo; |
|
|
|
@Autowired |
|
|
|
private InvwObuDetailsRepo obuDetailsRepo; |
|
|
|
@Autowired |
|
|
|
private InvwWarehouseRepo warehouseRepo; |
|
|
|
@Autowired |
|
|
|
private RedisWrapManager redisWrapManager; |
|
|
|
@Autowired |
|
|
|
private IssueCommManager issueCommManager; |
|
|
|
|
|
|
|
public InstCallBackResponse serviceHandle(InstCallBackRequest req) throws ServiceHandleException { |
|
|
|
logger.info("指令回传阶段:{},请求参数{}", req.getStepNo(), req.toJson()); |
|
|
|
switch (IssueStepNo.find(req.getStepNo())) { |
|
|
|
case FIRST: |
|
|
|
// 读取卡信息、进行开卡申请、返回写卡指令 |
|
|
|
return cardIssuingApply(req); |
|
|
|
// case SECOND: |
|
|
|
// // 写卡指令回传,返回寫卡確認信息指令 |
|
|
|
// return cardOrderConfirmReturn(req); |
|
|
|
// case THIRD: |
|
|
|
// // 获取OBU信息,下发OBU发行申请、返回写系统信息 |
|
|
|
// return obuIssueApply(req);//下发writeSystem指令 |
|
|
|
// case FOURTH: |
|
|
|
// // 写系统信息指令回传,返回切换车辆信息文件目录,并获取随机数 |
|
|
|
// return writeSystemCallBack(req); |
|
|
|
// case FIFTH: |
|
|
|
// // 车辆信息文件目录切换成功,查询车辆信息、返回修改车辆信息 |
|
|
|
// return updateVehicleInfo(req);//下发writeVehicleInfo指令 |
|
|
|
// case SIXTH: |
|
|
|
// // 修改车辆信息指令回传,obu发行确认,返回切换根目录指令 |
|
|
|
// return updateVehicleInfoCallback(req); |
|
|
|
// case SEVENTH: |
|
|
|
// // 获取随机数,返回在线激活指令 |
|
|
|
// return onlineActive(req); |
|
|
|
// case EIGHTH: |
|
|
|
// // OBU在线激活指令回传,安装确认,完成激活 |
|
|
|
// return installConfirm(req); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
// private InstCallBackResponse cardOrderConfirmReturn(InstCallBackRequest req) throws ServiceHandleException { |
|
|
|
// // this.validCmdResult(request.getCmdResult(), "开卡申请写卡指令执行失败!"); |
|
|
|
// IssueOrderRequset issueOrder = getIssueOrderVo(req.getTransOrderId()); |
|
|
|
// BeanTools.copyProperties(request, req); |
|
|
|
// req.setCardId(issueOrderVo.getCardId()); |
|
|
|
// req.setCommand(request.getCmd()); |
|
|
|
// req.setCosRecordId(issueOrderVo.getCosRecordId()); |
|
|
|
// req.setResponse(request.getCmdResult()); |
|
|
|
// req.setCosType(1); |
|
|
|
// comm(req, issueOrderVo.getOrderId(), request); |
|
|
|
// String res = null; |
|
|
|
// IssueOrderResponse s = issueCommManager.cardConfirmReturn(issueOrder, 1, req.getCmd()); |
|
|
|
// CardOrderConfirmResponse response = null; |
|
|
|
// try { |
|
|
|
// response = JsonTools.json2Object(s, CardOrderConfirmResponse.class); |
|
|
|
// } catch (IOException e) { |
|
|
|
// throw new ManagerException("写卡指令返回接口结果解析失败"); |
|
|
|
// } |
|
|
|
// IssueCallbackResponseDTO issuingResponse = new IssueCallbackResponseDTO(); |
|
|
|
// issuingResponse.setTransOrderId(request.getTransOrderId()); |
|
|
|
// issuingResponse.setCmdType(CmdType.CARD.value()); |
|
|
|
// issuingResponse.setCmd(response.getCommand()); |
|
|
|
// if (response.getOrderStatus() == COSConstant.COS_INCOMPLETED) { |
|
|
|
// issuingResponse.setStepNo(IssueStepNoEnum.SECOND.getStepNo()); |
|
|
|
// } else { |
|
|
|
// issuingResponse.setStepNo(IssueStepNoEnum.THIRD.getStepNo()); |
|
|
|
// CardConfirmRequest cardConfirmRequestr = new CardConfirmRequest(); |
|
|
|
// BeanTools.copyProperties(request, cardConfirmRequestr);// 调用开卡确认 |
|
|
|
// cardConfirmRequestr.setCosRecordId(issueOrderVo.getCosRecordId()); |
|
|
|
// cardConfirmRequestr.setCardId(issueOrderVo.getCardId()); |
|
|
|
// cardConfirmRequestr.setNetId(issueOrderVo.getNetId()); |
|
|
|
// // cardConfirmRequestr.setPackageNum(Integer.parseInt(issueOrderVo.getPackageNum())); |
|
|
|
// if (Integer.valueOf(1).equals(getCardType(issueOrderVo.getCardId()))) { |
|
|
|
// // 如果是记账卡,默认传111,老系统逻辑 |
|
|
|
// cardConfirmRequestr.setCardType(111); |
|
|
|
// } else { |
|
|
|
// // 如果是储值卡,默认传211,老系统逻辑 |
|
|
|
// cardConfirmRequestr.setCardType(211); |
|
|
|
// } |
|
|
|
// cardConfirmRequestr.setBrand(3); |
|
|
|
// cardConfirmRequestr.setModel("0"); |
|
|
|
// LocalDateTime date = LocalDateTime.now(); |
|
|
|
// String enableTime = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")); |
|
|
|
// String expireTime = date.plusYears(10L).format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")); |
|
|
|
// cardConfirmRequestr.setEnableTime(enableTime); |
|
|
|
// cardConfirmRequestr.setExpireTime(expireTime); |
|
|
|
// CsmsnOrderinfo order = orderInfoRepo.findByOrderNo(issueOrderVo.getOrderId()); |
|
|
|
// cardConfirmRequestr.setPackageNum(order.getProductId()); |
|
|
|
// cardConfirmRequestr.setOrderId(issueOrderVo.getOrderId()); |
|
|
|
// issueCommManager.cardConfirm(cardConfirmRequestr); |
|
|
|
// persistTransaction(ISSUE_CARD_SYNC, issueOrderVo.getOrderId(), "card"); |
|
|
|
// persistTransaction(ISSUE_CARD_UPLOAD, issueOrderVo.getOrderId(), Operation.ADD.name()); |
|
|
|
// issuingResponse.setStepNo(IssueStepNoEnum.THIRD.getStepNo()); |
|
|
|
// issuingResponse.setCmdType(CmdType.OBU.value()); |
|
|
|
// issuingResponse.setCmd(CommConstant.GET_OBU_INFO); |
|
|
|
// } |
|
|
|
// return issuingResponse; |
|
|
|
// } |
|
|
|
|
|
|
|
private InstCallBackResponse cardIssuingApply(InstCallBackRequest req) throws ServiceHandleException { |
|
|
|
// 读取卡信息、进行开卡申请、返回写卡指令 |
|
|
|
IssueOrderRequset issueOrder = getIssueOrderVo(req.getTransOrderId()); |
|
|
|
// 判断指令执行结果 |
|
|
|
String[] cmdRs = InstTools.validCmdResult(req.getCmdResult()); |
|
|
|
if (cmdRs.length < 3) { |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("指令结果长度不正确"); |
|
|
|
} |
|
|
|
// 获取卡号 |
|
|
|
String cardId = cmdRs[2].substring(20, 40); |
|
|
|
// 获取netId |
|
|
|
String netId = cmdRs[2].substring(20, 24); |
|
|
|
issueOrder.setNetId(netId); |
|
|
|
CardType cardType = InstTools.getCardType(cardId); |
|
|
|
issueOrder.setCardType(cardType); |
|
|
|
issueOrder.setEnableTime(LocalDateTime.now()); |
|
|
|
issueOrder.setExpireTime(issueOrder.getEnableTime().plusYears(10)); |
|
|
|
// 1、调用开卡申请接口 |
|
|
|
IssueOrderResponse res = issueCommManager.cardApply(issueOrder); |
|
|
|
issueOrder.setCosRecordId(res.getCosRecordId()); |
|
|
|
issueOrder.setCardId(cardId); |
|
|
|
logger.info("+++++++++++++++++++cosRecordId" + res.getCosRecordId()); |
|
|
|
redisWrapManager.set(MyFinals.ISSUE_KEY + req.getTransOrderId(), issueOrder.toJson(), 300000, TimeUnit.SECONDS); |
|
|
|
return new InstCallBackResponse(IssueStepNo.SECOND.getStepNo(), res.getCommand(), CmdType.CARD.value(), |
|
|
|
req.getTransOrderId()); |
|
|
|
} |
|
|
|
|
|
|
|
private IssueOrderRequset getIssueOrderVo(String transOrderId) throws ServiceHandleException { |
|
|
|
IssueOrderRequset redisData = redisWrapManager.findObj(IssueOrderRequset.class, MyFinals.ISSUE_KEY + transOrderId); |
|
|
|
if (ObjectUtils.isEmpty(redisData)) { |
|
|
|
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未查询到缓存订单信息"); |
|
|
|
} |
|
|
|
return redisData; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |