基于SpringBoot的宠物医院系统的设计与实_第1页
基于SpringBoot的宠物医院系统的设计与实_第2页
基于SpringBoot的宠物医院系统的设计与实_第3页
基于SpringBoot的宠物医院系统的设计与实_第4页
基于SpringBoot的宠物医院系统的设计与实_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录TOC\o"1-3"1绪论 绪论1.1开发背景现如今的中国,随着人民生活质量的逐渐提高,以及人民群众消费能力的日益增长,无论是活泼可爱的小猫,忠诚可爱的狗狗,活蹦乱跳的兔子,还是水里闲游的鱼儿小虾,各式各样的家养小动物们,都不仅仅只有看家护院,和观赏娱乐的作用,更重要的是它们正逐步开始成为人们家庭中的重要伙伴,必要成员。并且在现如今竞争日益激烈,生活节奏更加快速的社会生活中,宠物们可爱活泼的一面,为正处于紧张现代生活中的人类消除孤独、缓解工作上的压力、增加生活的情趣。但是,但凡事物都具有两面性,在优点之下往往伴随着缺点,好处之下往往伴随着坏处,宠物传染病问题和流浪宠物问题也由此产生,潜滋暗长,困扰着喜爱宠物的人们,例如:1)、城市的规划建设以及老旧房屋的拆迁工作越来越频繁、迫切,老房子拆迁了之后,那些曾经看家护院的小动物可能就因为住址迁移而遗留下来,成为了流浪动物。乔迁新居对于拆迁户们来说,是一件值得庆祝的好事,但是,对于小动物们来说,便意味流浪生活的开始;2)、小宠物们没有自我照顾的能力,会到处乱跑,这时候,如果主人稍微不注意,就会让宠物走丢,导致流浪动物越来越多;3)、宠物们的繁殖能力很强,就拿小猫来说,一只没有绝育的普通猫,一年要繁殖5~20只小猫,有的还能繁殖20只以上。一些普通家庭根本负担不起饲养多只宠物的重任,就算负担得起,也会因为照顾不够全面而产生诸多问题。这时候,宠物的主人可能会选择遗弃宠物,所以流浪猫的增加速度及其之快。如果宠物的主人一旦没有提前给自己饲养的小宠物做好绝育措施,那宠物在生育后,大多数幼崽只能送给他人,或者直接丢弃掉任其自生自灭。而这些被弃养小动物又会在不同的地方随意繁殖后代,久而久之,就形成了难以遏制的恶性循环,流浪猫的数量会不断地增长。4)、由第3点我们可以知道了流浪动物的增长原因,而流浪动物的增长会间接地将疾病传播给人类,因为欠缺照顾的流浪宠物会生病,如果没有及时得到治疗,就可能引发各种传染性疾病,危害到人们的身体健康。据查阅医学资料得知,流浪宠物引起的感染率较高的疾病分为八种:①狂犬病、②弓形体病、③慢病毒感染、④线虫病、⑤猫抓病、⑥流行性乙型脑炎、⑦猫癣、⑧流行性出血热等。其中,感染率排行榜首是上述所说的第一种狂犬病,和第六种流行性乙型脑炎,两种传染病的得病后果也最为严重。5)、据统计,现如今,我国狂犬病发病数量高居世界第二名,在我国,狂犬病一直处于传染病疫情首位。更加容易被忽视的是,在街头巷尾到处乱跑的流浪动物,可能会和儿童或者成年人产生直接或者间接的接触,存在巨大的传染病传播的风险,甚至还可能出现流浪动物因为疾病和疏于和人类接触的原因,主动攻击人类的现象;这种情况一旦被忽视,后果将是传染病感染率的大幅度攀升。为了解决我国宠物饲养的不良现状,让家养宠物健康成长,减少社会上的流浪动物数量,基于SpringBoot框架的WEB端新型公益性宠物医院应运而生。本次课题研究就是力求做到倡导科学、文明、合法合理繁殖、饲养宠物、为宠物饲养者提供帮助的同时,力求能为改良宠物饲养的不良现状做出一点小贡献。1.2国内外研究现状1、国内的现状研究:众多与宠物行业方面相关的产品和服务主,概括起来主要包括①医疗保健、②宠物美容、③宠物食品;以及④用品用具等4方面相关产业链产品,这条宠物产品产业链的上游产品,主要是宠物食品产品,产业链的下游产品主要是宠物医疗方面的服务。其实,在古代,宠物行业就已经出现在人们的生活之中,例如古代的兽医;而宠物行业产业链的正式形成是在建国之后,并在短短十年内迅速发展,产业链逐步延伸,相关产品逐渐丰富、琳琅满目。在小康社会成型初期,国内宠物医疗服务方面的消费日益提高,人们饲养宠物的初衷与目的,也开始由原来的娱乐需求,休闲性质,逐步转变,成为人们精神方面的慰藉和情感方面的寄托。并且在交通极为便捷以及网络科技极为发达的今天,当人们饲养的小宠物产生了疾病,或者需要医疗、保健服务时,宠物们的主人往往会通过朋友介绍或者相关媒介宣传渠道获得各个宠物医院的信息,然后选择在住宅处附近的宠物医院就医。由文献《中国宠物医院行业现状分析与发展趋势研究报告》(中国产业调研网2017年版)可知,我国的宠物医院按照规模的大小,可分为两类:①小规模私人店、②大中型医院。小规模的宠物医院,一般目的在于满足宠物市场,服务城市周边的居民,缺点是:①设备简陋,②流水作业价格较低。大中型的宠物医院服务配套设施齐全,虽然能够提供高质量的宠物医疗方面的服务,而且服务范围也较为广泛,但是缺点在于价格极其的高,而且手续繁琐。我国的宠物医疗服务行业的发展,目前仍然处于早期的需求增长期,但发展的潜力不可限量。2、国外的现状研究:日本宠物杂志《爱犬之友》,是一本拥有50年历史的著名养宠杂志,它的作者分析说道:“过去宠物只是看家的狗,捉老鼠的猫……其价值全部体现在其功用上。然而随着人们生活水平的提高,它们已经从单纯从事某种劳动的动物变成人类日常生活中的伙伴、填补心灵空虚的玩物。”由此可见,日本社会上也出现了宠物服务行业盛行的势态,而且据杂志内容还了解到,所涉及的宠物服务行业包括:宠物食品、宠物用具等,相关的宠物服务用品的市场销售总额,已经高达到1兆日元,并以极快的速度增长。美国作为全球最大宠物消费市场,一直以“宠物服务最成熟的国度”的头衔自居于世界榜首,在2001至2014年,短短的4年间,美国的宠物行业年均复合增长率高达5.62%,并且据大数据统计预测在未来仍将保持4%以上的年增长率继续增长。在美国宠物行业产业链的各个分支中,宠物食品、宠物医疗行业总产值约为605.9亿美元,占据美国整个宠物行业的主导地位。1.3发展前景经过多番讨论、研究,通过多种数据的统计,最终我得出这样一个思路:“让宠物更好地陪伴人们的生活”。新型的宠物医院给宠物主提供宠物一站式服务,从宠物医院衍生出的宠物医疗服务、宠物公益活动项目、认领宠物、领养宠物、宠物用品销售、宠物食品、宠物服装、宠物清洁美容等服务应运而生。这些都是宠物在人们生活中,变得日渐重要的体现,这也使得宠物的健康状况备受人们的关注,也使得宠物医院产业成为了炙手可热的经营产业。智研咨询集团在《2018-2024年中国宠物行业分析与投资决策咨询报告》中指出:的宠物数量在2003年至2016年的10年间增长了900%。2017年中国宠物数量已增至1.68亿只左右,宠物产业销售额突破了1300亿元。这也再次体现出宠物行业的经营范围不在局限于医疗服务,以宠物为主要服务对象的宠物日用品、医疗保健、清洁美容等服务也已经普遍存在。而把宠物医院充当经营的主体,多样化的宠物服务以及具有号召力的宠物公益为客体,宠物医院在为消费者提供医疗服务的同时,延伸出各种各样的增值服务,宠物医院行业具有非常大的可开发空间。1.4设计思想现如今大型的宠物医院门店非常的少,可定制性极低,并且资源过于单调乏味,“门店”也仅仅是“门店”而已,因此,此次研究:1)、在网站上添加“天气查询功能”方便用户查看到院就诊时的天气,还提供地图导航定位用户和医院门店的地点,方便用户出行方式的安排;2)、网站还实现“门户”形式的“认领/领养”公益中心,提供用户宠物转让、宠物找回、以及发布认领启示等功能,扩展医院的知名度,同时,公益活动的开展模块也进一步阐述了这个目的;3)、对于后台管理的用户,不仅拥有上述功能的同时,还拥有定制宠物医院门店的功能,大到业务,小到数据图标等,大多数都是可以扩展和定制的;4)、网站的各种资源均可准确、快捷、方便地获得与操作,管理极为方便,效率极高,与其他宠物医院相比更胜一筹;5)、摒弃传统的JSP页面,使用Jquery前端框架Layui作为界面交互,速度更快,界面更加符合审美,并且实现前后端分离开发部署,框架的扩展及其方便,维护极为简便,模块化的Layui框架在升级更新上更加便捷。

