目 录

摘  要

Abstract

第一章 绪  论

1.1 研究背景及意义

1.2 国内外研究现状

1.3 主要内容

第二章 关键技术

2.1 Django框架

2.2 Python语言

2.3 MySQL数据库

2.4 B/S体系结构

第三章 系统分析

3.1 系统可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 操作可行性

3.2 系统功能分析

3.2.1 功能性分析

3.2.2 非功能性分析

3.3 系统用例分析

3.4 数据流程分析

第四章 总体设计

4.1 系统架构设计

4.2 系统模块设计

4.2.2 注册时序图

4.2.3 登录时序图

4.2.4 管理员修改用户信息时序图

4.2.5 管理员管理系统信息时序图

4.3 数据库设计

4.3.1 数据库概念结构设计

4.3.2 数据库逻辑结构设计

第五章 详细设计与实现

5.1 前端首页模块

5.2 用户注册模块

5.3 登录模块

5.4 前端注册用户功能模块

5.4.1 医疗资讯模块

5.4.2 AI分析模块

5.4.3 医生信息模块

5.4.4 个人中心模块

5.5 前端医生用户功能模块

5.5.1 网站公告模块

5.5.2 个人中心模块

5.6 后端管理员功能模块

5.6.1 用户管理模块

5.6.2 用户档案管理模块

5.6.3 医生信息管理模块

5.6.4 系统管理模块

5.6.5 网站公告管理模块

5.6.6 资源管理模块

第六章 系统测试

6.1 系统测试的目的

6.2 测试方法

6.3 测试用例

6.3.1 用户登录功能测试

6.3.2 创建数据测试 

6.3.3 修改数据测试 

6.3.4 查询数据测试 

6.4 测试结果

结  论

参考文献

致  谢

附 录

  

随着医疗信息化需求的持续增长,智能化服务成为提升医疗效率与用户体验的重要方向。基于此背景下,本系统结合Python生态的技术优势,构建了一个集用户互动、AI辅助分析与医疗资源管理于一体的智能平台。系统采用Django框架作为后端核心,利用其高效的MVC架构实现业务逻辑与数据交互,前端基于Vue3构建界面,数据存储依赖MySQL数据库,保障信息的安全性与稳定性。系统集成第三方AI工具KIMI,通过iframe模块嵌入,为用户提供疾病分析、健康建议等智能化服务。  

系统功能覆盖用户与医生的核心需求,包括注册登录、医疗资讯浏览、医生信息查询及在线咨询,支持个性化健康管理。管理员可进行用户管理、资讯发布、公告维护及数据统计,同时通过可视化界面监控系统运行状态。针对医疗场景的特殊性,系统设计了患者档案管理、诊断记录追踪及在线问诊流程,结合AI分析能力提升诊疗效率。通过前后端分离架构与模块化设计,系统实现了高扩展性与低耦合性,满足不同角色用户的操作需求,推动医疗服务向数字化、智能化转型。

关键词:Django框架;智能医疗咨询系统;AI辅助分析

Abstract

As the demand for medical informatization continues to grow, intelligent services have become a crucial direction for improving medical efficiency and user experience. In this context, our system leverages the technical advantages of the Python ecosystem to build an intelligent platform that integrates user interaction, AI-assisted analysis, and medical resource management. The system uses the Django framework as its backend core, utilizing its efficient MVC architecture to achieve business logic and data interaction. The frontend is built on Vue3 for the interface, with data storage relying on a MySQL database to ensure information security and stability. The system integrates third-party AI tool KIMI, which is embedded through the iframe module, providing users with intelligent services such as disease analysis and health recommendations.

The system's functions cover the core needs of users and doctors, including registration and login, medical information browsing, doctor information queries, and online consultations, supporting personalized health management. Administrators can manage users, publish information, maintain announcements, and conduct data statistics, while monitoring system operation status through a visual interface. In response to the unique characteristics of medical scenarios, the system has designed patient record management, diagnosis tracking, and online consultation processes, enhancing diagnostic efficiency with AI analysis capabilities. Through a front-end and back-end separation architecture and modular design, the system achieves high scalability and low coupling, meeting the operational requirements of different user roles and promoting the digital and intelligent transformation of medical services.

Key words: Django framework; intelligent medical consultation system; AI assisted analysis

第一章   

1.1研究背景及意义

随着医疗需求的持续增长与服务模式的多样化发展,传统医疗服务在信息传递效率与资源协调方面面临显著挑战。患者对便捷获取医疗知识、精准匹配医生资源及高效管理健康档案的需求日益迫切,而现有平台往往存在功能分散、交互体验单一等问题[1]。特别是在医疗资讯传播与医患沟通环节,缺乏系统化的技术支持导致信息更新滞后、反馈机制薄弱。与此同时,医疗机构在数据整合与流程优化方面的投入不足,难以满足精细化管理和个性化服务的实际要求[2]。在此背景下,构建一个以多角色协同为核心、覆盖全流程服务的医疗咨询系统,成为推动行业数字化升级的关键路径。

该系统的开发基于Python语言生态的技术体系,结合Django后端框架与Vue3前端架构,形成前后端分离的可扩展结构。通过MySQL数据库实现用户行为数据与医疗资源的高效存储与调用,保障系统运行的稳定性与安全性[3]。针对用户端,系统提供资讯浏览、医生查询、在线咨询等功能,强化个体健康管理能力,针对医生与管理员,集成诊断记录追踪、公告发布、评论监管等模块,提升医疗资源调配与服务质量控制的效率。这种以技术驱动为核心的系统设计,不仅能够降低医患沟通成本,还通过模块化功能配置适应不同场景下的业务需求。其实际应用价值在于为医疗服务平台提供标准化解决方案,助力行业向智能化、规范化方向演进,最终推动优质医疗资源的合理分布与可持续利用。

