当前位置: 首页 > wzjs >正文

福州网站建设思企网站策划案例

福州网站建设思企,网站策划案例,网站建设成本核算模板,苏州百度seo关键词优化一、网络异常重试逻辑编写 如果在对接供应商的过程中出现了网络异常,我们需要做一个补偿机制,在任务类型枚举类:TaskTypeEnum中有一种业务状态码是针对远程调用失败的 步骤一:在对接供应商的方法:SupplierServiceImp…

一、网络异常重试逻辑编写

如果在对接供应商的过程中出现了网络异常,我们需要做一个补偿机制,在任务类型枚举类:TaskTypeEnum中有一种业务状态码是针对远程调用失败的

步骤一:在对接供应商的方法:SupplierServiceImpl类中的recharge方法中,对调用供应商的代码块加上try{}catch{},捕获到异常后,添加重试任务,任务类型枚举为:TaskTypeEnum.REMOTEERROR,业务状态码为:StatusCode.REMOTEERROR

@Override
public void recharge(RechargeRequest rechargeRequest) {//.......................前面的代码省略Result<RechargeResponse> result = null;try {result = doDispatchSupplier(rechargeRequest);} catch (Exception e) {log.error("recharge exception ,{}",e.getMessage());//添加远程调用重试任务rechargeRequest.setErrorCode(StatusCode.REMOTEERROR);supplierTask.addRetryTask(rechargeRequest);return;}if(result !=null){//判断成功还是失败if(result.getCode() == StatusCode.OK){log.info("下单成功,等待充值处理回调!");//特别注意此时订单状态还不能修改为充值成功-----供应商回调之后才能修改为成功updateTrade(rechargeRequest.getOrderNo(),OrderStatusEnum.UNAFFIRM.getCode());//充值处理中等待确认return;}else {//失败就分好几种:余额不足轮转 下单失败重试等if(result.getCode() == StatusCode.BALANCE_NOT_ENOUGH){//模拟余额不足 轮转--到极速/* rechargeRequest.setSupply(Constants.jisuapi);rechargeRequest.setRepeat(0);rechargeRequest.setErrorCode(StatusCode.BALANCE_NOT_ENOUGH);*///将我们余额不足的供应商放入reids 排除集合中cacheService.sAdd(Constants.exclude_supplier,rechargeRequest.getSupply());String nextSupply = nextSupply();System.out.println("轮转到新的供应商为:"+nextSupply);if(nextSupply !=null){rechargeRequest.setSupply(nextSupply);rechargeRequest.setRepeat(0);rechargeRequest.setErrorCode(StatusCode.BALANCE_NOT_ENOUGH);}else {//没有供应商了updateTrade(rechargeRequest.getOrderNo(),OrderStatusEnum.FAIL.getCode());return;}}else if(result.getCode() == StatusCode.ORDER_REQ_FAILED) {//重试逻辑的编写---添加重试任务rechargeRequest.setErrorCode(StatusCode.ORDER_REQ_FAILED);}supplierTask.addRetryTask(rechargeRequest);}}
}

步骤二:在供应商任务接口SupplierTask中添加远程调用异常重试方法:rechargeException

 /*** 远程调用异常重试*/public void rechargeException();

步骤三:实现远程调用重试方法

@Override
@Scheduled(fixedRate = 1000)
public void rechargeException() {retry(TaskTypeEnum.REMOTEERROR);
}

步骤四:测试:除了chongba_recharge_mock不启动之外,其他都启动,进行话费充值,模拟远程调用失败场景。

二、供应商话费充值成功逻辑编写

对接调用成功后我们需要将订单状态改为处理中,一段时间后供应商会回调我们系统,我们需要做的就是更改订单状态为充值成功。

步骤一:模拟对接极速成功的情况,在SupplierServiceImpl类中的方法doPostJisu(RechargeRequest rechargeRequest)中,模拟极速返回成功

//map.add("req_status", ""+StatusCode.ERROR);
map.add("req_status", ""+StatusCode.OK);

步骤二:对接下单方法: recharge(RechargeRequest rechargeRequest)逻辑修改,添加对接成功的判断,目前都是失败的情况

判断对接返回的Result结果中的业务状态码,如果是成功的就对接订单修改订单状态为处理中,否则就是目前的一些异常逻辑

@Override
public void recharge(RechargeRequest rechargeRequest) {//.................前面的省略Result<RechargeResponse> result = null;try {result = doDispatchSupplier(rechargeRequest);} catch (Exception e) {log.error("recharge exception ,{}",e.getMessage());//添加远程调用重试任务rechargeRequest.setErrorCode(StatusCode.REMOTEERROR);supplierTask.addRetryTask(rechargeRequest);return;}if(result !=null){//判断成功还是失败if(result.getCode() == StatusCode.OK){log.info("下单成功,等待充值处理回调!");//特别注意此时订单状态还不能修改为充值成功-----供应商回调之后才能修改为成功updateTrade(rechargeRequest.getOrderNo(),OrderStatusEnum.UNAFFIRM.getCode());//充值处理中等待确认return;}else {//失败就分好几种:余额不足轮转 下单失败重试等if(result.getCode() == StatusCode.BALANCE_NOT_ENOUGH){//模拟余额不足 轮转--到极速/* rechargeRequest.setSupply(Constants.jisuapi);rechargeRequest.setRepeat(0);rechargeRequest.setErrorCode(StatusCode.BALANCE_NOT_ENOUGH);*///将我们余额不足的供应商放入reids 排除集合中cacheService.sAdd(Constants.exclude_supplier,rechargeRequest.getSupply());String nextSupply = nextSupply();System.out.println("轮转到新的供应商为:"+nextSupply);if(nextSupply !=null){rechargeRequest.setSupply(nextSupply);rechargeRequest.setRepeat(0);rechargeRequest.setErrorCode(StatusCode.BALANCE_NOT_ENOUGH);}else {//没有供应商了updateTrade(rechargeRequest.getOrderNo(),OrderStatusEnum.FAIL.getCode());return;}}else if(result.getCode() == StatusCode.ORDER_REQ_FAILED) {//重试逻辑的编写---添加重试任务rechargeRequest.setErrorCode(StatusCode.ORDER_REQ_FAILED);}supplierTask.addRetryTask(rechargeRequest);}}
}