2可行性研究2.1技术可行性 本系统使用SpringBoot、MyBatisPlus、JWT以及JQuery前端框架Layui进行开发,开发便捷,维护简单,可满足系统全部业务需求以及非业务需求,界面简洁美观符合审美,实现功能逻辑性强,数据库使用主流关系型的数据库MySQL,安全高效准确,技术上完全可行。2.2社会环境可行性 如今饲养宠物的人越来越多,相关消费市场也逐渐扩大,而一个小巧、美观、功能全面的宠物医院的出现,正好弥补了这一市场的空缺,并且与传统宠物医院相比,线上获得相关资讯与服务,往往要比实地考察来得便捷,线上预约更极大地节省了用户的时间,本系统具有众多当前社会环境下实施的有利因素,社会环境可行性分析结果为可行。2.3经济可行性 现如今,线上的宠物医院竞争力较小,项目上线后附带的第三方效益如:宠物相关产品、宠物相关药物、宠物相关医疗技术等潜在效益较高,并且项目基础建设投资资金(详见附录1)较少,开发费用均为一次性支出,维护费用极低,短期内便可有持续收益。2.4操作可行性 现在正是“大前端”时代,本网站软件属于B/S架构类型的应用,对于用户来说只需要一个浏览器即可使用,进入系统后,菜单以及各项功能的说明与指引一应俱全,操作简便快捷,在可操作原则方面上完全可行。2.5法律可行性 本系统(咚咚宠物医院系统)是自主设计和开发的,法律上拥有自主知识产权。本系统的开发并不侵犯任何个人、集体、国家的利益,也不会违反国家的相关政策和法律,本系统相关业务也在国家规定可经营项目范围内。3系统需求分析 3.1需求概述 本系统主要面向社会全体饲养宠物的人士,以及爱宠人士,这部分用户群体的数量正在日益增加,这也说明饲养宠物所带来的的问题正在增加,在此背景下,需要实现一个既能满足养宠人士的需求,又能解决养宠所带来的问题的平台。3.2门店系统需求分析 1)、首页:展示一段符合医院门店风格的视频,阐述医院的服务宗旨;在首页的页面使用Swipper下拉切换,第二页是对医院的概况进行介绍,让用户进一步了解医院的服务,第三页是介绍医院的主力医师,让用户肯定医院的医师资源,第四页是对医院近期的新闻进行展示,让用户了解医院的最新动态,第五页是地图导航页,以及留言页面,进入这个页面,系统会自动规划用户与医院的路线,让用户出行前做好准备,也可以进行留言反馈,让客服人员与用户联系,第六页是医院的相片长廊,展示医院与宠物之间的点点滴滴,底部是医院的联系信息介绍以及交流群,用户可以加入交流群分享养宠心得以及咨询问题。 2)、养宠课堂:用户可以在这个页面找到适合自己的宠物饲养教学视频,视频内容涉及从养宠教学到注意事项、知识普及、人宠和谐发展等方面,视频具有点击量显示栏,点赞数显示栏等。 3)、养宠知识:与养宠课堂相类似,但是不同点在于养宠课堂是视频媒体类型,养宠知识是图文类型,带有条件搜索方便用户查找。 4)、医院服务业务:这个页面详细介绍医院所有的服务项目,用户可以点击自己所需的服务查看对应的详情,并且可以在适合的业务上点击预约就诊,为自己的宠物预约看病或者其他服务的时间段。 5)、康复案例:用户在这个页面可以查看到已经到过医院治愈的病例,让用户更加肯定医院的医疗服务水平。 6)、预约就诊:进入页面后,用户可以看到医院的相关医生信息,包括医生的从业简介,主治科目简介,好评度,以及进行预约,预约需要先进行登录。 7)、预约手续页面:选定预约的医生后进入此页面,展示医生可预约的时间段,用户选择时间段后进行预约信息填写,提交后返回预约结果。 8)、宠物公益活动:用户可以查看医院发布的公益活动信息,了解活动的内容,并参与到活动中来。 9)、宠物认领:用户进入页面后展示所有的领养/认领公告文章,用户可以进行类型的筛选、时间的筛选、热门程度的筛选、宠物类型的筛选,并查看文章详情,对于登录的用户展示认领文章的用户联系方式,让用户私下联系,本平台不负责认领、交易服务,只单纯提供平台信息资源;用户也可以发布自己的公告文章,便于没有用户找到适合自己的宠物,也便于遗失宠物的用户找回自己的宠物。同时也帮助不想继续饲养宠物的用户转让自己的宠物,降低遗弃宠物事件发生的概率。 10)、联系我们:提供医院所有的联系方式,便于用户与医院沟通。 11)、个人中心:a.名片卡:查看当前登录用户的基本信息; b.基本信息:修改当前登录用户的基本信息; c.预约管理:用户查看自己所有的预约记录,可以取消预约以及对服务的评价; d.认领管理:用户查看自己发布过的认领/领养文章,可对文章设置认领/领养状态,以及删除; e.收藏管理:管理用户对网站资源的收藏记录; f.账号绑定:可绑定邮箱、手机、qq、微信; g.找回密码:用户如果遗忘咚咚宠物医院的用户登录密码,可以通过手机发送验证码的方式登录,登录后,在此页面进行密码找回操作; h.修改密码:修改原有密码;3.3后台管理系统需求分析 1)、主页:查看医院的访问概况; 2)、系统管理: a.用户管理;b.部门管理;c.角色管理;d.菜单管理;e.登录日志管理;f.在线用户管理; 3)、门店主页管理: a.公告管理;b.医院简介管理;c.新闻管理;d.幻灯片管理; 4)、业务管理:a.官方活动管理;b.康复案例管理;c.养宠知识管理;d.医院技术简介管理;e.养宠课堂管理;f.宠物分类管理;g.宠物类型管理;h.医院服务管理;i.认领/领养文章管理;j.留言管理;k.预约就诊管理;l.医生出勤安排管理; 5)、辅助工具管理: a.天气查询;b.地图查询; 6)、文件管理:管理网站所有的图片视频资源,可以上传、下载、预览、删除文件、新建目录等操作; 7)、系统监控:查看系统运行的情况,包括:a.jvm信息;b.Swagger2日志;c.系统日志;d.Redis监控;e.请求追踪;f.服务器信息; 8)、代码生成:开发时便于生成基本代码; 9)、任务调度:设置QUARTZ定时任务,如定期删除图片视频临时目录,删除过期预约等; 10)、个性化设置:用户根据自己的审美,修改界面风格,下次登陆自动生效;