1.2国内外研究现状

医疗信息化与智能化技术的融合已成为全球医疗行业的重要发展趋势[4]。国外在医疗数据整合与智能化服务领域积累了丰富经验,尤其在跨机构信息共享、电子病历标准化及远程诊疗平台建设方面取得显著进展[5]。欧美国家通过统一数据接口规范和区域化健康信息平台,实现了医院间患者档案的互通互联,减少了重复检查与信息孤岛现象。发达国家在医疗资源优化配置方面探索出多种模式,如基于大数据分析的预约调度系统,能够动态调整门诊资源分配,提升医疗机构运营效率[6]。然而,技术应用过程中仍面临数据安全风险与隐私保护难题,如何平衡技术创新与伦理约束成为国际研究重点。

国内智能医疗系统的研究起步较晚,但近年来依托政策支持与技术积累,逐步形成覆盖疾病管理、健康管理及辅助决策的多层次服务体系[7]。部分医疗机构通过集成多源数据,构建了面向特定人群的健康预警模型,为基层诊疗提供参考依据。部分地区试点推广的社区健康管理平台,通过实时采集居民健康指标并生成个性化干预建议,有效提升了慢性病防控效果[8]。与此同时,我国在智慧医院建设中注重技术适配性,针对不同层级医疗机构开发差异化解决方案,如三级医院侧重复杂病例的智能诊断支持,基层单位则聚焦基础症状的快速筛查功能。尽管如此,系统间的协同能力仍需加强,部分区域存在数据采集标准不一、系统兼容性不足等问题,制约了整体效能的发挥。

1.3主要内容

研究主要内容围绕医疗服务平台的设计与实现,基于Vue3和Django框架构建系统架构,涵盖注册登录、首页展示、医疗资讯浏览与互动、医生信息查询、AI智能分析接入、在线咨询以及个人中心等核心功能。通过MySQL实现数据持久化存储,结合Redis提升系统访问效率,并利用iframe嵌入第三方AI工具KIMI增强智能化服务。重点解决用户在线获取健康信息、咨询医生及获得初步诊断建议的需求,提升医疗服务的可及性与效率。

第二章 关键技术

2.1Django框架

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。

2.2Python语言

Python是一种简洁易读、跨平台且功能强大的编程语言[7]。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发[8]、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。

2.3MySQL数据库

MySQL 经过多次的更新,功能层面已经非常的丰富和完善了,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQLl支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷[7][8]。

数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构

2.4B/S体系结构

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如ChromeSafariMicrosoft EdgeNetscape NavigatorInternet Explorer,服务器安装SQL ServerOracleMYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。 

在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。

第三章 系统分析

3.1系统可行性分析

3.1.1技术可行性

本系统的开发采用成熟稳定的主流技术栈,从前端的Vue3框架实现响应式用户界面,到后端Django框架处理业务逻辑,再到MySQL作为数据存储方案,整体架构具备良好的扩展性与兼容性。系统通过RESTful API实现前后端分离,便于并行开发与后期维护,利用Redis进行热点数据缓存,提升访问效率。AI分析模块通过iframe嵌入第三方KIMI工具,接口调用方式简单且安全可控。团队成员具备相关技术背景,能够胜任系统的设计、开发与调试工作。

3.1.2经济可行性

经济可行性分析还需考虑项目成本与预期收益。项目成本主要包括开发成本、运维成本及潜在的技术升级费用。运维成本则涉及服务器托管、数据备份与系统维护等支出。通过精细化管理和技术选型优化,如采用开源软件降低许可费用,利用云服务弹性伸缩控制运维成本,可有效控制总体投入。

3.1.3操作可行性

系统从用户角色出发,分别设置了注册用户、医生用户和管理员三种权限体系,各功能模块清晰易用,符合医疗行业的使用习惯。前端界面简洁直观,支持多终端适配,降低了学习门槛。后台管理系统提供可视化操作面板,便于管理员高效完成数据维护与内容发布等工作。开发过程中采用敏捷开发模式,分阶段交付成果并及时调整需求,确保项目进度可控。团队具备完善的开发流程与测试机制,能有效应对实施过程中的各类问题,整个项目的执行路径明确,落地性强,具备良好的操作可行性。

3.2系统功能分析

3.2.1功能性分析

智能医疗咨询系统平台系统划分为了前端模块和后端模块两大部分。

注册用户模块:

注册登录:注册功能为用户提供了一个界面,让他们可以输入个人信息来创建一个新账户。登录功能则允许用户输入他们的凭证用户名和密码来访问他们的账户。

首页:首页是用户访问网站时首先看到的页面,它包含一个轮播图来展示最新或重要的信息,医疗资讯部分提供最新的健康和医疗新闻,而医生信息部分则展示医生的详细资料,用户可以浏览并进行点赞、收藏和评论。

医疗资讯:用户可以浏览各种医疗相关的新闻和文章,对感兴趣的内容进行点赞、收藏以及发表评论,从而与社区互动并分享自己的观点。

AI分析:该模块集成了第三方智能AI KIMI,为用户提供高级的数据分析和预测功能。用户可以通过这个模块获得个性化的健康建议和分析结果。

