当前位置:网站首页>项目实战--传智健康
项目实战--传智健康
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.后台管理系统编写
预约管理
- CheckItem
- CheckGroup
- SetMeal
套餐管理并没有写全,编辑和删除方法没写
- OrderSetting
主要学习内容:
1.主要关于CRUD操作,和基本的SSM项目编写
2.有分页查询的学习
3.关于日历控件和EXCEL文件上传下载
4.有关七牛云服务上传图片
2.微信端预约系统编写
- Setmeal全部及详情展示
- Login及验证码校验
主要学习内容:
1.CRUD及腾讯云短信服务
2.登录和短信验证服务
3.微信开发平台操作
4.页面静态化技术
3.图形展示及权限控制
- Report_setmeal
- Report_member
- Report_business
4.Security
登录验证,赋予权限
在后台代码中xiaoming没有删除检查项权限权限管理只是进行初步的学习,只是在系统中简单使用了解流程
主要学习内容:
1.Echarts 有关图形报表的数据的查询上传
2.关于Spring Security的学习使用
4.数据库设计
##表关联和描述不做展示
5.项目总框架和配置
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
边栏推荐
- 正则表达式的应用及分组
- Principle and implementation of Ping
- 大一暑假实习day5_1
- Leetcode-583. Deleting two strings
- Vrtk function teaching (II): unity3dvrtk handle blinking and UI interactive ray switching function - 3D model ray interactive switching - line and curve switching
- 10月17日所学
- Leetcode-326. Power of 3
- Code random notes_ Linked list_ 19 exchange nodes in the linked list in pairs
- Leetcode-504. Hex number
- Form validation and regular expression (2)
猜你喜欢

"Dial" out the number on the number of digits - a variety of ideas to achieve reverse output of a four digit number

Game pause

#每日一题 设计循环队列

Solve the master-slave replication problem of MySQL under CentOS

Swap parity bits in binary bits

What is DOM

Hefei University of technology information theory and coding course design, including code, visual interface, course design report

Vs2019 project packaging exe tutorial

Today's homework blog

Debug No4 利用RenderDoc排查bug
随机推荐
树和二叉树(C语言)
Exercise + floating point stored in memory
正则表达式的应用及分组
Unity3D使用VRTK配置场景环境
ImageView realizes zoom, pan and fling
Solve the master-slave replication problem of MySQL under CentOS
Wondows environment construction
练习+浮点型在内存中存储
The 3dui or model in unity is always facing the camera, rotating with the camera's angle of view and following the fixed angle of view
Code random notes_ Linked list_ 203 remove linked list elements
C语言基础 - 字符串/字符数组最易错考点
Code random notes_ Array_ 977 square of ordered array
Leetcode-326. Power of 3
My redis collation
With only 5000 lines of code, AI rendered 100 million landscape paintings on Quanzhi v853
Camera roaming
Leetcode - the best time to buy and sell stocks, including handling charges
OpenGL处理错误的方式
Ctfshow VIP limited and free topics CSDN creative punch in
Introduction to C language arrays, functions, operators, and keywords