4系统设计4.1系统总体设计4.1.1系统功能模块设计 本系统分为门店系统、后端管理系统两大系统,门店系统有12个主要的功能模块,后端管理系统主要由10个功能模块构成,相关系统功能模块图如下图图4-1系统主要功能模块图4.1.2系统架构设计 系统后端架构概述:系统框架主要建立在SpringBoot2.1.7框架的基础上,是可以独立运行的Springweb应用,内嵌了众多应用上下文运行的容器,如Tomcat、Jetty、Undertow等,可以方便快速地运行起来而无需众多繁琐的配置部署和操作步骤,无需像Spring那样搞一堆繁琐的xml配置文件,内置的pom可以简化Maven的配置使用;其他的框架组件只需要引入对应的pom依赖,并添加@compoment、@Bean等注解即可;系统框架其他主要构成与技术选型如下:1)、SpringMVC、MyBatisPlus3.2、Apach-Shiro1.4、JsonWebToken-JWT3.8.2,基于Shiro-RBAC角色访问控制,MybatisPlus作为数据持久层,JWT作为前后端分离认证服务的SpringBootWeb系统架构。2)、ApachShiro是一个开源的权限管理框架,它的RBAC角色访问控制器,能根据不同用户权限动态构建路由,对不同类型用户展示对应权限下的菜单,并对按钮做权限控制,其授权可抽象为:Who/What/How的三元组合关系,即“谁(Who)”对“什么资源(What)”进行“怎样的操作(How)”,形成主体对客体的操作逻辑;3)、SpringMVC使用RESTFul风格接口,在rest面向资源架构的基础上进行扩展的rest风格的web服务,将用户请求的主体抽象成资源,并加上唯一资源标识符,利用@RequestMapping注解,对指定要处理请求的URI请求路径,以及对HTTP的请求动作进行响应;并利用@PathVariable注解,对URI请求路径中的变量映射到对应Controller处理方法的接收参数上,此外,前端使用Ajax对后台发送GET、PUT、POST、OPTION、DELETE等请求,实现前后端交互;4)、由于项目模块较多,为提高性能以及便于开发和维护,系统设计时考虑支持多数据源,以及使用MyBatisCodeGenerator代码生成,既统一了接口代码的风格,便于维护,又能提高开发效率;5)、系统着重点在于后台管理以及门店业务,这两方面数据结构较为复杂,数据量较大,因此使用Hikari数据库连接池作为持久层交接的中间容器,Hikari是一个数据吞吐量极高的数据库连接池,开发人员称他为“史上最快的连接池”,性能几乎是C3PO和DBCP的25倍,作为高性能、准确的数据库链接池必不可少。6)、系统属于鉴权认证类型系统,权限识别可精确到按钮,因此,鉴权时要经过大量的资源认证过虑,为了避免业务逻辑层频繁调用DAO,使用Redis数据库作为数据缓存中间件,避免频繁的读库写库操作,从而提高系统性能。系统后端框架逻辑与架构图如下: 图4-2系统后端框架逻辑与架构图 系统前端架构概述:技术没有好坏之分,在不同的地方发挥的作用各不相同,现在市面上常见的几大前端框架有Vue、EasyUI、Bootstrap、Layui、React、Angular等,界面风格各不相同,使用方式和构建方法也各不相同,但本项目属于服务类型的项目,面向的用户为饲养宠物和爱好宠物的群体用户,因此界面风格不能过于拘谨、严肃以及呆板,需要活力、明朗、暖色的界面风格;在前端系统实施过程中,要考虑到系统代码的重用的性、耦合性以及与与后端系统整合时的接口吻合度,因此,对前端框架系统架构设计上的关注点有以下两点:1)、框架选型:由于系统面向的用户类型为有爱心的爱宠人士,因此界面风格使用较为有亲和力的Layui前端框架进行设计开发;本系统是基于JWT进行开发的前后端分离WEB系统,后端代码与前端代码不在同一个服务器上部署运行,因此选用Layui前端框架能很好地结合后端处理CROS跨域问题,前端Config配置存储器也能很好地配合后端存储Token等数据;2)、框架特点:Layui是基于JQuery封装的框架,各种界面组件均为模块化封装,需要使用时直接引用标识符即可,不需要重复编辑代码即可完成界面构建,耦合性极低,代码重用性极高,并且有统一的返回码处理器,对后端返回的状态码进行统一处理,避免了繁琐的返回数据处理问题;系统前端框架逻辑与架构图如下:图4-3系统前端框架逻辑与架构图如4.1.3系统角色划分 1)、游客:游客在没有登录账号的情况下,可以对首页“医院介绍”、“医生资源力量”、“医院简介”、“公益活动”、“联系我们”等页面进行浏览和操作,若游客用户的操作涉及“预约就诊”、“个人中心”、“发布认领/领养”、“收藏”等操作,则需要先进行登录,在登录页面,用户可以选择登录方式,“账号密码登录”需要输入图片验证码,“手机号码登录”需要输入短信验证码;若用户没有账户,可以在注册页面进行注册;若用户忘记登录密码,则可以在登录页面选择短信验证码进行登录,登录后可以在个人中心进行密码重置。2)、注册用户:注册用户在没有登录的时候,所有操作权限与游客一致,登录后可以使用门店系统的所有功能,但所操作的数据不包括其他用户的数据。3)、管理员:管理员拥有游客以及注册用户的所有权限,但不能管理用户所收藏的内容,该内容属于个人隐私内容;管理员在登录系统时,若账户密码通过校验,系统会提示用户选择要进入的系统是“咚咚宠物医院门店系统”还是“咚咚宠物医院管理系统”,若选择“门店系统”,则所有操作权限与注册用户一致,一般管理员用户登录“门店系统”是为了查看对医院的配置效果,如“发布新闻”、“修改主页医生”、“发布公益活动”等效果预览;若用户选择的是后端管理系统,则进入后端管理平台,可按所拥有的权限对咚咚宠物医院进行管理。4.1.4系统业务流程设计图4-4系统业务相关流程图4.2系统模块设计 咚咚宠物医院用例图的参与者由游客、会员(注册用户)、管理员三者组成,包括的用例有:门店首页、养宠课堂、养宠知识、医院服务业务、康复案例、预约就诊、预约手续、宠物公益活动、宠物认领、联系我们、个人中心、后台管理主页、系统管理、门店主页管理、业务管理、辅助工具管理、文件管理、系统监控、代码生成、任务调度、个性化设置等,系统用例图如下所示:图4-5系统用例图对各个模块进行分解,对他们之间的相互调用关系和数据传递逻辑进行分析,从而得出各个模块的设计描述说明(因论文篇幅问题,此节只列举出有代表性的功能模块进行详细设计说明,与其他模块的设计方法基本一致,不再赘述):