医生信息:用户可以查看医生的详细资料,包括专业背景、工作经验和患者评价等。他们还可以对医生信息进行点赞、收藏和评论,并通过咨询功能直接与医生进行沟通。

个人中心:个人中心是用户管理个人信息和账户设置的地方。用户可以查看和管理他们的收藏内容、诊断信息、用户档案,并通过在线咨询功能与医疗服务提供者进行交流。

医生用户模块:

注册登录:用户可以通过简洁的表单界面进行注册和登录操作,支持邮箱或手机号注册,并提供忘记密码和密码重置功能,确保用户能够安全便捷地管理自己的账户信息。

首页:首页设计包含动态轮播图展示最新医疗资讯或活动,网站公告区域显示最新的政策或通知,医疗资讯板块提供丰富的健康知识和行业动态,医生信息区域展示医生的专业背景和特长,方便用户了解和选择合适的医生。

网站公告:网站公告板块用于发布和展示最新的医疗政策、医院通知或活动信息,确保用户能够及时获取重要信息,增强用户对平台的信任和依赖。

医疗资讯:用户可以浏览各类医疗健康文章,对感兴趣的内容进行点赞、收藏和评论,增加用户互动性,同时帮助用户更好地获取和分享健康知识。

AI分析:通过外接第三方iframe模块KIMI,用户可以进行个性化的健康数据分析和评估,利用AI技术为用户提供科学的健康建议和预警。

医生信息:用户可以查看医生的详细资料,包括专业背景、工作经历和患者评价等,同时可以对医生信息进行点赞、收藏和评论,帮助用户更好地选择合适的医生进行咨询和治疗。

个人中心:个人中心为用户提供了一个集中的管理区域,用户可以查看和管理自己的收藏内容、诊断信息以及在线咨询记录,方便用户随时回顾和整理诊断信息和咨询历史。

管理员模块:

登录功能:管理员可以通过登录界面输入账号密码进行系统访问,确保只有授权的人员可以进入管理后台。

数据分析:提供功能导航栏,管理员可以查看最新的公告信息,以及对自己的个人信息和密码进行查看或修改,确保信息的准确性和安全性。

用户管理:管理员可以对系统内的不同用户类型进行管理,包括但不限于管理员、医生用户和注册用户。可以进行添加、查询、删除操作,并查看用户的详细信息。

医生信息管理:管理员可以对医生的信息进行管理,包括添加新的医生信息、查询现有医生信息、删除不再需要的医生信息,以及查看医生的详细信息和相关评论。

在线咨询管理:管理员可以对在线咨询记录进行管理,包括查询和删除操作,查看咨询详情以及进行诊断记录的管理。

网站公告管理:管理员可以对网站公告进行管理,包括添加新的公告、查询和删除旧的公告,以及查看公告的详细内容。

新闻管理:管理员可以对医疗资讯进行管理,包括添加新的资讯、对资讯进行分类管理、查询和删除旧的资讯,查看资讯的详细内容以及查看用户对资讯的评论。

系统管理:管理员可以对网站的轮播图进行管理,包括添加新的轮播图、查询和删除旧的轮播图,以及查看轮播图的详细信息。

用户档案管理:管理员可以对用户的档案信息进行管理,包括添加新的档案、查询和删除旧的档案,以及查看档案的详细信息。

诊断信息管理:管理员可以对诊断信息进行管理,包括查询和删除操作,查看诊断详情,确保诊断信息的准确性和完整性。

iframe模块;提供ai分析KIMI功能,通过内嵌框架的方式集成人工智能分析工具,帮助管理员进行更深入的数据分析和处理。

3.2.2非功能性分析

智能医疗咨询系统的设计与实现,非功能性需求分析是一个重要的部分。非功能性需求主要关注的是系统如何运行,而不是它具体完成什么功能。这些需求包括性能、可用性、安全性、可维护性、可扩展性、易用性等方面。以下是一个关于智能医疗咨询系统非功能性需求分析的概要。

性能需求:系统需确保快速响应和高吞吐量,以支持大量用户同时访问,即使在高峰时段也能保持流畅的操作体验,避免因延迟或卡顿影响用户体验。

可用性:安系统必须具备高可用性,采用冗余部署、负载均衡等策略,确保即使部分组件故障也能迅速恢复服务,减少服务中断时间,保障用户业务的连续性。

安全性:鉴于系统处理用户敏感信息,如个人信息、支付数据等,必须实施严格的安全措施,包括数据加密、访问控制、防攻击机制等,以保护用户数据免受未授权访问或泄露。

可维护性:系统设计应注重可维护性,采用模块化、标准化的架构,提供详尽的开发文档和用户手册,确保系统易于理解和维护,降低长期运维成本。

可扩展性:随着业务的发展,系统可能需要扩展功能或提升性能。因此,系统需具备灵活的可扩展性,能够轻松添加新模块、优化性能,以应对未来增长的需求。

易用性:用户界面应直观易用,符合用户习惯,提供清晰的导航和友好的操作反馈,帮助用户快速上手并高效完成任务,提升整体用户满意度。

3.3系统用例分析

智能医疗咨询系统平台系统的完整UML用例图分别是图3-1、3-2、3-3。

注册用户角色用例如下图所示。

图3-1智能医疗咨询系统平台系统注册用户角色用例图

医生用户角色用例如下图所示。

图3-2智能医疗咨询系统平台系统医生用户角色用例图

管理员角色用例如下图所示。

