• 在线问题反馈模块实战(十五)​:实现在线更新反馈状态功能


    👨‍🎓作者:bug菌

    ✏️博客:CSDN掘金

    💌公众号:猿圈奇妙屋

    🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。

    🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

    一、概述🔥

           接下来的这几期,bug菌想跟大家分享一下自己昨天刚接到一个临时的需求,热乎着呢,想分享一下自己是如何面对临时需求并制定整个开发周期,其中包括从梳理业务到创建业务表再到实现业务逻辑形成闭环再到与前端对接,其中会穿插一些业务拓展及功能性拓展,这一条龙流程在线与大家一起见证,分享给刚入门的小伙伴,希望对你们有所帮助。

    环境说明:idea2019.3 + springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8

           若小伙伴们在批阅文章的过程中觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐️+关注👨‍🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻‍♀️,创作不停💕,加油☘️ 

    二、正文🔥

            说到这期,我是带着一丝感伤来总结的,为什么呢?因为更这个模块快要完结了,剩下的内容屈指可数,所以我很舍不得。但是总会有说告别的一天,只是这一期的结束,并不是说我以后都不更新了,所以没关系啦。

            对于这一整期的模块内容总结成一期一期的文章,很多小伙伴都会问我,我写它们的目的是为何,平台会给你稿费还是啥?其实没有,单纯是自己想写且乐意写。写文章,其实讲究很多的,也是一件不简单的事,坚持就更难了,所谓的难,难在你要花心思写文章,对于自己写的东西,你自己能理解这不行, 你还要用通俗易懂的文字描述清楚并且能让你们都能看懂,这才可以,要不然我贴几行代码,写几行文字就称一片文章了?这不是在写文章这是在自我写笔记。

            文章与笔记二者性质还是相差比较大的,所以就是得热衷它才行。相比以前的自己,下完班就是约三五好友一起开黑,打王者,吃鸡,然后每天都是如此,玩到十一二点就睡觉,第二天起早就三点一线式的去上班然后下班,其实这种生活真的很枯燥,如果不能在生活中找到乐子,生活就犹如一谭死水,所以我为什么不求回报的写文章,那是因为我能感受到我写它给我带来的乐趣,小伙伴的私聊感慨,文章的好评收藏,粉丝读者数的增加并且平台的激励,给予更多的文章曝光率,相比这些,那下班后的吃鸡王者就显得有些浪费时间的体现了。

            所以趁现在,如果你也跟以前的我很像,那就一起来,一起写文章。所谓众人拾材火焰高,如果你感兴趣,请速来与我取得联系,我们 一起下完班一起学习技术,一起总结文章,一起交流心得。只要你愿意,我就在前面等你,我个人微信,从我公众号[猿圈奇妙屋],可以获取,快来吧,我这里贴出来,文章会不让通过审核的。

            我也会帮助到有需要的大家, 把自己这几年的写作心得和盘托出,绝不保留,我只希望我能在这条路上遇到更多志同道合的挚友,仅此而已!

            而对于这一期,我要给带着大家一起要做的事是,实现在线更新反馈状态。场景:反馈人进行在线问题反馈,而后台不是第一时间就给与答复,我们肯定也要经过一定的商讨之后才能给与反馈,比如线上bug,得去定位,新增需求,优化问题等都需要时间进行线下处理实现,但是对于反馈人而言,我们要第一时间给予反馈,表示我们这边已在受理告知,所以这个需求就这么诞生了。

            所以,需求大家都了解清楚了?其实也简单,不难,所以我还是从接口请求定义开始说起咯,虽然我每一期都老调重弹,但是都避免不了会有新的小伙伴临时插入。

            那咱就废话不多说,直接干正事儿啦。

    三、如何代码实现在线修改反馈状态功能🔥

    1️⃣定义Controller请求

            定义一个接口请求,第一分析入参,第二定义请求方式,第三确定返回类型,第四创建接口方法,这按步骤来处理,就不会显得忙手忙脚。

            参数定位,应该就两个参数,参1:问题记录主键id。参2:更替后的反馈状态。比如:1:删除;2:已解决;3:不予解决;5:问题关闭。对于接口请求方式,直接GET即可。接下来,我们就直接来定义接口请求了啊。

    代码如下:

    1. @GetMapping("/update-by-type")
    2. @SysLog(logType = LogTypeEnum.LOG_TYPE_DELETE)
    3. @ApiOperation(value = "根据type修改问题状态", notes = "根据type修改问题状态")
    4. public ResultResponse updateByType(@ApiParam("要删除的这条数据id") @RequestParam("id") String id,
    5. @ApiParam("操作类型,1:删除;2:已解决;3:不予解决;5:问题关闭") @RequestParam("type") Integer type) {
    6. return userQuestionsService.updateByType(id, type);
    7. }

            对于如上定义大家都没啥问题吧?有问题的要及时说出来哈。评论区或者私信我都可。 

    2️⃣定义接口方法updateByType()

            对于定义该updateByType()接口,返回类型是个布尔值,这没啥疑问吧。

    ResultResponse updateByType(String id, Integer type);

    3️⃣实现updateByType()方法

            接下来就是实现该接口方法的核心逻辑了。唯一一点需要注意的就是,对于修改方法,如果Entity为空,也强行update,你们猜会发生什么?

    1. @Override
    2. public ResultResponse updateByType(String id, Integer type) {
    3. UserQuestionsEntity entity = this.getById(id);
    4. if (Objects.isNull(entity)) {
    5. return new ResultResponse<>(ErrorCodeEnum.DATA_NOT_EXIST);
    6. }
    7. entity.setStatus(type);
    8. return new ResultResponse<>(this.updateById(entity));
    9. }

            其实,准确来说,应该还要记录一下更新人,更新时间,所以这里我们就再补充一下,我们可以从token处获取当前登录人的登录信息,由于我是封装成了一个静态方法,所以这里我就直接获取,然后手动赋值即可.

    SysUserEntity user = SpringServletContextUtils.getUser();

    4️⃣接口测试

            接下来,我给大家演示一下,倘若指定一个不存在的id,然后将该查询出来的Entity通过update去执行,看看会发生什么?我就将该判空先注释掉。

             大家请看,是不是报错了,空指针吧。所以一般这种更新方法,你们都要多留个心眼,倘若Entity为null,执行update()方法肯定是会报错的。所以我把判空放开,直接返回自定义msg,这样就能有效杜绝更新报错了。大家请看:

             如下我是找了条存在的记录进行更新,试试。

             我来执行下接口,试试,看看该数据是否会被成功更新?

            很明显是执行成功了吧。我们再来执行一下,上述sql,验证一下。

            确实是更新成功了吧。

    5️⃣总结

            对于越简单的逻辑接口而言,我们都要百分百用心写。

     ... ...

            好啦,以上就是这期的所有内容啦,你们学废了么?如果对你有所帮助,还请不要忘记给bug菌[三连支持]哟。如果想获得更多的学习资源或者想和更多的技术爱好者一起交流,可以关注我的公众号『猿圈奇妙屋』,后台回复关键词领取学习资料、大厂面经、面试模板等海量资源,就等你来拿。

    四、往期热文推荐🔥

            对于问题反馈模块实战开发,我完整的梳理了每一期的教学及链接地址,仅供参考:希望能对你们有所帮助。

    • 在线问题反馈模块实战(一):梳理业务需求并创建数据库表
    • 在线问题反馈模块实战(二):封装代码自动生成类文件器
    • 在线问题反馈模块实战(三):自动生成所有Controller、Service、Mapper等文件
    • 在线问题反馈模块实战(四):封装通用字段类
    • 在线问题反馈模块实战(五):实现对通用字段内容自动填充功能
    • 在线问题反馈模块实战(六):接口文档定义
    • 在线问题反馈模块实战(七):安装部署swagger2
    • ​在线问题反馈模块实战(八)​:实现图片上传功能(上)
    • ​在线问题反馈模块实战(九)​:实现图片上传功能(下)
    • ​在线问题反馈模块实战(十)​:实现图片预览功能
    • ​在线问题反馈模块实战(十一)​:实现图片下载功能
    • ​在线问题反馈模块实战(十二)​:实现图片删除功能
    • ​在线问题反馈模块实战(十三)​:实现多参数分页查询列表
    • 在线问题反馈模块实战(十四):实现在线答疑功能
    • 在线问题反馈模块实战(十五)​:实现在线更新反馈状态功能
    • 在线问题反馈模块实战(十六)​:实现查详情功能
    • 在线问题反馈模块实战(十七):实现excel模板在线下载功能
    • 在线问题反馈模块实战(十八):实现excel台账文件记录批量导入功能
    • 在线问题反馈模块实战(十九):实现数据批量导出到excel文件中功能
    • 在线问题反馈模块实战(二十):完结篇

            如上是整整二十期内容,每一期都是干货,对于一个模块的开发,如何一点一滴打造并测试部署上线,我再说一遍,这不是演习,是实战!是实战!是实战!

            若你们觉得只是需要了解其中某个知识点或者业务的话,也不反对,你就选择其中的几期进行学习就好,反正都已经完结啦;我只希望你们能有所收获,有所成长,也就不枉我苦心每天下班后给大家总结更新。

    五、文末🔥

            如果你还想要学习更多,小伙伴们大可关注bug菌专门为你们创建的专栏《springboot零基础入门教学》,都是我一手打下的江山,持续更新中,希望能帮助到更多小伙伴们。

           我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!

            最后送大家两句我很喜欢的话,与诸君共勉!


    ☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以开始。

    🍀你能从现在开始改变,也可以一成不变;这件事,没有规矩可言,你可以活出最精彩的自己。


    💌如果文章对您有所帮助,就请留下您的吧!(#^.^#);

    💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;

    💗如果对文章有任何疑问,还请文末留言或者加群吧【QQ交流群:708072830】;

    💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

    💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。

  • 相关阅读:
    使用 Aeraki Mesh 实现零代码侵入的 Dubbo 服务调用跟踪
    安卓系统USB产品芯片使用推荐
    为什么需要对jvm进行优化,jvm运行参数之标准参数
    js基础,元素获取,事件触发,随机点名
    XUnit数据共享与并行测试
    WiFi模块引领零售数字化转型:智能零售体验再定义
    基于注解的DI
    ASEMI肖特基二极管MBR20100CT参数,MBR20100CT大小
    R 语言 |普通矩阵怎么保存为稀疏矩阵的3列(i, j, x)格式?
    OJ练习第165题——修车的最少时间
  • 原文地址:https://blog.csdn.net/weixin_43970743/article/details/125247209