本项目是一个面向生猪健康管理的智慧医药系统,有AI兽医功能、文章管理功能、药物管理功能、政策资讯管理功能,旨在通过数字化手段提升生猪养殖的医疗管理水平。系统集成 SpringBoot3 + Ollama + Spring AI + DeepSeek + Mysql8.0 + Mybatis-Plus,提供智能兽医诊断服务,帮助养殖户或兽医快速诊断生猪病情并推荐相应的治疗方案。
- 后端:Java、SpringBoot、Spring AI、SaToken
- AI 模型:Ollama + DeepSeek
- 数据库:MySQL
- 缓存:Redis
- API 文档:knife4j
依赖项 | 版本 | 描述 |
---|---|---|
JDK | 21 | |
SpringBoot | 3.3.5 | 框架 |
Mysql | 8.0.33 | 数据库连接器 |
Druid | 1.2.24 | 数据库连接池 |
MyBatis Plus | 3.5.8 | ORM 框架 |
Hutool | 5.7.17 | 工具类库 |
Lombok | 1.18.36 | 简化代码的库 |
OkHttp | 4.9.3 | HTTP 客户端 |
Minio | 8.5.14 | 对象存储客户端 |
Spring Security Crypto | 5.3.8.RELEASE | 安全加密库 |
Sa-Token Redis | 1.40.0 | Sa-Token 整合 Redis |
Sa-Token Spring Boot Starter | 1.39.0 | Sa-Token 权限认证 |
Sa-Token Core | 1.39.0 | Sa-Token 核心库 |
Knife4j | 4.4.0 | API 文档生成工具 |
Spring Boot Starter Data Redis | 3.1.0 | Redis 支持 |
Spring Boot Starter Mail | 邮件服务 | |
Apache HttpClient | 4.5.13 | HTTP 客户端 |
FastJson | 2.0.54 | JSON 解析库 |
- 前端:开发中。。。
- 用户注册、登录
- 养殖户 / 兽医 / 管理员身份权限区分
- 账号密码登录/账号邮箱验证码登录
- 使用 Ollama + DeepSeek 实现 AI 兽医问诊
- 通过自然语言描述病症,AI 推荐可能的疾病并提供治疗建议
- 查询疾病的相关药品信息
- 养殖户可查询疾病信息、症状、对应药物
- 疾病分类管理(疾病种类)
- 疾病与药物的关联管理
- 药品信息录入、查询、修改、删除
- 养殖户可查询药品使用方法、适应症、注意事项
- 文章分类管理(文章类型)
- 养殖知识、医疗知识文章发布
- 新闻资讯管理
- 用户反馈(feedback)
- 文件管理(files)
- JDK 17+
- MySQL 8+
- Redis 6+
- Docker(可选,用于部署 AI 大模型)
- Maven 3.8+
数据库建表的SQL文件在项目的SQL文件夹
CREATE DATABASE pig_health_smart_medicine;
然后在 application.yml
配置数据库连接信息,根据图片的红标修改自己的
配置邮箱:
配置Redis:
配置Minio
配置Ollama:
git clone https://gitee.com/hsdchb/pig-health-smart-medicine.git
cd pig-health-smart-medicine
mvn clean package
java -jar target/pig-health-smart-medicine.jar
管理员:username: admin | password: 123123
普通用户:username: linyi | password: 123123
表名 | 说明 |
---|---|
user |
用户表,存储用户信息 |
article_types |
文章分类表 |
articles |
文章表,存储养殖知识文章 |
conversation |
AI 兽医问诊记录表 |
feedback |
用户反馈表 |
files |
文件存储信息表 |
history |
操作日志记录表 |
illness |
疾病表 |
illness_kind |
疾病种类表 |
illness_medicine |
疾病-药品关联表 |
medicine |
药品信息表 |
news_articles |
新闻资讯表 |
pageview |
浏览量统计表 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | type_id | int | -- | NO | -- | 0 | 文章类型ID |
2 | type_name | varchar(20) | 20 | NO | -- | -- | 文章类型名称 |
3 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
4 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 文章ID |
2 | title | varchar(255) | 255 | NO | -- | -- | 文章标题 |
3 | content | text | 65535 | NO | -- | -- | 文章内容 |
4 | author | varchar(100) | 100 | YES | -- | -- | 作者 |
5 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
6 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
7 | type_id | int | -- | YES | -- | 0 | 文章类型ID,外键关联article_types表 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | bigint | -- | NO | -- | 0 | 主键ID |
2 | user_id | int | -- | NO | -- | 0 | 用户ID |
3 | user_input | text | 65535 | NO | -- | -- | 用户输入 |
4 | ai_response | text | 65535 | NO | -- | -- | AI回复 |
5 | conversation_time | datetime | -- | NO | CURRENT_TIMESTAMP | -- | 对话时间 |
6 | model_name | varchar(255) | 255 | YES | -- | -- | AI模型名称 |
7 | response_time | decimal(10,2) | -- | YES | -- | 2 | AI响应时间(秒) |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 主键ID |
2 | name | varchar(11) | 11 | YES | -- | -- | 反馈用户 |
3 | varchar(255) | 255 | YES | -- | -- | 邮箱地址 | |
4 | title | varchar(255) | 255 | YES | -- | -- | 反馈标题 |
5 | content | text | 65535 | YES | -- | -- | 反馈内容 |
6 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
7 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 主键id |
2 | file_name | varchar(255) | 255 | NO | -- | -- | 文件名 |
3 | file_path | varchar(255) | 255 | NO | -- | -- | 文件在 MinIO 中的路径 |
4 | file_size | bigint | -- | NO | -- | 0 | 文件大小,单位为字节 |
5 | content_type | varchar(100) | 100 | YES | -- | -- | 文件的 MIME 类型 |
6 | url | varchar(500) | 500 | NO | -- | -- | 文件的url |
7 | upload_time | timestamp | -- | YES | CURRENT_TIMESTAMP | -- | 文件上传时间 |
8 | bucket_name | varchar(100) | 100 | NO | -- | -- | 文件存储的 MinIO 桶名称 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 用户搜索历史主键id |
2 | user_id | int | -- | YES | -- | 0 | 用户ID |
3 | keyword | varchar(255) | 255 | YES | -- | -- | 搜索关键字 |
4 | operate_type | int | -- | YES | -- | 0 | 类型:1搜索,2科目,3药品 |
5 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
6 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 疾病id |
2 | kind_id | int | -- | YES | -- | 0 | 疾病分类ID |
3 | illness_name | varchar(100) | 100 | YES | -- | -- | 疾病名字 |
4 | include_reason | mediumtext | 16777215 | YES | -- | -- | 诱发因素 |
5 | illness_symptom | mediumtext | 16777215 | YES | -- | -- | 疾病症状 |
6 | special_symptom | mediumtext | 16777215 | YES | -- | -- | 特殊症状 |
7 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
8 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 主键ID |
2 | name | varchar(255) | 255 | YES | -- | -- | 分类名称 |
3 | info | varchar(255) | 255 | YES | -- | -- | 描述 |
4 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
5 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 病和药品关联id |
2 | illness_id | int | -- | YES | -- | 0 | 病id |
3 | medicine_id | int | -- | YES | -- | 0 | 药品id |
4 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
5 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 药品主键ID |
2 | medicine_name | varchar(100) | 100 | YES | -- | -- | 药的名字 |
3 | keyword | varchar(255) | 255 | YES | -- | -- | 关键字搜索 |
4 | medicine_effect | mediumtext | 16777215 | YES | -- | -- | 药的功效 |
5 | medicine_brand | varchar(255) | 255 | YES | -- | -- | 药的品牌 |
6 | interaction | mediumtext | 16777215 | YES | -- | -- | 药的相互作用 |
7 | taboo | mediumtext | 16777215 | YES | -- | -- | 禁忌 |
8 | us_age | mediumtext | 16777215 | YES | -- | -- | 用法用量 |
9 | medicine_type | int | -- | YES | -- | 0 | 药的类型,0西药,1中药,2中成药 |
10 | img_path | varchar(255) | 255 | YES | -- | -- | 相关图片路径 |
11 | medicine_price | decimal(10,2) | -- | YES | -- | 2 | 药的价格 |
12 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
13 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 新闻ID |
2 | url | varchar(500) | 500 | YES | -- | -- | 转载url |
3 | title | varchar(255) | 255 | NO | -- | -- | 新闻标题 |
4 | content | text | 65535 | NO | -- | -- | 新闻内容 |
5 | author | varchar(100) | 100 | YES | -- | -- | 作者 |
6 | publish_time | timestamp | -- | YES | CURRENT_TIMESTAMP | -- | 发布时间,默认为当前时间 |
7 | source | varchar(255) | 255 | YES | -- | -- | 新闻来源 |
8 | summary | text | 65535 | YES | -- | -- | 新闻摘要 |
9 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
10 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 主键id |
2 | pageviews | int | -- | YES | -- | 0 | 浏览量 |
3 | illness_id | int | -- | YES | -- | 0 | 病的id |
序号 | 字段名 | 类型 | 长度 | 是否为空 | 默认值 | 小数位 | 注释 |
---|---|---|---|---|---|---|---|
1 | id | int | -- | NO | -- | 0 | 用户主键id |
2 | user_account | varchar(255) | 255 | YES | -- | -- | 用户账号 |
3 | user_name | varchar(255) | 255 | YES | -- | -- | 用户的真实名字 |
4 | user_pwd | varchar(255) | 255 | YES | -- | -- | 用户密码 |
5 | user_age | int | -- | YES | -- | 0 | 用户年龄 |
6 | user_sex | varchar(1) | 1 | YES | -- | -- | 用户性别 |
7 | user_email | varchar(255) | 255 | YES | -- | -- | 用户邮箱 |
8 | user_tel | varchar(50) | 50 | YES | -- | -- | 手机号 |
9 | role_status | int | -- | YES | -- | 0 | 角色状态,1管理员,0普通用户 |
10 | img_path | varchar(255) | 255 | YES | -- | -- | 用户头像 |
11 | create_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 创建时间 |
12 | update_time | datetime | -- | YES | CURRENT_TIMESTAMP | -- | 更新时间 |
启动后访问 http://localhost:9999/doc.html
查看完整 API 文档。
- 优化 AI 兽医问诊模型,提高准确率
- 增加微信小程序端支持
- 提供疾病流行趋势预测功能
- 兽医线上问诊
欢迎提交 PR 或 Issue 来优化本项目。
本项目采用 MIT 许可证。
如有问题,可以有些邮箱联系我,也可以进行交流,项目不足之处,还请多多担待。
作者: linyi 邮箱: jingshuihuayue@qq.com
GitHub: PigHealthSmartMedicine