图3-3智能医疗咨询系统平台系统管理员角色用例图

3.4数据流程分析

对系统的数据流进行分析,系统的使用者分为二类,一般用户,管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。

系统顶层数据流图如下图所示。

图3-4顶层数据流图

要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。

系统底层数据流图如下图所示。

图3-5底层数据流图

第四章 总体设计

本章主要讨论的内容包括智能医疗咨询系统平台系统的功能模块设计、数据库系统设计。

4.1系统架构设计

系统采用Django框架开发,该系统分为VIEW层、Controller层、Model层、DAO层和持久化数据存储层,VIEW层支持电脑浏览器访问系统。VIEW 层与 Controller 层紧密结合并系协同工作,共同完成前台页面的数据展示;Controller层为控制层,通过接收前端请求的参数进行业务处理,返回指定的路径或数据;Model层主要是服务层,用于业务逻辑处理;DAO 和持久化层,主要用于访问数据库和持久化数据。整个系统架构如图下所示。

图4-1系统架构图

4.2系统模块设计

在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本智能医疗咨询系统平台系统中的用例。那么接下来就要开始对本智能医疗咨询系统平台系统的架构、主要功能和数据库开始进行设计。智能医疗咨询系统平台系统根据前面章节的需求分析得出,智能医疗咨询系统平台系统的功能模块图如下图所示。

图4-2智能医疗咨询系统平台系统功能模块图

4.2.2注册时序图

用户通过注册模块发送注册请求,系统完成注册后返回确认信息。随后,用户通过登录模块发送登录请求,系统验证用户信息后允许访问目标系统。用户完成操作后可选择退出,系统终止会话。注册时序图,如图下所示。

图4-3注册时序图

4.2.3登录时序图

管理员输入登录信息后,登录界面将信息传递至前台管理界面,随后通过django框架读取数据库中的用户信息并返回。系统验证信息,若验证成功则登录成功,若验证失败则返回错误提示。登录时序图如图下所示。

图4-4登录时序图

4.2.4管理员修改用户信息时序图

管理员输入登录信息后,进入用户信息管理模块,选择增删改查操作并提交命令至数据库。数据库执行操作后返回成功状态,系统显示用户管理界面并提示操作成功。管理员修改用户信息时序图如图下所示。

图4-5管理员修改用户信息时序图

4.2.5管理员管理系统信息时序图

管理员通过访问系统发起请求,系统接收访问后转向系统信息模块进行管理操作。管理完成后,系统返回管理结果至系统,最终反馈给管理员,管理员可选择退出。管理员管理系统信息时序图如图下所示。

图4-6管理员管理系统信息时序图

4.3数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

4.3.1数据库概念结构设计

下面是整个智能医疗咨询系统平台系统中主要的数据库表总E-R实体关系图。

图4-7智能医疗咨询系统平台系统总E-R关系图

4.3.2数据库逻辑结构设计

通过上一小节中智能医疗咨询系统平台系统中总E-R关系图上得出一共需要创建多个数据表。在此主要罗列几个主要的数据库表结构设计。

表 4-1-access_token(登陆访问时长)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

token_id

int

临时访问牌ID

2

token

varchar

64

临时访问牌

3

info

text

65535

信息

4

maxage

int

最大寿命:默认2小时

5

create_time

timestamp

创建时间

6

update_time

timestamp

更新时间

7

user_id

int

用户编号

表 4-2-article(文章)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

article_id

mediumint

文章id

2

title

varchar

125

标题

3

type

varchar

64

文章分类

4

hits

int

点击数

5

praise_len

int

点赞数

6

create_time

timestamp

创建时间

7

update_time

timestamp

更新时间

8

source

varchar

255

来源

9

url

varchar

255

来源地址

10

tag

varchar

255

标签

11

content

longtext

4294967295

正文

12

img

varchar

255

封面图

13

description

text

65535

文章描述

表 4-3-article_type(文章分类)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

type_id

smallint

分类ID

2

display

smallint

显示顺序

3

name

varchar

16

分类名称

4

father_id

smallint

上级分类ID

5

description

varchar

255

描述

6

icon

text

65535

分类图标

7

url

varchar

255

外链地址

8

create_time

timestamp

创建时间

9

update_time

timestamp

更新时间

表 4-4-auth(用户权限管理)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

auth_id

int

授权ID

2

user_group

varchar

64

用户组

3

mod_name

varchar

64

模块名

4

table_name

varchar

64

表名

5

page_title

varchar

255

页面标题

6

path

varchar

255

路由路径

7

parent

varchar

64

父级菜单

8

parent_sort

int

父级菜单排序

9

position

varchar

32

位置

10

mode

varchar

32

跳转方式

11

add

tinyint

是否可增加

12

del

tinyint

是否可删除

13

set

tinyint

是否可修改

14

get

tinyint

是否可查看

15

field_add

text

65535

添加字段

16

field_set

text

65535

修改字段

17

field_get

text

65535

查询字段

18

table_nav_name

varchar

500

跨表导航名称

19

table_nav

varchar

500

跨表导航

20

option

text

65535

配置

21

create_time

timestamp

创建时间

22

update_time

timestamp

更新时间

表 4-5-code_token(验证码)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

code_token_id

int

验证码ID

2

token

varchar

255

令牌

3

code

varchar

255

验证码

4

expire_time

timestamp

失效时间

5

create_time

timestamp

创建时间

6

update_time

timestamp

更新时间

表 4-6-collect(收藏)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

collect_id

int

收藏ID

2

