当前位置:网站首页>项目实战--传智健康

项目实战--传智健康

2022-07-22 18:08:00 Hash..

传智健康项目

2022.3.2-2022.3.16 --BDY


项目介绍及技术架构

请添加图片描述

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

请添加图片描述

主要后端技术栈:

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


一、项目流程

1.后台管理系统编写

预约管理

在这里插入图片描述


  1. CheckItem

在这里插入图片描述


  1. CheckGroup

在这里插入图片描述


  1. SetMeal

在这里插入图片描述
套餐管理并没有写全,编辑和删除方法没写


  1. OrderSetting

在这里插入图片描述


主要学习内容:

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


2.微信端预约系统编写

  1. Setmeal全部及详情展示

在这里插入图片描述

在这里插入图片描述


  1. Login及验证码校验

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


主要学习内容:

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


3.图形展示及权限控制

在这里插入图片描述


  1. Report_setmeal

在这里插入图片描述


  1. Report_member

在这里插入图片描述


  1. Report_business

在这里插入图片描述


4.Security

登录验证,赋予权限
在这里插入图片描述
在后台代码中xiaoming没有删除检查项权限
在这里插入图片描述权限管理只是进行初步的学习,只是在系统中简单使用了解流程


主要学习内容:

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


4.数据库设计

在这里插入图片描述

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


5.项目总框架和配置

1. health_

1.总框架

  • health_parent

父项,统一管理
在这里插入图片描述

  • health_backend

后台系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • health_common 存放工具和实体类
    在这里插入图片描述
  • health_interface

服务接口
在这里插入图片描述

  • health_jobs

关于定时组件
在这里插入图片描述

  • health_M

微信端
在这里插入图片描述

health_servide_provider 存放dubbo中的service服务
在这里插入图片描述
在这里插入图片描述

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<map>的问题

在这里插入图片描述

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

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

在这里插入图片描述

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

8.关于business报表问题

在这里插入图片描述
//这里查询数据库查到的是第一天到之后所有天的数据,不是本月第一天到这一天的数据,有问题
//修改,在数据库查询语句里面限制小于这一天


四、总结

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

原网站

版权声明
本文为[Hash..]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45907602/article/details/123533046