# car_o2o
**Repository Path**: TFboy630/car_o2o
## Basic Information
- **Project Name**: car_o2o
- **Description**: 一个未来编程界百年一遇天才,编写出的汽车门店管理系统,于2022年4月7号创建的项目!
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 0
- **Created**: 2022-04-07
- **Last Updated**: 2022-07-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
一:学习新技术的思想:
思考的问题:面对新技术如何开始的学习,并加以在实例中使用(首先学会HelloWord)
1. 首先了解这项技术是什么?
2. 能帮我们解决什么问题(一项新技术的出现,一定是会解决掉以往技术所存在的问题)?
3. 如何使用?
例子:这里我们使用到前端文件上传插件jasny-bootstrap
1.首先去该技术的官网,查看需要引入的js样式,下载下来
2.导入到项目中,进行管理,注意,导入样式的路径需要对上
3.导入的JS样式,需要放在页面的什么位置,一般是放在页脚,页面记载完的时候,会加载样式
例如:
4.去官网查看相关的案例,在进行使用
技术的相关网站,这里有许多关于前端的资源可以下载下来使用,例如时间插件
前端jQuery:https://www.jq22.com/jquery-plugins
二:修复Bug的能力:
1. Web项目常出现bug的位置
熟悉项目整个运行的流程,如何发起请求,使用什么请求方式,需要带取什么参数去后台,后台如何进行数据处理,响应的数据如何接收,需要响应什么类型的数据格式,以及页面如何渲染
1. Web项目开发解决bug的意识
查看异常类型,分析异常出现的可能性,解决bug,收集bug及异常分析,思考是什么操作导致了出现该bug,以及解决方法
3.项目流程图
三:项目一给我们带来了什么提升?
1>开发意识
2>如何基于脚手架进行项目开发
3>加入业务逻辑意识
4>框架
1. SpringBoot自动装配原理
2. Rbac权限控制系统(shiro),表的关系,一对一,一对多,及多对多等,还有关联查询等操作
3. BootstarpTable(前端分页框架)
4. 数据导入导出POI(导出的话需要在通过HttpServletResponse 响应对象,去设置下载头(是为了设置下载文件时,下载的文件名),这样前端发送请求的时候,响应的就是一个下载)
5. Activiti7工作流的基本使用
6. 数据字典的作用以及如何管理数据字典,数据字典的使用
7. e店邦o2o项目的各种CRUD操作,以及页面的显示,根据业务需求,加入的逻辑判断
5>表的设计,列的类型,字长,以及表的可拓展性,都需要结合业务进行多方面的考虑
6>CRUD的思考:
页面需要显示什么数据,添加时需要显示什么模板,带取的参数是否足够,后台接收参数是否要注意(例如时间日期格式,需要贴注解@DateTimeFormat(pattern = "yyyy-MM-dd")在属性上,否则造成时间解析异常bug),接收到的参数,参数不够,是否需要进行额外的处理,都需要进行考虑
列表的显示:
前端页面需要什么数据,后端SQL需要查询相应的数据
问题:模型类中的属性和数据库中的列名不一致的时候,导致页面无法显示数据,问题是SQL语句查询出来的数据没有进行属性封装,导致了数据无法显示
解决思路:通过resultMap 标签进行数据的封装即可,前端的列名也要和属性名一致,否则共享过来的数据也无法进行显示
新增的操作:
添加可能出现的问题:前端页面收集的参数,可能和数据库中的列不一致,可能导致数据插入时缺失数据
解决问题:在业务层进行操作前,和数据库的列进行比较,思考哪些数据可以不用处理,哪些数据没有收集,需要我们处理,再进行添加操作
编辑的操作:
可能出现的问题:编辑时需要回显数据,显示什么数据,以什么样的形式显示,当再次提交编辑后的参数时,在后端处理时,需要注意的是,修改了哪些参数,后端SQL语句如何写,如果参数不完整,或者SQL不进行相应的调整,会造成数据丢失、
解决问题:在进行编辑操作前,观察对应的SQL语句,如何进行编辑操作的,前端提交过来的参数有哪些,是否和当前编辑的处理方法处理的参数对上,如果没有,定义另外一个处理方法,重新编写SQL语句进行编辑的处理
局限性:重新定义一个方法处理编辑操作,定义的编辑方法只能处理当前编辑
解决局限性:在后端的SQL语句中使用 标签进行判断修改
删除的操作:
可能存在的问题:前端页面没有获取要删除行的id数据到后台,或者后端的SQL语句,忘记添加where条件判断,导致点击删除,所有数据删除完了
解决方法:在进行删除操作前,数据库表进行数据备份
四:开发的体验:
普通开发:什么都需要我们自己去写,去进行配置
企业级开发的话:是基于脚手架进行的开发,基本的CRUD也已经写好,不需要我们去进行配置,只需要关注业务逻辑开发即可
五:项目整体复盘:
重点:表的设计!!! 结合需求:怎么去需要中抽取出一个表的列,为什么会缺少?体会思考
重点:深刻理解需求,分析理清思路,理解逻辑,最后落实代码
第一天:客户列表的CURD操作
客户列表的CURD操作及数据字典的管理
重点:表的设计,列的属性,字长等的考虑,以及页面显示的数据
收获:在脚手架的基础上,快速的建立一个CRUD操作
第二天:养修服务单项,服务套餐的CRUD
养修服务单项,服务套餐的CRUD,根据是否是套餐分为不同的CRUD权限操作
重点:表的设计,如何设计列,列的类型,字长等的考虑
难点:逻辑业务操作
易忘点:视图路径的修改,数据的封装
收获:业务层加入了业务逻辑判断
第三天:养修服务预约单的CRUD
养修服务预约单,预约单的CRUD,结算表列表,预约单的CRUD不同的逻辑判断
重点:明细表的CRUD操作,以及相应的业务逻辑加入到项目中
难点:表的设计,表中列的设计以及可拓展性
收获:软删除的使用,加多一个列表示状态
第四天:养修结算表和项目明细表的操作
养修结算表和项目明细表的操作:涉及到新增,编辑,明细表(涉及到逻辑),保存,支付,以及查询服务单项
重点:结算表的CRUD操作以及结算明细表的保存,支付操作的实现,点击保存时,将用户添加的服务单项和价格添加到数据库中进行保存,点击支付功能时,涉及到状态的修改,以及根据状态跳转到不同的界面显示,如果为消费状态,跳转到明细编辑页面,如果是已支付的状态,跳转到明细表显示的界面
难点:表的设计以及涉及到新增编辑时,需要涉及到哪些的表的修改,都需要进行考虑
第五天:SpringBoot继承Activiti7的使用
难点:表的设计,表中加多一个列bpmnPaht:用于存放上传流程文件的相对路径,在后续查看流程图时,方便获取
重点:流程文件的上传,保存,部署流程,流程定义,启动流程实例
难点:流程定义编辑操作,流程定义删除,查看流程文件,查看流程图,时间格式的参数接收,及时间格式数据的响应,使用注解去进行处理
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
第六天:服务单项提交审核操作
难点:表的设计,加多一个列auditRecord 用于记录审核人审核信息【审核通过/审核拒绝/代办】
重点:项目中加入了activiti7工作流,加入了业务逻辑在项目中使用,例如发起审核,启动流程实例,审批任务,查询代办任务,查看已办任务,审核记录对象的记录
收获:学习到了在SpringBoot中集成了Activiti7工作流后,如何实现流程的发起,撤销,查看流程图,审核任务,查询任务等的操作,以及相关的业务逻辑
六:整体小结:
收获:
在宏观整个项目一的过程中,学习和收获到了很多的新知识,因为每天都在学习新的知识点嘛,也真正的体验到了接近真实的开发是怎么样的,项目是怎么进行开发的,需求是如何从分析,到理解,再到代码实现的这一步步过程
需求:
其实在开发项目前,针对需求一定一定一定要理解到位,否则根本无法下手,我们在获取到需求的时候,不需要着急,而是问清需求,理清思路,这样才能结合业务去进行开发
收获:理解需求的重要性,如何理解当前需求,以及在结合业务如何进行代码的填充
建表:
其实在整个项目一的体验过程中,让我体验到的最大难度是建表,需要考虑到的东西有很多,例如需要有什么列,列的类型,以及需要关联什么表,增强表的可拓展性,这些都需要进行考虑,让我感受到了难度是最大的
收获:建表时,基本的列需要设置哪些,需要关联哪些表,以及需要提前设置哪些列,增强表的可拓展性
业务逻辑:
其次,还有在项目中,真正的加入了业务逻辑,根据需求进行逻辑的判断操作,让我一开始的不适应,到现在的我会主动去思考,每一步的操作,我需要考虑当前操作,会带来什么样的结果,我想这也是项目一的收获之一,是意识思想的上的成长
收获:在进行业务开发的过程中,会思考如何结合需求,增加相应的业务逻辑,让漏洞减少
不足:
在整个项目的学习中,虽然每天都在学习新的知识点,但是每天学习的知识点,真的很难去吃透,很多地方和细节也都大多是的了解的一知半解的,老师说项目一只是体验了解大概即可,但是每天学习完的,后面学习新的知识后,前面的也都大多忘了,不是没有想过去复习看一看的,是真的很难有时间去捡,可能是自己本身的学习方法有问题把,也许是不够努力
在最后两天的学习中,在SpringBoot中集成了Activiti7工作流后,我发现前面学习的基本Activiti7
工作流的使用基本忘完了,我回顾了一下,单单拎出来我是觉得没有问题的,SpringBoot也是没有问题的,但是集成了之后,我发现我听不懂,特别是流程部署和流程定义的概念都混淆了,上课也总是慢半拍,或者是听不动,晚上打代码,打的过程中才慢慢理解一些,打的过程中,还需要去看讲义和视频,我觉得自己真的有的废了,还有老师说的SpringBoot的精通,我想我是没有精通的,但是也只能去学,面试题还有很多没有去背,在学习的过程中,学了又忘的感觉好像拣了芝麻丢了西瓜丢了西瓜一样的感觉真的太糟糕了
解决方法:
努力,不会就学,背面试题,提前早睡--加油