user_id

int

收藏人ID

3

source_table

varchar

255

来源表

4

source_field

varchar

255

来源字段

5

source_id

int

来源ID

6

title

varchar

255

标题

7

img

varchar

255

封面

8

create_time

timestamp

创建时间

9

update_time

timestamp

更新时间

表 4-7-comment(评论)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

comment_id

int

评论ID

2

user_id

int

评论人ID

3

reply_to_id

int

回复评论ID

4

content

longtext

4294967295

内容

5

nickname

varchar

255

昵称

6

avatar

varchar

255

头像地址

7

create_time

timestamp

创建时间

8

update_time

timestamp

更新时间

9

source_table

varchar

255

来源表

10

source_field

varchar

255

来源字段

11

source_id

int

来源ID

表 4-8-diagnostic_information(诊断信息)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

diagnostic_information_id

int

诊断信息ID

2

doctor_users

int

医生用户

3

doctors_name

varchar

64

医生姓名

4

registered_user

int

注册用户

5

user_name

varchar

64

用户姓名

6

advisory_title

varchar

64

咨询标题

7

diagnostic_results

text

65535

诊断结果

8

diagnostic_content

text

65535

诊断内容

9

create_time

datetime

创建时间

10

update_time

timestamp

更新时间

11

source_table

varchar

255

来源表

12

source_id

int

来源ID

13

source_user_id

int

来源用户

表 4-9-doctor_information(医生信息)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

doctor_information_id

int

医生信息ID

2

doctor_users

int

医生用户

3

doctors_name

varchar

64

医生姓名

4

department_name

varchar

64

科室名称

5

doctors_title

varchar

64

医生职称

6

employment_time

varchar

64

从业时间

7

doctors_picture

varchar

255

医生图片

8

specializes_in_specific_fields

text

65535

擅长领域

9

doctors_introduction

text

65535

医生介绍

10

doctor_details

longtext

4294967295

医生详情

11

hits

int

点击数

12

praise_len

int

点赞数

13

collect_len

int

收藏数

14

comment_len

int

评论数

15

recommend

int

智能推荐

16

online_consultation_limit_times

int

咨询限制次数

17

create_time

datetime

创建时间

18

update_time

timestamp

更新时间

