项目实战--传智健康

传智健康项目

2022.3.2-2022.3.16 --BDY

文章目录

  • 传智健康项目
  • 项目介绍及技术架构
  • 一、项目流程
    • 1.后台管理系统编写
    • 2.微信端预约系统编写
    • 在这里插入图片描述
    • 3.图形展示及权限控制
    • 4.数据库设计
    • 5.项目总框架和配置
  • 二、项目代码收获
    • 1.与前端页面交互(springmvc)
    • 2.服务层(spring)
    • 3.数据访问层(mybatis)
    • 4.其他实体类以及操作
  • 三、项目问题
    • 1.项目初入杂谈
    • 2.关于setmeal中的add方法出现的问题
    • 3.关于ordersetting中日期格式问题
    • 4.关于ordersetting中mysql时区问题
    • 5.关于静态页面展示问题
    • 6.关于List的问题
    • 7.关于数组空指针异常 的问题
    • 8.关于business报表问题
  • 四、总结


项目介绍及技术架构

项目实战--传智健康_第1张图片

传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与会员间的互动,增强管理者对健康管理机构运营情况的了解。

项目实战--传智健康_第2张图片

主要后端技术栈:

Spring,SpringMVC,Mybatis (SSM框架) zookeeper,dubbo,SpringSecrity
(分布式与权限) Git,Apache POI,Echarts (版本控制与报表)
腾讯云短信服务,七牛云存储服务,微信开发平台 (第三方服务)


一、项目流程

1.后台管理系统编写

预约管理

项目实战--传智健康_第3张图片


  1. CheckItem

项目实战--传智健康_第4张图片


  1. CheckGroup

项目实战--传智健康_第5张图片


  1. SetMeal

项目实战--传智健康_第6张图片
套餐管理并没有写全,编辑和删除方法没写


  1. OrderSetting

项目实战--传智健康_第7张图片


主要学习内容:

1.主要关于CRUD操作,和基本的SSM项目编写
2.有分页查询的学习
3.关于日历控件和EXCEL文件上传下载
4.有关七牛云服务上传图片


2.微信端预约系统编写

  1. Setmeal全部及详情展示

项目实战--传智健康_第8张图片

项目实战--传智健康_第9张图片


  1. Login及验证码校验

项目实战--传智健康_第10张图片
项目实战--传智健康_第11张图片


主要学习内容:

1.CRUD及腾讯云短信服务
2.登录和短信验证服务
3.微信开发平台操作
4.页面静态化技术


3.图形展示及权限控制

项目实战--传智健康_第12张图片


  1. Report_setmeal

项目实战--传智健康_第13张图片


  1. Report_member

项目实战--传智健康_第14张图片


  1. Report_business

项目实战--传智健康_第15张图片


4.Security

登录验证,赋予权限
项目实战--传智健康_第16张图片
在后台代码中xiaoming没有删除检查项权限
项目实战--传智健康_第17张图片权限管理只是进行初步的学习,只是在系统中简单使用了解流程


主要学习内容:

1.Echarts 有关图形报表的数据的查询上传
2.关于Spring Security的学习使用


4.数据库设计

项目实战--传智健康_第18张图片

##表关联和描述不做展示


5.项目总框架和配置

项目实战--传智健康_第19张图片

1.总框架

  • health_parent

父项,统一管理
项目实战--传智健康_第20张图片

  • health_backend

后台系统
项目实战--传智健康_第21张图片
项目实战--传智健康_第22张图片
项目实战--传智健康_第23张图片

  • health_common 存放工具和实体类
    项目实战--传智健康_第24张图片
  • health_interface

服务接口
项目实战--传智健康_第25张图片

  • health_jobs

关于定时组件
项目实战--传智健康_第26张图片

  • health_M

微信端
项目实战--传智健康_第27张图片

health_servide_provider 存放dubbo中的service服务
项目实战--传智健康_第28张图片
项目实战--传智健康_第29张图片

2.项目pom依赖

主要pom依赖在common,interface依赖于commom,其余依赖interface,parent实现pom文件版本控制。

3.配置

主要配置文件
1.log4j.properties:日志文件
2.springmvc.xml:关于SpringMVC配置,注解驱动,包扫描
3.spring-redis.xml:redis缓存,jedis连接池
4.spring-security.xml:SpringSecurity权限控制
5.web.xml:web容器配置,与前端交互
6.redis.properties:redis启动配置
7.freemarker.properties:网页静态化技术
8.spring-service.xml:服务注册,包扫描
9.spring-dao.xml:mybatis使用JDBC配置
10.spring-tx.xml:用于开启事务支持


