【无标题】

项目持续了一个半月之久现在也已经接近尾声了,就在这里小小总结下。

1、熟悉项目流程和架构:

​ 开始的时候就是熟悉业务流程和项目架构,我开始的时候觉得这两件事甚至有些多余,就没用太多心,大概看了看程序的使用方法,没有深入去了解各项功能。由于当时很多东西没学,项目架构图看的也是一知半解,甚至没记住整个流程,也没有去仔细看整个项目的骨架代码,这两件事也给后面的流程带来了麻烦。这里就不放我自己的业务梳理图了,放上组长的:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hDZcZ01f-1651572590357)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220503143631402.png)]

2、搭建架构:

​ 架构的搭建是自己选的,因为当时学的不多,所以选了自己连是啥都不知道的任务管理模块。后来跟是个沟通之后才知道这个模块是干嘛的,用什么的(其实这一点在架构图中也有介绍)。XXL-JOB主要是用作定时任务的管理的。当时还没头没脑的学了两天才把部署任务完成 。附:XXL-JOB 学习地址

3、设计数据库:

​ 数据库的设计是和前面的业务梳理密不可分的,就是先前没做好业务梳理的工作,才会有只用两个库的脑瘫发言。不过也是这次之后才发觉数据库设计不能完全按照书本上学来的死知识,一个实体不一定是只要一个表就可以了,还要和业务相关联。比如说用户这一个实体,当业务复杂起来、数据多起来的时候,用户登录和用户信息要分开放,适用不同的场景(用户登录和固定信息的查询)。订单也是如此,虽然只是一个实体,但是也要根据业务场景的需要来划分。下面是数据库的最终版表的列表。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajjQDasi-1651572590358)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220503161602321.png)]

  • 关于数据库设即的一些规范:是否含义的字段不能含有 is 、表必备的字段 id,create_time,update_time、不要进行物理删除、适当冗余字段等。(详见 阿里Java开发手册)

4、设计API

​ 关于API的设计,我们没有按照RestFul 的风格开来设计。而是按照 /业务/模块/方法 的层级模式来的。API 的设计还是与业务流程和数据库的设计密不可分,中间我们也改过数据库。涉及具体的页面和API之后,需要哪些字段就能更加明确了。下面是我设计的API中的一个。这里也算是熟悉了APIPost的使用方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaND2PTR-1651572590358)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220503163600833.png)]

5、编码:

​ 对于编码的规范,我开始是一窍不通的,之前自己写的代码就感觉能跑就行了,十分不规整,加上原来对项目骨架代码的不熟悉(主要是common 模块已经提供的工具类),在第一次检查代码的时候也很多问题都暴露无遗。下面是一次会议之后我做的会议记录,比较杂乱,主要是一些开发规范和对 common 模块各个功能的解析。

1、路径请求格式(业务/模块/方法) 方法名里面要加能表示动作的词,比如说 get
2、返回值使用 CommomResult    分页 CommomResult<CommonPage<T>>, 返回码 使用 resultCode
3、配置 redisTemlate 解决 redis 乱码问题。如果需要的话要
4、auth 认证:constant  涉及 JWT 一些通用常量
5、log、mpaop 切面 :
	log 包提供 各个 controller 的切面处理,主要是记录请求信息。
	mpaop 提供 在portal 和 admin添加切入点,主要记录一些集合使用的时候出现异常的记录。
6、调用Asserts.fail 会抛出 ApiException异常,被 GlobalExceptionHandler 全局异常处理器(处理GlobalExceptionHandler 里面对应的异常),@NotNull 注解也会抛出异常被 ControllerAdvice 捕获
7、redisServiceImpl  对 redisTemlate  的方法进一步封装。提供redis 的各项基本操作。
8、常用的是 api 和 exception 包里面的内容。
9、service 里面调用方法要加 this 来调用。
10、注释:参数介绍 和 返回值
11、DAO、VO 大写
12、service 需要继承 Iservice,ServiceImpl 需要继承 mp.ServiceImpl 

​ 我个人主要负责三个接口,其中认证接口涉及到了图片的上传,要使用先将图片上传到服务器的 Minio,再将url 返回存放到数据库。小学了以下Minio,本来使用的是工具类的方式,但是这里有个问题就是,MinioClient 对象是可以注入的容器的,但是工具类的方法一般都是静态方法。如果是静态属性的话,是不允许注入的,最后找了一个比较畸形的解决方式,将工具类注入到了容器之中。这个问题也是被组内的大佬解决了,用更加优雅的方式实现了图片的上传。

6、前后端联调测试

​ 从头开始学的uni-app ,完成了黑马的 uni-app 课程,并且把它的后端直接部署上线了,前端打包了andoid程序。在本项目中,我参与了前端列表页及子页面的编码。在联调时才发现之前的数据格式没有商量好,一个筛选框的数据转换调试了好久,最终完成了数据接收转换和显示,完成了相关页面的跳转和值发送。

7、使用 Git

​ 之前确实也是缺少 Git 的使用经验,中间有一次 pull 时操作不当直接把自己的改动覆盖完了,结果又写了一遍。下面是一个常用的操作。

拉取远程 master 分支,创建自己的新分支 dev , 修改 dev 后合并到 master 分支 :
git clone ...              将远程分支复制到本地
git checkout -b dev        创建自己的分支 dev

//每次更新之前必须先拉取 master 分支的代码,防止提交后覆盖别人的代码
git checkout master		   切换到master分支
git pull origin master	   拉取master分支的最新代码
git checkout dev           切换到 dev 分支
git merge master		  将master分支的代码合并到 dev 分支
git status                 查看dev 分支的状态
git add .                  将所有改动的文件加入暂存区
git commit -m 'haha'       将暂存区的文件提交到本地仓库
git push origin dev        将本地仓库的改动提交到远程仓库 dev 分支
接着可以发出 pr 请求,等待合并。

8、总结:

​ 开始项目时,自己原始积累的知识比较贫乏,很多东西没学,但是在项目中参加的部分比较多,架构搭建、用户模块编码、前端编码。虽然参与了很多,但是做的都不是很好。一是自己能力不足,二是精力太分散了,这也是我的问题。项目给我带来的收获更多的是流程的规范、基本的架构的理解、编码的规范以及认识到自己和别人的差距。有很多东西要学而且要抓紧学,提高自己的起跑线。

除此之外,项目期间也写了些博客,在 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值