表 4-10-doctor_user(医生用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

doctor_user_id

int

医生用户ID

2

doctors_name

varchar

64

医生姓名

3

doctors_phone

varchar

16

医生电话

4

examine_state

varchar

16

审核状态

5

user_id

int

用户ID

6

create_time

datetime

创建时间

7

update_time

timestamp

更新时间

表 4-11-hits(用户点击)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

hits_id

int

点赞ID

2

user_id

int

点赞人

3

create_time

timestamp

创建时间

4

update_time

timestamp

更新时间

5

source_table

varchar

255

来源表

6

source_field

varchar

255

来源字段

7

source_id

int

来源ID

表 4-12-notice(公告)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

notice_id

mediumint

公告ID

2

title

varchar

125

标题

3

content

longtext

4294967295

正文

4

create_time

timestamp

创建时间

5

update_time

timestamp

更新时间

表 4-13-online_consultation(在线咨询)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

online_consultation_id

int

在线咨询ID

2

doctor_users

int

医生用户

3

doctors_name

varchar

64

医生姓名

4

registered_user

int

注册用户

5

user_name

varchar

64

用户姓名

6

user_gender

varchar

64

用户性别

7

user_age

varchar

64

用户年龄

8

advisory_title

varchar

64

咨询标题

9

consulting_content

text

65535

咨询内容

10

diagnostic_information_limit_times

int

诊断限制次数

11

create_time

datetime

创建时间

12

update_time

timestamp

更新时间

13

source_table

varchar

255

来源表

14

source_id

int

来源ID

15

source_user_id

int

来源用户

表 4-14-praise(点赞)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

praise_id

int

点赞ID

2

user_id

int

点赞人

3

create_time

timestamp

创建时间

4

update_time

timestamp

更新时间

5

source_table

varchar

255

来源表

6

source_field

varchar

255

来源字段

7

source_id

int

来源ID

8

status

tinyint

点赞状态:1为点赞,0已取消

表 4-15-registered_user(注册用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

registered_user_id

int

注册用户ID

2

user_name

varchar

64

用户姓名

3

user_gender

varchar

64

用户性别

4

user_age

double

用户年龄

5

mobile_phone_number

varchar

16

手机号码

6

examine_state

varchar

16

审核状态

7

user_id

int

用户ID

8

create_time

datetime

创建时间

9

update_time

timestamp

更新时间

表 4-16-slides(轮播图)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

slides_id

int

轮播图ID

2

title

varchar

64

标题

3

content

varchar

255

内容

4

url

varchar

255

链接

5

img

varchar

255

轮播图

6

hits

int

点击量

7

create_time

timestamp

创建时间

8

update_time

timestamp

更新时间

表 4-17-upload(文件上传)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

upload_id

int

上传ID

2

name

varchar

64

文件名

3

path

varchar

255

访问路径

4

file

varchar

255

文件路径

5

display

varchar

255

显示顺序

6

father_id

int

父级ID

7

dir

varchar

255

文件夹

8

type

varchar

32

文件类型

表 4-18-user(用户账户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

user_id

int

用户ID

2

state

smallint

账户状态:(1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

所在用户组

4

login_time

timestamp

上次登录时间

5

phone

varchar

11

手机号码

6

phone_state

smallint

手机认证:(0未认证|1审核中|2已认证)

7

username

varchar

16

用户名

8

nickname

varchar

16

昵称

9

password

varchar

64

密码

10

email

varchar

64

邮箱

11

email_state

smallint

邮箱认证:(0未认证|1审核中|2已认证)

12

avatar

varchar

255

头像地址

13

open_id

varchar

255

针对获取用户信息字段

14

create_time

timestamp

创建时间

表 4-19-user_group(用户组)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

group_id

mediumint

用户组ID

2

display

smallint

显示顺序

3

name

varchar

16

名称

4

description

varchar

255

描述

5

source_table

varchar

255

来源表

6

source_field

varchar

255

来源字段

7

source_id

int

来源ID

8

register

smallint

注册位置

9

create_time

timestamp

创建时间

10

update_time

timestamp

更新时间

表 4-20-user_profile(用户档案)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

user_profile_id

int

用户档案ID

2

registered_user

int

注册用户

3

user_name

varchar

64

用户姓名

4

user_gender

varchar

64

用户性别

5

user_age

double

用户年龄

6

weight

double

体重

7

disease_type

varchar

64

疾病类型

8

current_disease

text

65535

当前疾病

9

drug_allergy

text

65535

用药过敏

10

medical_records

text

65535

病历记录

11

create_time

datetime

创建时间

12

update_time

timestamp

更新时间

第五章 详细设计与实现

5.1前端首页模块

首页设计包含动态轮播图展示最新医疗资讯或活动,网站公告区域显示最新的政策或通知,医疗资讯板块提供丰富的健康知识和行业动态,医生信息区域展示医生的专业背景和特长,方便用户了解和选择合适的医生。前台首页模块展示如下图所示。

图5-1前台首页界面图

5.2用户注册模块

在用户注册模块中,用户需填写必要的个人信息,如用户名、密码、手机号码、性别、年龄等,并进行手机验证码验证以确保信息的真实性。注册过程中,系统会检查用户名的唯一性,防止重复注册。同时,用户需同意相关服务条款和隐私政策,方可完成注册。注册成功后,系统将自动生成用户ID,并保存用户的注册信息和创建时间至数据库中。此外,用户注册模块还提供了密码找回功能,通过手机号码验证码或邮箱验证码,用户可重置密码,确保账户安全。其用户注册模块展示如下图所示。

图5-2注册界面图

5.3登录模块

在智能医疗咨询系统平台的前端,注册用户能够使用其用户名和密码进行登录。用户在键入完整的用户名和密码后,点击“登录”按钮,系统首先检查是否有遗漏的数据输入。接着,系统会比对输入的用户名和密码与数据库中存储的信息是否匹配。只有当两者相符时,用户才能成功登录并被重定向至平台首页。若不匹配,则会显示相应的错误提示。登录模块如下图所示。

图5-3登录界面图

5.4前端注册用户功能模块

5.4.1医疗资讯模块

医疗资讯模块提供浏览、点赞、收藏与评论功能。用户点击进入详情页可查看完整内容,并通过交互操作表达喜好及留言反馈。所有行为数据实时同步到后台MySQL数据库,前端采用Vue3的事件绑定机制触发接口调用,确保界面状态与服务端数据保持一致。模块如下图所示:

图5-4医疗资讯界面图

5.4.2AI分析模块

AI分析模块通过iframe方式嵌入第三方智能工具KIMI,用户在指定页面输入症状描述等内容后,调用接口将数据提交给KIMI进行分析,结果返回后以卡片形式展示。模块如下图所示。

图5-5小说资讯界面图

5.4.3医生信息模块

医生信息模块允许用户浏览医生详细资料,包括职称、专业背景、出诊时间等。用户可进行点赞、收藏与评论操作,相关信息存入数据库供其他用户参考。咨询按钮可跳转至在线咨询页面,在线发起问诊请求,系统记录会话历史并推送消息提醒。模块如下图所示。

图5-6医生信息详情界面图

5.4.4个人中心模块

个人中心整合用户核心功能模块,包括收藏夹管理、诊断信息、用户档案维护以及在线咨询记录查询等。用户可编辑基本信息、上传头像、查看和更新健康档案。所有数据通过权限验证访问,确保信息安全与个性化服务体验。模块如下图所示。

图5-7个人中心界面图

5.5前端医生用户功能模块

5.5.1网站公告模块

网站公告模块为医生用户提供政策通知、平台更新等信息展示,支持查看详情与标记已读操作。公告数据由管理员统一录入,医生可通过分类筛选快速查找所需内容,帮助其了解平台运行规则与行业动态。模块如下图所示

图5-8网站公告界面图

5.5.2个人中心模块

医生个人中心集中展示收藏内容、历史诊断记录以及在线咨询对话。支持医生查看患者提问、回复讨论,并对随访情况进行跟踪管理,提升线上诊疗服务质量与效率,增强医患沟通效果。模块如下图所示:

图5-9个人中心界面图

5.6后端管理员功能模块

5.6.1用户管理模块

用户管理模块用于对管理员、医生和普通用户进行增删查改操作。系统提供多条件筛选面板,详情页展示完整档案信息并支持禁用或激活账户。删除操作采用软删除机制,保留记录以备审计追踪。流程图如下所示。

图5-10用户管理流程图

用户管理模块如下图所示。

图5-11用户管理界面图

5.6.2用户档案管理模块

用户档案管理用于维护个人健康数据,包括基础信息、过敏史、既往病史等字段。管理员可手动新增记录,也可根据需求查询特定群体的健康特征,为后续服务优化提供数据支撑。模块如下图所示。

图5-12用户档案管理界面图

5.6.3医生信息管理模块

管理员可以对医生的信息进行管理,包括添加新的医生信息、查询现有医生信息、删除不再需要的医生信息,以及查看医生的详细信息和相关评论。模块如下图所示。

图5-13医生信息管理添加界面图

5.6.4系统管理模块

管理员可以对网站的轮播图进行管理,包括添加新的轮播图、删除不再使用的轮播图、查询现有的轮播图列表以及查看轮播图的详细信息。模块如下图所示。

图5-14轮播图管理界面图

5.6.5网站公告管理模块

管理员可以对网站公告进行管理,包括添加新的公告、删除过时的公告、查询现有的公告列表以及查看公告的详细内容。模块如下图所示。

图5-15网站公告管理添加界面图

5.6.6资源管理模块

管理员可以对网站提供的医疗资讯及其分类进行管理,包括添加新的资讯内容、删除不再需要的资讯、查询资讯列表、查看资讯的详细信息以及查看资讯下的用户评论。模块如下图所示。

图5-16医疗资讯管理界面图

第六章 系统测试

6.1系统测试的目的

测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。

6.2测试方法

在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。

常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。

在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。

6.3测试用例

6.3.1用户登录功能测试

6-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

6.3.2创建数据测试 

在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。

创建数据用例如表6-2 所示。

表6-2 创建数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行创建数据

测试用例描述

使用者输入要创建的数据

系统入口

浏览器

步骤

预期结果

实际结果

输入完整并且格式正确的数据

提示“创建成功”,并显示所有数据

预期结果

核心位置数据但非必要位置不输入数据

提示“创建成功”,并显示所有数据

预期结果

核心数据位置不输入数据

提示“创建失败”

预期结果

6.3.3修改数据测试 

在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。

修改数据用例如表6-3所示。

表6-3 修改数据测试用例

测试用例编号

YL_06

测试用例名称

系统使用者进行修改数据

测试用例描述

使用者对可修改的数据项进行修改

系统入口

浏览器

步骤

预期结果

实际结果

将现有数据修改成正确的数据

提示“修改成功”,并显示所有数据

预期结果

将现有数据修改成错误的数据

提示“修改失败”

预期结果

6.3.4查询数据测试 

在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。

查询数据用例如表6-4所示。

表6-4 查询数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行查询数据

测试用例描述

全部查询以及输入关键词查询

系统入口

浏览器

步骤

预期结果

实际结果

界面自动查询全部

显示对应所有记录

预期结果

输入已存在且能匹配成功的关键字

显示所查询到的数据

预期结果

输入不存在的关键字

显示数据界面为空

预期结果

6.4测试结果

在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。

  

本论文围绕医疗服务平台的设计与实现展开,基于Vue3与Django框架构建系统整体架构,采用前后端分离模式实现注册登录、首页展示、医疗资讯浏览与互动、医生信息查询、AI智能分析接入、在线咨询及个人中心管理等核心功能。通过MySQL完成数据的结构化存储,结合Redis提升访问效率,并利用iframe嵌入第三方AI工具KIMI以增强智能化服务。系统设计注重用户角色划分与权限控制,实现差异化功能展示与数据交互,满足注册用户、医生用户及管理员的多样化需求。

开发过程中,对Web应用的模块化开发流程、接口设计规范及性能优化策略形成系统性认知,实践了跨域通信、数据缓存、隐私保护等关键技术的整合应用。未来可进一步拓展技术的深度应用,如引入自然语言处理优化问诊交互,并探索实时音视频通信功能以增强医患沟通效率,推动平台向更智能、高效、便捷的方向演进。

参考文献

  1. 郝雪晶.在线医疗咨询服务的性别收入差距研究[D].北京科技大学,2024.
  2. 魏岚,黄跃,宋亚楠,等.面向医疗专业人员的老年患者多重用药评价管理与咨询服务平台需求调研[J].中国全科医学,2023,26(25):3157-3162.
  3. 潘俊鹏.网络健康咨询服务的意愿态度的影响机理研究[D].南昌大学,2023.
  4. 陈书珩.智能医疗咨询系统[D].苏州大学,2023.
  5. 柳泽惠,蔡伟芹,郑文贵,等.潍坊市心理咨询服务机构量化评估研究[J].精神医学杂志,2023,36(01):31-35.
  6. 曹仙叶,刘咏梅,李佳玲,等.基于信号理论的在线医疗咨询服务购买行为研究[J].图书情报工作,2022,66(24):51-63.
  7. 胡媛荣,周玲,赵学彧.在线医疗用户跨渠道“搭便车”行为分析[J].当代经济,2023,40(01):73-80.
  8. 王海莲,闫素英,甄健存,等.用药咨询标准制订与解析[J].医药导报,2022,41(10):1439-1441.
  9. 吉祥.我国互联网医疗信息平台监管研究[D].华北电力大学(北京),2022.
  10. 张雨,陈慧,王文昊,等.“互联网+”医疗志愿服务走进社区产生的社会效益——基于泰州海陵区地方社区的研究[J].公关世界,2022,(08):8-10.
  11. 何艺媛,许敏,邓薇,等.基于人工智能的医院咨询服务模式的构建与实践[J].现代医院管理,2022,20(02):61-63.
  12. 鞠小林,张艳梅,王皓晨,等.基于大语言模型辅助教学的Python编程课程教学探索[J].计算机教育,2024,(09):33-37.
  13. 张锦贤,吴晓玲.基于Django框架技术的网站设计[J].电脑知识与技术,2024,20(10):71-73.
  14. 郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.
  15. Xuan D ,Yuxuan B .A Pharmacy Drug Information Management System Based on Django Development[J].Academic Journal of Engineering and Technology Science,2024,7(4):
  16. 山本武道.WELCIA推出在线医疗健康咨询服务[J].中国药店,2024,(06):74-76.
  17. Song Z ,Liu Z,Liang J, et al.A Remote Wireless Meter Reading System Website Based on Django Development[J].Industry Science and Engineering,2024,1(5):
  18. Matsuura R ,Mori K ,Nomura H , et al.Development of a magnetic force microscope controllable by Python programming language[J].한국자기학회 학술연구발표회 논문개요집,2024,34(1):
  19. 严俊涛,许厚琴,樊志磊,等.上海市产前诊断医疗机构遗传咨询服务能力现状分析[J].中国医院管理,2022,42(04):83-86.
  20. 黄晓亮.优化对话模型的在线医疗咨询系统设计与实现[D].南京邮电大学,2021.

致  谢

智能医疗咨询系统平台系统设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!

智能医疗咨询系统平台系统设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。

对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。

最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。

附 录

系统关键代码

登录代码如下:

 def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.body

        password = md5hash(body["password"]) or ""

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if obj:

            user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})

            if user_group and user_group['source_table'] != '':

                user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},                                                                       {"like": False})

                if user_obj['examine_state'] == '未通过':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未通过审核",

                        }

                    }

                    return ret

                if user_obj['examine_state'] == '未审核':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未审核",

                        }

                    }

                    return ret

            if obj["state"] == 1:

                if obj["password"] == password:

                    timeout = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[token] = obj["user_id"]

                    service_select("access_token").Add(

                        {"token": token, "user_id": obj["user_id"]}

                    )

                    obj["token"] = token

                    ret = {

                        "result": {"obj": obj}

                    }

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "密码错误",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "用户账户不可用,请联系管理员",

                    }

                }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