4.2.1门店首页模块详细设计1)、视图层:门店首页视图层包括Layui路由route组件、JQuery组件库、Swapper切换组件、百度地图Bmap组件以及Random数字滚动组件,各个组件的描述说明如下表:表4-1门店首页视图层模块详细设计描述表组件名称功能描述输入算法描述处理输出Layui路由route组件将所有首页页面进行组合,在用户切换页面时渲染对应页面1、路由名称:name2、路由地址:urlindex.regRouter(res);//注册路由index.loadHome({//加载主页url:'#/main/home',name:'首页' });调用regRoute()注册路由,并调用loadHome()方法加载首页首页index的Dom对象JQuery组件库主要负责处理dom对象以及前后台交互数据处理元素编号:idJquery方法限定名:nameadmin.ajax({ url:config.cs, type:'GET', dataType:'JSON', data:{'id':1}, success:function(res){ //相关逻辑 },});调用jquery内置的方法进行数据处理和元素对象的处理渲染后的结果集或交互返回的结果集Swapper切换组件横向或纵向切换页面、元素增加页面的美观性和提供良好的交互页面元素编号:id自定义参数集合:{}varswiper=newSwiper('.ddphfou-block.swiper-container',{ //参数集合},pagination:{ //样式参数},});调用swiper工具类进行页面的元素渲染渲染后的页面dom对象百度地图Bmap组件实现web端的地图定位导航页面元素:id定点元素坐标:(x,y)varmap=newAMap.Map("container",{//参数});Map类封装的方法直接处理数据返回定位后的结果Random数字滚动组件实现数据的懒加载递增起始数据:num渲染元素:id渲染时间:timeadmin.util.animateNum('#ddphAnimNum1',null,2000,80);调用方法直接渲染返回渲染后的界面2)、控制层:首页模块在加载之前,需要访问web控制器获取数据,主要访问的控制器与数据交互描述说明如下表:表4-2控制器与数据交互详细设计描述说明表组件名称首页模块控制器功能描述处理前后端交互数据输入1、访问路径限定名:url2、分页参数limit3、数据类型:type算法描述@ApiOperation(value="获取首页医生Swiper")@GetMapping("swiper")@RequiresPermissions("doctors:list")publicResponseBodyUtilgetAllDoctorSwiper(intlimit,inttype){List<Doctors>resList;//具体逻辑returnnewResponseBodyUtil().data(resList).code(200).msg("查找成功!");}处理调用业务逻辑层处理前端请求的数据,对数据进行封装并返回输出处理后的数据,使用List封装3)、业务逻辑层 业务逻辑层是视图层和数据持久层的中介,负责数据转型、拆箱、封装、逻辑运算,主要设计的描述说明如下表:表4-3首页业务逻辑层详细设计描述说明表组件名称首页模块业务逻辑层功能描述处理用户请求的数据输入1、分页参数limit2、数据类型:type算法描述publicList<Doctors>listSwiper(intlimit,inttype){List<Doctors>doctors=doctorsMapper.findDoctorDetailByType(type);returndoctors;}处理调用数据持久层查询数据库数据,对数据进行封装并返回输出处理后的数据,使用List封装4)、实体模型层因为使用了ORM框架MyBatisPlus作为数据持久层框架,因此,实体模型中的属性,要求与数据库的列名一一对应,并使用@Data注解,在SpringContext加载时自动注入Getter和Setter,实体封装结构如下表表4-4医生实体封装结构表实体名称医生实体模型封装结构@Data@TableName("d_doctors")publicclassDoctors{/***医生编号id*/@TableId(value="id",type=IdType.AUTO)privateLongid;……}5)、数据持久层咚咚宠物医院使用MyBatisPlus框架作为数据持久层框架,提供了LambdaQueryWrapper条件查询,使用Lambda表达式可以实现不手写sql就能进行数据库数据查询,但是多表链接查询需要写sql,并指明对应关系,首页模块在获取医生数据的时候,需要关联用户表,查出相关的其他信息,如头像,昵称等,因此使用association标签进行一对一的映射查询,主要设计的描述说明如下表:表4-5门店首页数据持久层详细设计描述说明表组件名称门店首页数据持久层主表医生信息表d_doctors关联表用户表t_users功能描述关联查询出医生对应的用户信息输入1、分页限制:limit2、查询类型算法描述<resultMapid="doctorsX"type="com.lph.ddph.user.vo.DoctorsVO"><idcolumn="id"jdbcType="BIGINT"property="id"/>……<resultcolumn="appointment_des"jdbcType="VARCHAR"property="appointmentDes"/><associationproperty="user"javaType="com.lph.ddph.system.domain.User"><idcolumn="USER_ID"jdbcType="DECIMAL"property="userId"/>……<resultcolumn="description"jdbcType="VARCHAR"property="description"/></association></resultMap>处理调用MapperStatements生成sql,创建SqlSession查询数据输出查询结果4.2.2预约就诊模块详细设计1)、视图层:预约就诊模块视图层包括Layui路由route组件、JQuery组件库、dataGrid数据表格组件、FullCalendar考勤安排组件,各个组件的描述说明如下表(Layui路由route组件、JQuery组件库已在4.2.1节中详细介绍,此处不再赘述):表4-6预约就诊模块视图层模块详细设计描述表组件名称功能描述输入算法描述处理输出dataGrid数据表格渲染预约列表,对数据进行分页筛选分页参数:limit分页参数:page筛选参数:status界面元素:idlaypage.render({ //参数jump:function(obj,first){ //结果处理逻辑 }});对数据进行渲染,并分页显示渲染后的界面元素FullCalendar考勤安排组件对医生的出勤安排数据做界面可视化,并统计可预约名额医生出勤数据:data元素编号:idvarcalendar=newFullCalendar.Calendar(document.getElementById('attendSheet'),{//参数},events:function(option,callback){//处理逻辑}对处理后的数据进行渲染,做可视化操作,并对预约数量为0的数据做限制预约操作医生可预约信息表2)、控制层:预约就诊模块主要访问的控制器与数据交互描述说明如下表:表4-7预约就诊模块控制器与数据交互详细设计描述说明表组件名称预约就诊医生工作表模块控制器功能描述获取预约诊医生工作表前后端交互数据输入1、访问路径限定名:url2、医生编号:did算法描述@ApiOperation(value="根据doctorId获取医生出勤表-医生信息")@GetMapping("getWorkTimeByDid")@ResponseBodypublicResponseBodyUtilgetWorkTimeByDid(@RequestParam(value="did")LongdoctorId){List<DoctorWorkTimeVO>resList=worktimesService.findWorktimesByDoctorId(worktimes);//处理逻辑}catch(Exceptione){log.debug("获取医生工作时间异常!{}",e.toString());return获取医生工作时间失败,请稍后重试}returnnewResponseBodyUtil().data(resList).put("info",resmap).code(200).msg("查找成功!");}处理调用业务逻辑层处理前端请求的数据,对数据进行封装并返回输出处理后的数据,使用List封装表4-8新增预约就诊模块控制器与数据交互详细设计描述说明表组件名称新增预约就诊模块控制器功能描述新增预约诊前后端交互数据输入访问路径限定名:url2、医生编号:did3、用户编号:uid4、医生工作表编号:wtId算法描述@ControllerEndpoint(operation="用户新增Appointments",exceptionMessage="新增Appointments失败")@PostMapping("newAppointment")publicResponseBodyUtilUserAddNewAppointment(AppointmentsVOappointments,@RequestParam("wtId")LongworkTimeSheetId){//获取医生工作表WorktimesworkTimes=this.worktimesService.getById(workTimeSheetId);//判断是否存在,以及是否剩余名额if(workTimes==null){return预约失败,请稍后重试}if(workTimes.getMaxNumber()-workTimes.getHadNumber()<=0){return预约名额已经被抢走了}if(appointments.getUserId()==null||appointments.getUserId().toString().trim().length()==0){return预约失败,请稍后重试}//判断用户是否已存在未就诊的预约,存在未就诊的预约的用户不能继续生成新的预约//查找已有的预约existAppointmentif(existAppointment!=0){return已存在未就诊的预约,预约失败}//否则为用户添加新预约this.appointmentsService.createAppointments(appointments);//添加后要修改已预约人数//参数1为原数+1,-1为原数-1*/this.worktimesService.addOrSubHadNumber(workTimeSheetId,1);return预约成功}处理调用业务逻辑层处理前端请求的数据,对数据进行封装并返回输出处理后的结果状态码3)、业务逻辑层 预约就诊模块主要设计的描述说明如下表:表4-9预约就诊模块逻辑层详细设计描述说明表组件名称预约就诊模块业务逻辑层功能描述处理用户请求的数据输入1、封装医生id的对象Worktimes算法描述@OverridepublicList<DoctorWorkTimeVO>findWorktimesByDoctorId(Worktimesworktimes){LambdaQueryWrapper<Worktimes>queryWrapper=newLambdaQueryWrapper<>();//设置查询条件找出医生出勤信息List<Worktimes>wt=this.worktimesMapper.selectList(queryWrapper);//计算出本周开始日期*///计算出接下来14天后结束日期*///计算出本周开始14天日期范围*///根据计算出来的日期排序工作表*///封装工作表对象到resListreturnresList;}处理调用数据持久层查询数据库数据,对数据进行封装并返回输出处理后的数据,使用List封装表4-10新增预约就诊模块逻辑层详细设计描述说明表组件名称新增预约就诊模块业务逻辑层功能描述处理用户新增预约的请求输入封装医生编号id的对象Appointments封装医生出勤表编号id的对象Appointments封装用户编号id的对象Appointments算法描述@Override@TransactionalpublicvoidcreateAppointments(Appointmentsappointments){this.save(appointments);}处理调用数据持久层查询数据库数据,对数据进行封装并返回输出处理后的数据,使用List封装4)、实体模型层预约就诊模块实体封装结构如下表:表4-11医生工作表实体封装结构表实体名称医生工作表(出勤表)实体模型封装结构@Data@TableName("d_worktimes")publicclassWorktimesimplementsSerializable{/**上班安排id*/@TableId(value="id",type=IdType.AUTO)privateLongid;/**医生id*/@TableField("doctor_id")privateLongdoctorId;/**当天上班时间*/@TableField("on_time")privateTimeonTime;/**当天下班时间*/@TableField("off_time")privateTimeoffTime;/**星期几:1:星期一、2:星期二7:星期天、8:星期一、9星期二14:星期天*/@TableField("week_day")privateIntegerweekDay;/**最大可预约数*/@TableField("max_number")privateIntegermaxNumber;/**已预约数*/@TableField("had_number")privateIntegerhadNumber;……}表4-12用户预约记录信息表实体模型封装结构表实体名称用户预约记录信息表实体模型封装结构@Data@TableName("u_appointments")publicclassAppointments{/**预约记录id*/@TableId(value="id",type=IdType.AUTO)privateLongid;/**预约状态:1成功待诊、2成功、已诊、0失败*/@TableField("a_status")privateIntegeraStatus;/**预约时间*/@TableField("a_time")privateDateaTime;/**预约时间区间*/@TableField("time_space")privateStringtimeSpace;/**用户id*/@TableField("user_id")privateLonguserId;/**预约医生id*/@TableField("doctor_id")privateLongdoctorId;/**医生工作表编号id*/@TableField("wt_id")privateLongwtId;……}5)、数据持久层预约就诊模块在获取医生出勤数据的时候,需要关联医生表,和用户信息表查出相关的其他信息,并且需要的字段较少,因此不使用MyBatisPlus的关联查询,直接使用自定义sql查询方式,查询接口以及方法详细设计说明如下表:表4-13预约就诊模块数据持久层详细设计描述说明表组件名称预约就诊模块数据持久层主表医生出勤表d_worktimes关联表用户表t_users、医生信息表d_doctors功能描述关联查询出医生对应的用户信息输入1、分页限制:limit、page2、医生编号:id算法描述接口方法:Stringewsql=queryWrapper.getCustomSqlSegment().replace("attend","wt.attend").replace("id","wt.id").replace("doctor_id","wt.doctor_id").replace("is_routine","wt.is_routine").replace("STATUS","wt.STATUS").replace("on_time","wt.on_time").replace("off_time","wt.off_time").replace("STATUS","wt.STATUS").replace("week_day","wt.week_day").replace("had_number","had_number");IPage<?>page=newPage<>(pageParameter.getPage(),pageParameter.getLimit());Sql语句SELECTwt.idaswt_id,wt.is_routine,……wt.create_time,u.usernameasdtName,u.AVATARasavatar,dt.head_imgasheadImgFROMd_worktimeswtLEFTJOINd_doctorsdtONwt.doctor_id=dt.idLEFTJOINt_useruONu.user_id=(SELECTdts.uidFROMd_doctorsdtsWHEREdts.id=wt.doctor_id)${ewsql}处理创建SqlSession查询数据输出查询结果4.3数据库设计4.3.1数据库需求分析与设计 咚咚宠物医院网站的设计,不管是前台门店系统还是后台管理系统,均需要提供信息的查询、删除、新增、更新等功能,所建立的数据库,不仅要满足各种数据类型的存储,还要满足各类数据的输入和输出,在这个基础上做到“快速”、“准确”、“高效”。通过结合上述系统功能的分析,总结出咚咚宠物医院网数据库的设计和实现需要如下主要的数据项:(注:由于论文篇幅有限,此处只列出主要数据项,次要数据项不一一阐述) 1)、用户:用户id、用户昵称、用户名、密码、真实姓名、部门id、邮箱、QQ号码、手机号码、微信号码、身份证号码、状态、生日、创建时间、修改时间、最近访问时间、性别、个人简介、用户头像、地址; 2)、医生:医生编号、医生对应用户、主治科目编号、就职时间、简介、负责工作、展示图、头像、状态、筛选类别、个人介绍子主题、标记、备注、职位、从业经验年限、关注度、好评率、评分、擅长科目1、擅长科目2、擅长科目3、擅长科目4、预约展示图片、工作地、预约简介; 3)、医院服务项目:编号、服务名称、服务内容简介、封面图片、服务美容介绍子主题、状态、标记、备注、小图标; 4)、考勤安排:编号id、医生编号id、星期几、当天上班时间、当天下班时间、是否常任、状态、标记、备注、是否请假、可预约数、已预约数;创建时间 5)、养宠知识:编号id、标题、内容、子主题、发布时间、发布者签名/来源、状态、收藏数、分类、备注、点击数、标记、封面图 6)、康复案例:编号id、标题、封面图、内容、发布时间、发布者/来源、状态、标记、子主题、备注 7)、部门:部门编号id、上级部门、部门名称、排序、创建时间、部门职能、部门介绍、成立时间、负责人、标记、备注 8)、定时任务:任务编号、方法名称、参数、cron表达式、任务状态、备注、创建时间 9)、菜单资源:菜单编号、上级菜单编号、菜单/按钮名称、对应路由路径、对应组件名称、权限标识、图标、类型、排序、创建时间、修改时间 10)、角色:角色编号id、角色名、角色描述、修改时间、创建时间 11)、个人设置:用户id、系统主题、开启多标签、导航栏样式、是否全屏、侧边栏加载样式 12)、官方活动:编号id、活动名称、活动简介、内容、开始时间、结束时间、发布时间、发布者/来源、显示状态、负责人、活动子主题、标记、备注、封面图 13)、预约:预约编号、用户编号、预约医生编号、预约时间区间、预约时间、医生出勤表id、疾病描述、预约状态、是否取消、创建时间、标记、备注 14)、联系我们:记录编号id、联系人、联系方式、留言、留言时间、状态、标记、备注 15)、养宠课堂:编号id、标题、封面图、内容、视频链接、发布时间、发布人、状态、宠物类别、点击量、收藏数、标记、备注 16)、宠物认领/领养:编号id、发布用户id、标题、宠物图片链接、内容、联系方式、宠物年龄、状态、发布时间、宠物外貌描述、是否绝育、是否接种疫苗、认领/领养时间、认领/领养地点、动物类别、文章类型、标记、备注、子主题、宠物昵称 17)、用户收藏表:编号id、用户id、收藏内容id、收藏时间、标记、备注4.3.2数据库概念设计概述:概念设计对用户描述的现实世界中的事物,例如:一个学校、一个公司、一架直升机等,通过对事物的属性进行归类、约束、聚集、甚至泛化和概括等,在避开数据库具体实现细节的前提下,用一种抽象的形式,建立起抽象的概念数据模型,达到扩充实体的目的,这就是数据库概念设计。E-R图便能很好地描述这种抽象的关系,咚咚宠物医院所规划出的实体其对应的实体-属性分别如下图:(注:由于论文篇幅有限,此处只列出主要数据项,次要数据项不一一阐述)图4-6菜单资源实体属性图4-7用户实体属性图4-8医生实体属性图4-9考勤安排实体属性图4-10医院服务实体属性图4-11养宠知识实体属性图4-12康复案例实体属性图4-13部门实体属性4-14个人设置实体属性4-15留言联系实体属性4-16养宠课堂实体属性图4-17宠物领养/认领实体属性图4-18用户收藏实体属性图4-19角色实体属性4.3.3数据库逻辑结构设计将现实世界的抽象概念数据模型,是数据库逻辑结构设计的主要工作。逻辑模式可以是MySQL、sqlServer、Oracle等关系型数据库设计模式中的一种。咚咚宠物医院中,设计有两个数据库,一共有42张数据库表,在符合三大范式的前提下,适当使用反范式,使数据库设计更加合理,性能更加好。例如在预约功能中,医生和用户是整个功能的主体,医生对应着用户,有相应的服务项目、工作时间表和预约记录,如果单纯按照三大范式来实现数据库的逻辑结构,那在查询或者更新数据时,将引发多次联表查询或修改操作,在数据量大的时候,将严重影响数据库性能和用户体验,因此使用反范式的概念,在不影响数据库逻辑关系的前提下,在中间表添加冗余字段,减少联表操作,达到提高性能的目的。以下是对应的物理数据模型图(图4-20):图4-20物理数据模型图咚咚宠物医院的各个数据库表的字段,以及所包含的含义如下表所示:(注:由于论文篇幅有限,此处只列出主要数据库表逻辑结构,次要数据库表逻辑结构不一一阐述)表4-14用户表(t_user)字段名称字段代码字段类型主外键约束备注用户IDuser_idbigintPKNotNull用户昵称nicknamevarchar用户名usernamevarcharNotNull真实姓名truenamevarchar密码passwordvarcharNotNull部门IDdept_idbigint邮箱emailvarcharQQqqvarchar联系电话mobilevarchar微信wechatvarchar身份证号码id_cardchar状态STATUScharNotNull1:启用2:禁用生日birthdaydatetime创建时间create_timedatetime修改时间modify_timedatetimeNotNull最近访问时间last_login_timedatetime性别ssexchar0男1女2保密描述descriptionvarchar用户头像avatarvarchar住址locationvarchar表4-15医生信息表(d_doctor)字段名称字段代码字段类型主/外键约束备注医生编号ididbigintPKNotNull对应的用户编号uidbigintNotNull主治科目编号idservice_idbigintNotNull就职时间assume_timedatetime简介introductionlongtextNotNull负责工作workvarcharNotNull展示图swip_imgvarcharNotNull头像head_imgvarcharNotNull状态STATUSintNotNull1在职0离职筛选类别,TYPEint子主题subjectsvarcharNotNull标记markint备注remarkvarchar职位positionvarchar从业经验exprienceint(年)关注度followint好评度agreeint评分commentint(0~100)%擅长专科1skillful_avarchar擅长专科2skillful_bvarchar擅长专科3skillful_cvarchar擅长专科4skillful_dvarchar预约展示图片appointment_imgvarcharNotNull工作地work_locatvarcharNotNull预约工作简介appointment_desvarchar表4-16医院服务表(d_service)字段名称字段代码字段类型主键/外键约束备注编号idbigintPKNotNull服务名ser_namecharNotNull服务内容contentslongtextNotNull图片链接simgvarcharNotNull子主题subjectsvarcharNotNull状态STATUSintNotNull1显示0不显示标记markint备注remarkvarchar小图标smimgvarcharNotNull表4-17医生出勤表(d_worktimes)字段名称字段代码字段类型主/外键约束备注上班安排ididbigintPKNotNull医生iddoctor_idbigintNotNull星期几week_dayintNotNull:1:星期一、2:星期二7:星期天、8:星期一、9星期二14:星期天当天上班时间on_timetimeNotNull当天下班时间off_timetimeNotNull是否常任医生is_routineintNotNull1是0不是状态STATUSintNotNull1有效、进行中,0无效、取消标记markint备注remarkvarchar是否请假attendcharNotNull1、是0、否最大可预约数max_numberintNotNull已预约数had_numberintNotNull创建时间create_timedatetimeNotNull表4-18养宠知识表(pet_knowledges)字段名称字段代码字段类型主/外键约束备注ididbigintPKNotNull标题titlevarcharNotNull内容contentslongtextNotNull子主题subjectsvarcharNotNull发布时间create_timedatetimeNotNull发布者签名、来源publishervarchar状态STATUSintNotNull1显示,0不显示收藏数collectionbigint分类animal_idbigintNotNull备注remarkvarchar点击数clickbigint标记markint封面图covervarcharNotNull表4-19健康案例表(sys_healthexample)字段名称字段代码字段类型主键/外键约束备注ididbigintPKNotNull标题titlevarcharNotNull示例封面图himgvarcharNotNull内容contentslongtextNotNull发布时间create_timedatetime发布者签名、来源publishervarcharNotNull状态STATUSintNotNull1:显示0:不显示标记markint备注remarkvarchar子主题subjectsvarcharNotNull表4-20部门表(t_dept)字段名称字段代码字段类型主键/外键约束备注部门IDdept_idbigintPKNotNull上级部门IDparent_idbigintNotNull部门名称dept_namevarcharNotNull排序order_numdouble创建时间create_timedatetimeNotNull修改时间modify_timedatetime部门职能dept_workvarchar部门介绍dept_brieflongtext成立时间dept_timedatetimeNotNull负责人directorvarchar标记markint备注remarkvarchar表4-21定时任务表(t_job)字段名称字段代码字段类型主/外键约束备注任务idJOB_IDbigintPKNotNullBean名称BEAN_NAMEvarcharNotNull方法名METHOD_NAMEvarcharNotNull参数PARAMSvarcharNotNullcron表达式CRON_EXPRESSIONvarcharNotNull任务状态STATUScharNotNull0正常1暂停备注REMARKvarchar创建时间CREATE_TIMEdatetime表4-22菜单资源表(t_menu)字段名称字段代码字段类型主键/外键约束备注菜单/按钮IDMENU_IDbigintPKNotNull上级菜单IDPARENT_IDbigintNotNull菜单/按钮名称MENU_NAMEvarcharNotNull对应路由pathPATHvarcharNotNull对应路由组件COMPONENTvarcharcomponent权限标识PERMSvarcharNotNull图标ICONvarchar类型TYPEcharNotNull0菜单1按钮排序ORDER_NUMdoubleNotNull创建时间CREATE_TIMEdatetimeNotNull修改时间MODIFY_TIMEdatetime表4-23角色表(t_role)字段名称字段代码字段类型主键/外键约束备注角色IDROLE_IDbigintPKNotNull角色名称ROLE_NAMEvarcharNotNull角色描述REMARKvarchar创建时间CREATE_TIMEdatetimeNotNull修改时间MODIFY_TIMEdatetime表4-24菜单角色关联表(t_role_menu)字段名称字段代码字段类型主键/外键约束备注角色编号ROLE_IDbigintNotNull菜单编号MENU_IDbigintNotNull表4-25用户角色关联表(t_user_role)字段名称字段代码字段类型主键/外键约束备注用户编号USER_IDbigintNotNull角色编号ROLE_IDbigintNotNull表4-26公益活动信息表(u_ativities)字段名称字段代码字段类型主键/外键约束备注编号ididbigintPKNotNull活动名称act_namevarcharNotNull活动简介act_briefvarcharNotNull内容contentslongtextNotNull开始时间start_timedatetimeNotNull结束时间end_timedatetimeNotNull发布时间create_timedatetimeNotNull发布者/来源publishervarcharNotNull显示状态STATUSintNotNull1显示0不显示负责人directorvarcharNotNull子主题subjectvarcharNotNull标记markint备注remarkvarchar封面图covervarcharNotNull表4-27用户预约表(u_appointments)字段名称字段代码字段类型主键/外键约束备注预约ididbigintPKNotNull用户iduser_idbigintNotNull预约医生iddoctor_idbigintNotNull宠物idpet_idbigint预约时间区间time_spacevarcharNotNull预约时间a_timedateNotNull预约、看病时间段idwt_idbigintNotNull疾病描述disease_detialvarchar预约状态a_STATUSintNotNull1:成功待诊2:成功已诊0:失败是否取消预约is_cancelintNotNull1:是,取消0:否创建时间create_timedatetimeNotNull标记markint备注remarkvarchar表4-28留言联系表(u_contracts)字段名称字段代码字段类型主键/外键约束备注ididbigintPKNotNull用户名unamevarcharNotNull联系方式contractcharNotNull留言msgvarcharNotNull留言时间create_timedatetimeNotNull状态STATUScharNotNull1、已经处理0.待处理备注remarkvarchar标记markint表4-29养宠课堂表(t_courses)字段名称字段代码字段类型主键/外键约束备注ididbigintPKNotNull标题titlevarcharNotNull封面图片urlcimgvarcharNotNull内容contentslongtextNotNull视频连接video_urlvarcharNotNull发布时间create_timedatetimeNotNull发布人签名、来源publishervarcharNotNull状态STATUSintNotNull1:显示0:不显示宠物类别category_idbigintNotNull点击量clicksbigint收藏数collectionbigint标记markint备注remarkvarchar表4-30宠物领养认领表(u_findpets)字段名称字段代码字段类型主键/外键约束备注ididvarcharPKNotNull发布的用户iduser_idbigintNotNull标题titlevarcharNotNull宠物图片链接urlfimgvarcharNotNull内容contentslongtextNotNull联系方式contractcharNotNull宠物年龄pet_ageint状态STATUSintNotNull1:显示(未认领),0:不显示(已认领)发布时间create_timedatetimeNotNull宠物外貌描述pet_appearancevarcharNotNull是否绝育pet_sterilisationintNotNull1、是,0、否是否接种疫苗pet_vaccinumintNotNull1、是,0、否丢失/认领时间adopt_timedatetime丢失/认领地点adopt_locatvarchar动物类别idanimal_idbigintNotNull类型TYPEintNotNull1:领养公告,0:寻找公告标记markint备注remarkvarchar子主题subjectsvarcharNotNull宠物昵称pet_namevarcharNotNull

