【BUG修复】延迟填报提交后,提示登录状态过期,或者弹出接口异常

延迟填报功能提交后,提示登录状态过期,如下:
在这里插入图片描述
在这里插入图片描述
修改一番后,提示 后端接口异常,弹出接口异常,

这个BUG困扰了我整整三天的时间!

彻底绝望!

DEBUG也没发现问题(其实是可以发现问题的,我的断点打错了方向,好比第二行就报错,但是我打在了第五行,当然无法发现问题。)

我只知道代码有问题,但是不知道为什么有问题!

最后的最后,我去查看之前写好的代码,看看它为什么可以。

然后我去数据库看了看提交的数据,发现他们的updateBy都是-1.

我又看了看我的代码,顿时恍然大悟。
在这里插入图片描述
看下这个getRealName()方法:

在这里插入图片描述
现在终于知道,它为什么报401。

而在前端的request.js中,有个前端拦截器
在这里插入图片描述
好,至此,我彻底了解了,代码从前到后的报错逻辑,现在该去解决BUG了

SecurityUtils.getLoginUser().getUser().getNickName()方法中,出现了异常,后面的getUser().getNickName()只是获取对象,然后获取属性。

因此是SecurityUtils.getLoginUser()方法,出现了异常,跟进去看看,什么情况。

在这里插入图片描述

DetailsHelper.getUserDetails()这个方法,已经跑到了jar包里,我进去看了一下

在这里插入图片描述
因此,返回的LoginUser是Null

换言之,SecurityUtils.getLoginUser().getUser().getNickName()
相当于 null.getUser().getNickName()

这肯定会报错的,但是它没有抛出 NullPointerException

因为这个异常被捕获了,抛出了一throw new CustomException("获取用户账户异常", HttpStatus.UNAUTHORIZED)

移动端提交的更新人,不能这样获取,实际上,是可以通过微信客户端,提交的工号,这个工号就是PC端的userName,通过这个,是可以获取到本次操作对应的操作人。

但是这样,需要写更多的代码。

我不想写了。

直接把更新人改system,一个固定值,反正客户没要求。

另外发现一个小BUG,就是put方式提交,导致的异常,前端好像不能显示,而是会直接弹出接口异常,并不会提示登录状态过期。

我也懒得去研究,是什么原因导致的了。

直接把put方式,改为post方式,完美解决。

算逑!!!!
在这里插入图片描述

posted @ 2022-04-06 08:02  layman~  阅读(384)  评论(0编辑  收藏  举报