注册代码如下:

    def Register(self, ctx):

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        if "username" not in body and body["username"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名不能为空",

                }

            }, ensure_ascii=False))

        if "user_group" not in body and body["user_group"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }, ensure_ascii=False))

        if "password" not in body and body["password"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "密码不能为空",

                }

            }, ensure_ascii=False))

        post_param = body

        post_param['nickname'] = body["nickname"] or ""

        post_param['password'] = md5hash(body["password"])

        obj = userService.Get_obj({"username": post_param['username']}, {"like": False})

        if obj:

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }, ensure_ascii=False))

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

找回密码代码如下:

 def Forget_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "用户信息不能没有"

            }

        }

        body = ctx.body

        if not body["code"]:

            return {

                "error": {

                    "code": 70000,

                    "message": "验证码不存在或者错误"

                }

            }

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if not obj:

            return {

                "error": {

                    "code": 70000,

                    "message": "用户名不存在或者错误"

                }

            }

        password = md5hash(body["password"])

        if not password:

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不存在或者错误"

                }

            }

        bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})

        if bl:

            ret = {"result": {"bl": True, "message": "修改成功"}}

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "修改失败",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

修改密码代码如下:

 def Change_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        if ("x-auth-token" in headers) and headers["x-auth-token"]:

            token = headers["x-auth-token"]

            user_id = tokenGetUserId(token, request)

            userService = service_select("user")

            body = ctx.body

            password = md5hash(body["o_password"])

            obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})

            if obj:

                password = md5hash(body["password"])

                bl = userService.Set({"user_id": user_id}, {"password": password})

                if bl:

                    ret = {"result": {"bl": True, "message": "修改成功"}}

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "修改失败",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "密码错误",

                    }

                }

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "账户未登录",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