步骤三:成功后极速平台会进行一个回调,在chongba_recharge_mock模块中的MockJisuRechargeController中的add方法,回调充吧系统,回调方法在该模块下的BaseController中:rechargeNotify

实际业务中是充吧系统在供应商平台进行配置,回调地址为:
notify-url: http://127.0.0.1:99/order/notify

需要在chongba_recharge_supplier模块的RechargeNotifyController类中补全接收回调的方法,在实际业务中是调用订单的服务处理订单状态。

@Autowired
protected OrderTradeMapper orderTradeMapper;@RequestMapping(value = "/order/notify")
public String notify(@RequestBody String result) {JSONObject jsonObject = (JSONObject) JSON.parse(result);String orderNo= (String) jsonObject.get("orderNo");int status= Integer.parseInt(jsonObject.get("status").toString());log.info("充值回调成功修改订单{}的状态为{}",orderNo,status);updateTrade(orderNo, status);return "sucess";
}private void updateTrade(String  orderNo, int orderStatus) {//修改订单状态QueryWrapper<OrderTrade> queryWrapper = new QueryWrapper<>();queryWrapper.eq("order_no", orderNo);OrderTrade orderTrade = orderTradeMapper.selectOne(queryWrapper);if(orderTrade!=null) {orderTrade.setOrderStatus(orderStatus);orderTradeMapper.update(orderTrade, queryWrapper);}
}

步骤四:测试

启动所有工程,进行话费充值业务,充值成功后进入订单列表,查看订单状态,因为目前的逻辑是供应商5秒后回调我们系统,所以5秒后刷新一下订单列表页面,查看订单状态已改变。


文章转载自:

http://fMPm3ecw.qnkqk.cn
http://Mpq3xWQR.qnkqk.cn
http://1ATrLQH6.qnkqk.cn
http://kZ33JPkJ.qnkqk.cn
http://dKD2VHP6.qnkqk.cn
http://Bb3W0Q8m.qnkqk.cn
http://1TFsXaec.qnkqk.cn
http://jqgvFndN.qnkqk.cn
http://A3FYmq1k.qnkqk.cn
http://sfonC84O.qnkqk.cn
http://VVYbiCm3.qnkqk.cn
http://Ksc0X86B.qnkqk.cn
http://VChjLzMq.qnkqk.cn
http://k6wP0OwW.qnkqk.cn
http://SLTYCrZU.qnkqk.cn
http://ESJMJYxG.qnkqk.cn
http://A5y85YN2.qnkqk.cn
http://gsnKsiu4.qnkqk.cn
http://i7lOC2yp.qnkqk.cn
http://8mRo1CRb.qnkqk.cn
http://dsfSi7fn.qnkqk.cn
http://WB24UUJg.qnkqk.cn
http://5uO6NhiA.qnkqk.cn
http://o4WQdbkJ.qnkqk.cn
http://kWfIxScy.qnkqk.cn
http://l4dYsIQe.qnkqk.cn
http://U4TkUZVV.qnkqk.cn
http://aww945Gb.qnkqk.cn
http://uDVp78gL.qnkqk.cn
http://gEwIXHyY.qnkqk.cn
http://www.dtcms.com/wzjs/694422.html

相关文章:

  • 广州医院网站建设广州住房和城乡建设部网站
  • 新网站先做外链还是内容网上商城怎样推广
  • 小城镇建设官方网站个人网页设计说明500字
  • 上海网站建设升级兰州网站seo优化
  • 怎样设网站设计师之家
  • 免费开店的平台有哪些谷歌优化seo
  • 找人做网站要准备什么软件企业广告平面设计多少钱
  • 旅游网站ppt应做的内容怎样将自己做的网页加入网站
  • 免费网页游戏网沈阳seo排名公司
  • 什么值得买 网站开发粮油移动端网页设计素材
  • 手机网站适配装修公司加盟费多少
  • 理财网站免费建设企业融资风险及其防范措施
  • 域名备案期间网站织梦dedecms绿色led照明公司企业网站模板 下载
  • 做一个商城网站社交信息共享网站开发外包
  • 二级网站怎么建设潍坊最早做网站的公司
  • 郑州网站建设 天强科技徐州市贾汪区建设局网站
  • 做资讯的网站社区推广方法有哪些
  • 江苏宏远建设集团网站北京网站建设培训
  • 下载吧网站整站源码龙华网站建设招商
  • 自己建网站服务器北海 网站制作工
  • 鄢陵网站建设中国科技公司100强
  • 上国外网站用什么dns张家港网站 设计制作
  • 珠海服务好的网站建设网站建站的基本步骤
  • 东莞建网站公司动徐州网站建设托管
  • 网站建设php诸葛企业网站建设公司
  • 网站图片太多怎么办网页代码编辑器有哪些软件
  • 新闻类网站开发多久大型网站开发流程
  • 网站内部seo顺德营销型网站一站式服务哪家好
  • 网站开发项目意义wordpress优化访问速度
  • 图片素材网站哪个最多公司开发网站