• 在线问题反馈模块实战(二十一):完结篇


    👨‍🎓作者:bug菌

    ✏️博客:CSDN掘金

    💌公众号:猿圈奇妙屋

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

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

    一、前言🔥

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

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

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

    二、概述🔥

            非常的难以接受如今的这个结果,为什么呢?因为这个模块开发就此告一段落啦。说起来有跟着我纯手做这个项目的小伙伴,应该也会很不舍吧,突然在下一期,就看不到我这么系统性的教学文章了,说实在的,每一期都是围绕着业务点来展开论述并从代码逻辑角度上零隐藏代码教学;对于基础入门或者刚步入公司拧螺丝的小伙伴而言,这一模块化的系列文章,就显得非常有引导及训练意义了。

            据私下了解到,有很多小伙伴初入公司,开发组并不会给到你多少模块化的业务开发的,于是你每天要么就是碎片化的按需求文档写点简单的业务接口,要么就是改点接口bug、或者做点运维相关的杂活,对于这样,给人的成长与锻炼都是非常缓慢的,但又不得是小白的必经之路,这条路虽然艰辛,但我作为几年职场老人,其实想说,跟对人,能走不少弯路。

            所以对于初入职场的小伙伴而言,你们要做的就是让自己能在职场中快速成长起来,找到一个能跟随学习的人,多做事,少说话。即,我总结出来的这套业务模块开发教程,实际也就是为了帮助给到更多职场新人有锻炼的机会。

            我对该模块,也是实打实的在我的项目上切实存在且由我一人负责开发,虽然对于我在职场摸爬滚打了这么些年,早已是玩的透透的了。所以今天输出成教学文,我就是不想你们跟我一样,走了许多弯路,浪费了大好时光。

            如今的互联网行业,卷的不行,如今的高校大学生,培训机构等都是一等一的勤奋刻苦,出来都是顶一个在职场摸爬滚打的一到三年的职场者,谁不努力这个行业就淘汰谁!这就是现实,谁技术好就要谁,说到底这个行业就是吃硬实力的,你不够强,那你就等着被优化。

            上海这一长达几个月的疫情,很多中小型公司由于扛不住经济压力,裁员消息层出不穷,或者工资打折,有发三折的有发五折的,上海由此就出现了巨多无业游民,我的同事也是由于这一出目前已在面试找工作,听他说,很多公司都不招了,或者就是只完成kpi,走到hr面被随便找个理由就被pass了,这些都找谁理去。

            所以啊,对就业形式就越发的严峻,我们也要做好应对,迟早也会轮到自己头上,所以做好心理准备永远不会有错,我的同事们就是个前车之鉴,吸取教训,做好应对准备就好。

            对于如今的就业压力,很多的其他行业人员也纷纷半路出家,转到互联网行业,毕竟所谓的门槛不高且薪资感人,实现财富自由靠实力很容易实现。

            所以对于你们而言,遇对人很重要,如果没遇到的,那就暂时由我来当你们的引路人吧。

    三、往期文章梳理🔥

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

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

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

    四、亮眼代码展示🔥

    1️⃣片段1

    1. // 代码生成器
    2. AutoGenerator mpg = new AutoGenerator();
    3. // 全局配置
    4. GlobalConfig gc = new GlobalConfig();
    5. String projectPath = System.getProperty("user.dir");
    6. gc.setOutputDir(projectPath + "/src/main/java");
    7. gc.setAuthor("luoyong");
    8. gc.setOpen(false);
    9. gc.setFileOverride(true);// 是否覆盖同名文件,默认是false
    10. gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
    11. gc.setEnableCache(false);// XML 二级缓存
    12. gc.setBaseResultMap(true);// XML ResultMap 生成基本的resultmap
    13. gc.setBaseColumnList(true);// XML columList 生成基本的sql片段
    14. //实体属性 Swagger2 注解
    15. gc.setSwagger2(true);
    16. mpg.setGlobalConfig(gc);

    2️⃣片段2

    1. /**
    2. * 创建者 填充策略为插入自动填充
    3. */
    4. @ApiModelProperty(value = "创建人")
    5. @TableField(value = "create_by",fill = FieldFill.INSERT)
    6. protected String createBy;
    7. /**
    8. * 更新时间 填充策略为新增或更新自动填充
    9. */
    10. @ApiModelProperty(value = "修改时间")
    11. @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    12. @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    13. protected Date updateTime;

    3️⃣片段3

    1. //创建父级目录
    2. if (!target.getParentFile().exists()) {
    3. target.getParentFile().mkdirs();
    4. }
    5. //如果存在,则说明重名
    6. if (target.exists()) {
    7. //命名重复,则文件名后拼接 “_时间戳”
    8. //获取当前时间戳
    9. long time = new Date().getTime();
    10. name = pathName + ConstantUtils.XHX + time + ConstantUtils.POINT + imageSuffix;
    11. path = directory + SEPARATOR + name;
    12. target = new File(path);
    13. } else {
    14. name = pathName + ConstantUtils.POINT + imageSuffix;
    15. }
    16. try (InputStream is = file.getInputStream()) {
    17. FileUtils.copyInputStreamToFile(is, target);
    18. }

    4️⃣片段4

    1. byte[] data = null;
    2. try {
    3. FileInputStream input = new FileInputStream(file);
    4. data = new byte[input.available()];
    5. input.read(data);
    6. response.getOutputStream().write(data);
    7. input.close();
    8. } catch (Exception e) {
    9. System.out.println(e);
    10. }

    5️⃣片段5

    1. private HttpServletRequest getRequest() {
    2. ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    3. HttpServletRequest request = servletRequestAttributes.getRequest();
    4. return request;
    5. }

    6️⃣片段6

            还有更多精彩片段,想看的可以关注我,模块还在持续开发...

     ... ...

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

    五、文末🔥

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

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

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


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

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


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

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

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

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

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

  • 相关阅读:
    全球回收标准(GRS)品牌认证细则
    848. 有向图的拓扑序列(BFS应用)
    zabbix自动发现
    Qt开发_调用OpenCV(4.x)完成人脸检测并绘制马赛克(摄像头实时数据)
    应用链的崛起将带来哪些风险与机遇?
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    Window环境搭建MySQL主从复制
    数学建模学习(93):方差分析、T检验、卡方分析(检验)
    C++学习笔记(三)
    蓝桥杯(3.5)
  • 原文地址:https://blog.csdn.net/weixin_43970743/article/details/125329298