增删查改代码如下:

def Add(self, ctx):

body = ctx.body

unique = self.config.get("unique")

obj = None

if unique:

qy = {}

for i in range(len(unique)):

key = unique[i]

qy[key] = body.get(key)

obj = self.service.Get_obj(qy)

if not obj:

error = self.Add_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("add_before", ctx, None)

if error["code"]:

return {"error": error}

result = self.service.Add(body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Add_after(ctx, result)

if res:

result = res

res = self.Events("add_after", ctx, result)

if res:

result = res

return {"result": result}

else:

return {"error": {"code": 10000, "message": "已存在"}}

def Del(self, ctx):

if len(ctx.query) == 0:

errorMsg = {"code": 30000, "message": "删除条件不能为空!"}

return errorMsg

result = self.service.Del(ctx.query, self.config)

if self.service.error:

return {"error": self.service.error}

return {"result": result}

def Set(self, ctx):

error = self.Set_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("set_before", ctx, None)

if error["code"]:

return {"error": error}

query = ctx.query

if 'page' in query.keys():

del ctx.query['page']

if 'size' in query.keys():

del ctx.query['size']

if 'orderby' in query.keys():

del ctx.query['orderby']

result = self.service.Set(ctx.query, ctx.body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Set_after(ctx, result)

if res:

result = res

res = self.Events("set_after", ctx, result)

if res:

result = res

return {"result": result}

查多条数据:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

查一条数据:

def Get_obj(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

if obj:

self.interact_obj(ctx, obj)

return {"result": {"obj": obj}}

整理归纳不易,点击「分享」和「在看」让更多有需要的人看到,谢谢!

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