二、项目代码收获

1.与前端页面交互(springmvc)

在这里插入图片描述
在这里插入图片描述

项目主要是通过ajax请求来访问,一般get请求是请求数据,将要传给后台的数据放在url中,数据一般是基础类型,post请求一般是向后台传输数据,数据主要放在表单或请求体中。通过观察前端页面可以知道后台需要如何操作
Controller层,通过@RequestMapping 来映射请求,通过@RequestBody来获取传回来的json数据并封装,或者通过@RequestParam来获取一般数据,然后通过@Reference(调用dubbo)调用service层来获取服务。
在返回数据中,一般在实体类entity中添加返回实体类Result,然后返回Result对象。

2.服务层(spring)

项目的Controller层通过调用dubbo服务来访问service层,在service层中主要编写业务代码,然后调用Dao层访问数据库,取得数据
主要注解@Service(interfaceClass = OrderService.class),@Transactional

3.数据访问层(mybatis)

mybatis中Dao接口被调用后会通过dao.xml中的sql语句来查询数据库。主要设计CRUD和多表联查以及条件查询
//mapper动态代理

4.其他实体类以及操作

在编写实体类时需要注意对应数据库中的表,还有分页查询PageQuery,返回结果Result的实体类
@PreAuthorize(“hasAuthority(‘CHECKITEM_DELETE’)”)//权限校验,权限校验注解使用
如何使用分页查询,如何使用日期


三、项目问题

1.项目初入杂谈

  • //去zookepper服务注册中心查找服务,注解的作用
    @Reference

  • //因为是int所以不用解析不用requestBody
    public Result delete( Integer id){

  • //因为RestController ,java数据转为json数据

  • //明确实现的是哪个服务接口 @Service(interfaceClass = CheckItemService.class)

  • Mysql版本问题 driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/health?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong"

  • //checkgroupIds名称要跟前端穿回来的一样
    public Result add(@RequestBody Setmeal setmeal,Integer[] checkgroupIds){

2.关于setmeal中的add方法出现的问题

在setmealService中能调用到取到id在Controller中取不到的问题,在前端传回的数据中并没有id,要在调用Dao
的新增方法后才有id值

3.关于ordersetting中日期格式问题

//这里数据库中的数据是2022-03-01;
//传过来的数据是2022-3-1;
//对ordersetting。html中的月份前面加0
//不加0也能成功,?mybatis会自动判断?==》 sql语句 SELECT * FROM t_ordersetting WHERE orderDate BETWEEN ‘2022-3-4’ AND ‘2022-3-24’;也能查询成功
//说明不需要零,加0不加0都能成功

4.关于ordersetting中mysql时区问题

//这里的date传入后会出现问题,因为数据库的时间是UTC比中国早八个小时,所以时间传过去会变成前一天的时间
时区详解 //https://blog.csdn.net/qq631431929/article/details/51731834
//方法,更改时区hongkong
//还有个问题,select错误,insert能操作???

5.关于静态页面展示问题

原视频中的静态页面重新新增数据后并不会覆盖原有页面,需要先删除原有文件,再添加静态页面。
//静态网页并不会覆盖原有静态网页
//解决办法,将原有的文件删除,new File(outputPath + “\” + htmlname).delete();

6.关于List的问题

项目实战--传智健康_第30张图片

//这里list的值会覆盖原来的值?????
//https://blog.csdn.net/ChaoticNg/article/details/121669316LIst
//在for循环里面Map map = new HashMap(); 即可,每次在堆中创建一个新的map,防止覆盖。
//因为list指向的是map 的地址,所以不管什么时候查list,在map中就只有一个数据

7.关于数组空指针异常 的问题

在这里插入图片描述

//出现数组空指针异常,解决办法先查数量再赋值

8.关于business报表问题

项目实战--传智健康_第31张图片
//这里查询数据库查到的是第一天到之后所有天的数据,不是本月第一天到这一天的数据,有问题
//修改,在数据库查询语句里面限制小于这一天


四、总结

本次项目一共历时16天,总的来说效率很低,正常情况下应该是十天以内。本次项目最主要是练习了基于SSM的CRUD,学习了SpringSecurity和Redis缓存的问题,复习了很多东西,也学习了整个项目的开发流程和开发规范。
包括腾讯云,七牛云,微信端的开发,也简单利用了zookeeper和dubbo构建分布式系统,也学到了分页 查询,日历操作,报表和图文等操作。
项目成功上传到gitee url:https://gitee.com/bian-deyong/project-practice.git

你可能感兴趣的:(java)