5系统实现5.1门店系统实现5.1.1门店首页 门店首页模块是咚咚宠物医院网站的入口,是介绍医院宗旨、属性、特点的模块,用户可以在首页浏览游客权限下的内容;作为整个网站内容的起点,界面风格应该有自己的特点,这里使用的是视频作为背景,文字上浮于视频之上的排版页面风格,用户一进来便能知道咚咚宠物医院的特性与服务宗旨,如下图: 页面采用Swapper5滑动切换形式的页面布局,切换到第二页时展示医院的技术实力以及医疗资源的充足,如下图:接着展示医院的高级医生资源,介绍他们的专业知识背景以及擅长的资料科目,如下图所示: 新闻资讯是展示医院相关动态的地方,这里采用Slide横向滑动切换的形式,数据源在数据库均可管理编辑,如下图:下滑进入留言联系页面后,系统会自动定位用户的地理位置(如果用户允许咚咚宠物医院获取地理位置),并规划用户与宠物医院的导航路线,用户还可以在下方进行留言,管理员可以看到对应的留言信息对其进行处理,此处留言功能使用Spring的@Endpoint、@Limit注解,限制用户一个小时之内只可以留言一次,具体实现以及效果如下:5.1.2宠物课堂模块养宠课堂模块包括“养宠知识”和“养宠课堂”两个子模块;用户进入养宠知识后可以在左侧宠物分类导航栏中选择相关类型的宠物,系统会自动筛选出相关数据并展示给用户,用户点击相关的栏目进行查看,若用户已经登录,则可以收藏相关的内容,若用户还未登录,则只可以查看,而不能进行收藏操作。若用户选择养宠课堂菜单,则系统按默认排序,分页展示相关养宠课堂教学视频,用户可以在视频列表上方筛选自己想要看到的视频,或者按关键词进行搜索,搜索或筛选完毕后,系统展示相关的数据项,用户可以点击想要观看的视频进行观看,相关界面图如下:5.1.3医院相关服务介绍模块 医院相关服务主要介绍医院的主要业务项,与预约就诊相挂钩,选择服务项后可以知道该服务项下的相关医生,并选择医生进行预约,服务项与医生是一对多关系,具体主要实现代码和效果如下:5.1.4预约就诊模块 预约就诊模块是咚咚宠物医院的主要业务模块,是线上获取业务订单的主要途径,用户每次预约可以预约一个医生,并且在预约未过期或者预约未就诊时,不允许新的预约生成,系统设定用户可预约的时间范围为14天,即医生的出勤安排是按周次安排的,并且,考虑到医生请假和常任的情况,出勤最多安排两周,实现的核心代码和效果如下:5.1.5宠物认领模块 宠物认领模块是咚咚宠物医院宠医公益模块中的子模块,认领公告文章包括“认领”和“领养”两种类型,由于需要的时段基本相同,在设计时,只需要对类型设计标识符的识别即可,具体实现核心代码和效果图如下:5.1.6个人中心模块个人中心模块包括用户个人名片卡,用户基本信息,预约管理,认领/领养,个人收藏,账号绑定,账号安全管理,实现主要代码和效果如下: 1)、个人名片卡:名片卡除了获取用户基本信息,还可以修改头像,因为头像在数据库中存储的是路径,因此设计时作为单独可修改部分 2)、用户基本信息:主要展示用户的账号个人信息,并且修改账户信息3)、预约管理:获取当前登录用户所有的预约信息,并展示,用户可以根据不同的预约项目状态,进行不同的操作,如果预约状态为“成功预约”并且是“未就诊”状态,则用户可以取消预约,如果预约状态为“失败”或者“已就诊”,则用户只可以对预约进行查看,由于医院要将所有预约记录做保存,因此不提供删除功能,具体实现的主要代码和效果如下:4)、个人收藏:此处展示用户收藏的记录,点击收藏的内容标题可以查看对应的内容,用户可以对收藏的内容进行取消收藏操作,如果用户收藏的内容被删除或者被屏蔽,则提醒用户“相关文章已被屏蔽”5)、账号绑定:账号绑定是用户实名的手段之一,主要是手机号码绑定,和邮箱绑定,绑定之前会校验手机号码和邮箱是否已经被使用,没被使用的手机号码和邮箱才能被成功绑定,并且需要验证码验证6)、账号安全管理:包括修改密码和重置密码;修改密码需要校验原始密码,重置密码需要校验绑定的手机号码短信验证码5.2后台管理系统实现5.2.1用户管理 用户管理可以进行用户锁定、删除、修改信息、添加用户、重置密码、修改绑定等操作5.2.2养宠课堂 管理所有养宠课堂视频资源,支持查看播放,编辑,新增,删除等,主要使用SpringHttpServletRequest的getOutPutStream()流写入方法,对视频文件进行数据流的读取和写入,主要代码和实现效果如下:5.2.3留言管理 管理员可以根据留言管理的联系方式,以及联系人对留言的用户进行电话回复,并填写处理结果把留言状态改为已处理,相关核心代码和实现效果如下:5.2.4预约就诊 预约就诊负责管理医院所有的预约记录,包括筛选,删除,设置状态,打印票据等,相关实现核心代码和效果如下:5.2.5医生出勤管理 医生出勤安排主要使用自定义的日期工具类对日期进行计算、排序、统计等,支持按周次进行值班安排,常任医生和非常任医生的区别在于,常任医生除非请假,否则一周的上班时间为满班次,非常任医生的值班时间可随意安排;在出勤安排模块中,管理员可以修改、删除、新增值班安排,修改前可以进行多条件筛选,相关核心代码和实现效果如下:5.2.6文件管理 文件管理作为咚咚宠物医院网站媒体资源的管理中心,发挥着丰富网站内容的作用,内置有临时文件中心,可以定时删除临时文件,以保证服务器稳定运行,也可以筛选出最近上传的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论