遇到的问题(实习)

问题描述:在开完蓝票进行退款后系统应自动回收蓝票并开冲红发票

退款的流程:

  1. 加载子订单信息
  2. 子订单进行验证与冻结
  3. 判断冻结结果,如果结果失败的话拒绝批量退款申请并取消冻结,如果成功进行下一步
  4. 审核批退款(由管理员手动操作同意或者拒绝),如果拒绝则取消冻结,如果同意则进入下一步
  5. 进行回收资源,如果回收失败则重试,如果回收成功更新回收状态
  6. 判断批量退款模式,如果是线上支付,需由管理员手动操作是否允许退款(如果是则退款后进入下一步,否则直接进行下一步),如果是线下支付,确认线下批量退款后结束
  7. 判断批审核结果,如果有符合退款条件则处理批量退款,否则直接结束
  8. 如果处理批量退款成功则进行发票冲红处理,若失败则重新尝试批量退款
    • 发票冲红是通过事件处理,使用MQ将数据存放到ES上,查询数据时通过ES查询。

遇到的问题:

  1. 申请退款时:has a non-private no-argument constructor

    解决方案:

    通过k8s日志查看定位出错误位置与信息

    错误原因是没有构造器,因为内部类并没有声明是static,因此构造器无法被其他类所访问,导致错误。

  2. 批次退款申请成功,但无法开出冲红发票:

    排查流程:

    1. zeebe上查看确保流程全部走完。
    2. 控制台查看日志,是否出现错误(无),查询数据库并未发现冲红发票的数据。
    3. 使用Remote进行断点调试,发现数据库中并没有查询到需要冲红的发票(定位到查询参数问题)。
    4. 发现查询参数的一个字段写死;导致未能查询到需要冲红的发票。
    5. 将写死的字段改为空后,数据库出现冲红发票数据,但页面展示中并没有冲红数据(因此出现问题的地方只会在MQ发送事件或者ES)。
    6. 打开RocketMQ的控制台中,确认MQ已经发送,并且已经被消费。
    7. 有了报错日志就可以定位到错误的位置(当时打开k8s控制台也并没有报出错误,其实应该会报错的,但由于MQ消费到了其他机子上并未消费到开发环境的机子中,没有获得报错日志)。如果没有日志可以通过MQ重发,在消费者消费事件中调试。
    8. 最后是因按 批量退款订单编号查找批量退款订单的方法 传入参数时,使用的是订单号传入,因为导致没有查找到数据,最后需要返回一个int类型的值,导致的空指针异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值