基于java的养生药膳食疗系统的设计与实现【代码讲解文档】
基于java的养生药膳食疗系统的设计与实现 - 代码讲解文档

一、项目概述
本项目是一个基于Java SpringBoot框架开发的养生药膳食疗系统,旨在为用户提供药膳信息查询、养生知识学习和专家咨询等功能。系统采用前后端分离架构,后端基于SpringBoot框架,前端使用Vue技术栈,数据库采用MySQL。
项目定位
- 提供药膳信息展示和分类查询功能
- 提供养生保健知识科普
- 提供专家在线咨询和信息发布功能
- 提供用户交流和反馈渠道
技术选型
| 技术层 | 技术选型 |
|---|---|
| 后端框架 | SpringBoot 2.x |
| ORM框架 | MyBatis-Plus |
| 数据库 | MySQL 5.7 |
| 前端框架 | Vue.js |
| 认证方式 | Token机制 |
二、技术架构
2.1 系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 前端展示层 (Vue.js) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 用户端 │ │ 专家端 │ │ 管理端 │ │ 论坛模块 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 后端业务层 (SpringBoot) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Controller层 │ │
│ │ YaoshanxinxiController / YangshengxinxiController... │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Service层 │ │
│ │ YaoshanxinxiService / YangshengxinxiService... │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Dao/Mapper层 │ │
│ │ YaoshanxinxiDao / YangshengxinxiDao... │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据持久层 (MySQL) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │yaoshanxinxi│ │yangsheng..│ │ zhuanjia│ │ forum │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
2.2 项目目录结构
springboot2yi10509/
├── src/main/java/com/
│ ├── controller/ # 控制器层
│ │ ├── YaoshanxinxiController.java # 药膳信息管理
│ │ ├── YaoshanfenleiController.java # 药膳分类管理
│ │ ├── YangshengxinxiController.java # 养生信息管理
│ │ ├── ZhuanjiaController.java # 专家管理
│ │ ├── YonghuController.java # 用户管理
│ │ ├── ForumController.java # 论坛管理
│ │ ├── NewsController.java # 新闻公告管理
│ │ ├── YijianfankuiController.java # 意见反馈管理
│ │ └── ...
│ ├── service/ # 服务层
│ │ ├── impl/ # 服务实现
│ │ ├── YaoshanxinxiService.java
│ │ └── ...
│ ├── dao/ # 数据访问层
│ │ ├── YaoshanxinxiDao.java
│ │ └── ...
│ ├── entity/ # 实体类
│ │ ├── YaoshanxinxiEntity.java # 药膳信息实体
│ │ ├── YaoshanfenleiEntity.java # 药膳分类实体
│ │ ├── YangshengxinxiEntity.java # 养生信息实体
│ │ ├── ZhuanjiaEntity.java # 专家实体
│ │ ├── YonghuEntity.java # 用户实体
│ │ ├── ForumEntity.java # 论坛实体
│ │ ├── NewsEntity.java # 新闻公告实体
│ │ ├── StoreupEntity.java # 收藏实体
│ │ ├── ChatmessageEntity.java # 聊天消息实体
│ │ └── ...
│ ├── config/ # 配置类
│ ├── interceptor/ # 拦截器
│ ├── annotation/ # 自定义注解
│ └── utils/ # 工具类
└── db/
└── springboot2yi10509.sql # 数据库脚本
三、核心功能模块讲解
3.1 药膳信息管理模块
功能说明
药膳信息模块是系统的核心模块,负责药膳的详细信息展示,包括药膳名称、分类、功效、食材、制作步骤等。
实体类设计 - YaoshanxinxiEntity
@TableName("yaoshanxinxi")
public class YaoshanxinxiEntity<T> implements Serializable {
@TableId(type = IdType.AUTO)
private Long id; // 主键id
private String yaoshanmingcheng; // 药膳名称
private String yaoshanfenlei; // 药膳分类
private String yaoshanzhaopian; // 药膳照片
private String yaoshangongxiao; // 药膳功效
private String shiyongrenqun; // 适用人群
private String yaoshanshipin; // 药膳视频
private String yaoshanshicai; // 药膳食材
private String zhizuobuzhou; // 制作步骤
private String pengrengongju; // 烹饪工具
private String yingyangchengfen; // 营养成分
private String yaoshanxiangqing; // 药膳详情
private String zhuanjiazhanghao; // 专家账号
private String zhuanjiaxingming; // 专家姓名
private Date clicktime; // 最近点击时间
private Integer clicknum; // 点击次数
private Integer discussnum; // 评论数
private Integer storeupnum; // 收藏数
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private Date addtime; // 创建时间
// getter/setter方法...
}
Controller核心代码
@RestController
@RequestMapping("/yaoshanxinxi")
public class YaoshanxinxiController {
@Autowired
private YaoshanxinxiService yaoshanxinxiService;
@Autowired
private StoreupService storeupService;
/**
* 后台分页列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, YaoshanxinxiEntity yaoshanxinxi,
HttpServletRequest request){
// 专家只能查看自己发布的药膳
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("zhuanjia")) {
yaoshanxinxi.setZhuanjiazhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<YaoshanxinxiEntity> ew = new EntityWrapper<YaoshanxinxiEntity>();
PageUtils page = yaoshanxinxiService.queryPage(params,
MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaoshanxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 详情页面 - 增加点击次数
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YaoshanxinxiEntity yaoshanxinxi = yaoshanxinxiService.selectById(id);
// 点击次数+1
yaoshanxinxi.setClicknum(yaoshanxinxi.getClicknum()+1);
yaoshanxinxi.setClicktime(new Date());
yaoshanxinxiService.updateById(yaoshanxinxi);
yaoshanxinxi = yaoshanxinxiService.selectView(new EntityWrapper<YaoshanxinxiEntity>().eq("id", id));
return R.ok().put("data", yaoshanxinxi);
}
/**
* 智能排序 - 按点击量排序
*/
@IgnoreAuth
@RequestMapping("/autoSort")
public R autoSort(@RequestParam Map<String, Object> params, YaoshanxinxiEntity yaoshanxinxi){
params.put("sort", "clicknum");
params.put("order", "desc");
EntityWrapper<YaoshanxinxiEntity> ew = new EntityWrapper<YaoshanxinxiEntity>();
PageUtils page = yaoshanxinxiService.queryPage(params,
MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaoshanxinxi), params), params));
return R.ok().put("data", page);
}
}
3.2 药膳分类管理模块
功能说明
药膳分类模块用于对药膳进行分类管理,方便用户按类别查找药膳信息。
实体类设计 - YaoshanfenleiEntity
主要字段:
- yaoshanfenlei: 药膳分类名称
3.3 养生信息管理模块
功能说明
养生信息模块提供养生保健知识的科普内容,包括养生方法、养生技巧等。
实体类设计 - YangshengxinxiEntity
主要字段:
- yangshengmingcheng: 养生名称
- yangshengfenlei: 养生分类
- yangshengtupian: 养生图片
- yangshenggongxiao: 养生功效
- yangshengjieshao: 养生介绍
- shiyongrenqun: 适用人群
3.4 专家管理模块
功能说明
专家管理模块管理系统的专家用户,专家可以发布药膳信息、养生知识等。
实体类设计 - ZhuanjiaEntity
主要字段:
- zhuanjiazhanghao: 专家账号
- mima: 密码
- zhuanjiaxingming: 专家姓名
- xingbie: 性别
- zhicheng: 职称
- zhuanjiajieshao: 专家介绍
- touxiang: 头像
3.5 论坛交流模块
功能说明
论坛模块提供用户交流功能,用户可以发布帖子、评论互动。
实体类设计
ForumEntity - 论坛帖子
- title: 帖子标题
- content: 帖子内容
- parentid: 父节点id(用于回复)
- userid: 用户id
- username: 用户名
- avatarurl: 头像
- isdone: 状态
- istop: 是否置顶
- typename: 分类名称
ForumtypeEntity - 论坛分类
- typename: 分类名称
ForumreportEntity - 帖子举报
- forumid: 论坛id
- reason: 举报原因
- status: 状态
3.6 意见反馈模块
功能说明
意见反馈模块收集用户对系统的反馈意见。
实体类设计 - YijianfankuiEntity
主要字段:
- fankuibiaoti: 反馈标题
- fankuineirong: 反馈内容
- fankuishijian: 反馈时间
- yonghuzhanghao: 用户账号
四、数据库设计分析
4.1 数据库表概览
| 表名 | 说明 | 主要字段 |
|---|---|---|
| yaoshanxinxi | 药膳信息表 | yaoshanmingcheng, yaoshanfenlei, yaoshangongxiao |
| yaoshanfenlei | 药膳分类表 | yaoshanfenlei |
| yangshengxinxi | 养生信息表 | yangshengmingcheng, yangshenggongxiao |
| zhuanjia | 专家表 | zhuanjiazhanghao, zhuanjiaxingming |
| yonghu | 用户表 | yonghuzhanghao, mima |
| forum | 论坛帖子表 | title, content, userid |
| forumtype | 论坛分类表 | typename |
| forumreport | 帖子举报表 | reason, status |
| news | 新闻公告表 | title, content |
| newstype | 新闻分类表 | typename |
| storeup | 收藏表 | userid, refid |
| chatmessage | 聊天消息表 | content, uid, fid |
| yijianfankui | 意见反馈表 | fankuineirong |
4.2 核心表结构详解
yaoshanxinxi(药膳信息表)
CREATE TABLE `yaoshanxinxi` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`yaoshanmingcheng` varchar(200) NOT NULL COMMENT '药膳名称',
`yaoshanfenlei` varchar(200) NOT NULL COMMENT '药膳分类',
`yaoshanzhaopian` longtext COMMENT '药膳照片',
`yaoshangongxiao` varchar(200) COMMENT '药膳功效',
`shiyongrenqun` varchar(200) COMMENT '适用人群',
`yaoshanshipin` longtext COMMENT '药膳视频',
`yaoshanshicai` varchar(200) COMMENT '药膳食材',
`zhizuobuzhou` longtext COMMENT '制作步骤',
`pengrengongju` varchar(200) COMMENT '烹饪工具',
`yingyangchengfen` varchar(200) COMMENT '营养成分',
`yaoshanxiangqing` longtext COMMENT '药膳详情',
`zhuanjiazhanghao` varchar(200) COMMENT '专家账号',
`zhuanjiaxingming` varchar(200) COMMENT '专家姓名',
`clicktime` datetime COMMENT '最近点击时间',
`clicknum` int(11) DEFAULT '0' COMMENT '点击次数',
`discussnum` int(11) DEFAULT '0' COMMENT '评论数',
`storeupnum` int(11) DEFAULT '0' COMMENT '收藏数',
PRIMARY KEY (`id`),
KEY `yaoshanfenlei` (`yaoshanfenlei`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='药膳信息';
4.3 数据库关系设计
┌─────────────┐ ┌─────────────┐
│yaoshanfenlei│────▶│yaoshanxinxi │
│ (药膳分类) │ │ (分类关联) │
└─────────────┘ └─────────────┘
│
▼
┌─────────────┐ ┌─────────────┐
│ zhuanjia │────▶│yaoshanxinxi │
│ (专家) │ │ (专家发布) │
└─────────────┘ └─────────────┘
┌─────────────┐ ┌─────────────┐
│ forumtype │────▶│ forum │
│ (论坛分类) │ │ (帖子分类) │
└─────────────┘ └─────────────┘
五、关键代码解析
5.1 点击次数统计
系统记录用户浏览药膳信息的点击次数:
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YaoshanxinxiEntity yaoshanxinxi = yaoshanxinxiService.selectById(id);
// 点击次数+1
yaoshanxinxi.setClicknum(yaoshanxinxi.getClicknum()+1);
yaoshanxinxi.setClicktime(new Date());
yaoshanxinxiService.updateById(yaoshanxinxi);
return R.ok().put("data", yaoshanxinxi);
}
5.2 专家权限控制
专家只能管理自己发布的药膳:
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, YaoshanxinxiEntity yaoshanxinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("zhuanjia")) {
yaoshanxinxi.setZhuanjiazhanghao((String)request.getSession().getAttribute("username"));
}
// 查询时自动过滤专家账号
EntityWrapper<YaoshanxinxiEntity> ew = new EntityWrapper<YaoshanxinxiEntity>();
PageUtils page = yaoshanxinxiService.queryPage(params,
MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaoshanxinxi), params), params));
return R.ok().put("data", page);
}
5.3 评论功能
系统支持对药膳信息进行评论:
- discussyaoshanxinxi表存储药膳评论
- discussnum字段记录评论数统计
5.4 收藏功能
用户可以收藏感兴趣的药膳:
@Autowired
private StoreupService storeupService;
// 收藏信息存储
StoreupEntity storeupEntity = new StoreupEntity();
storeupEntity.setUserid(userId);
storeupEntity.setRefid(yaoshanxinxiId);
storeupEntity.setTablename("yaoshanxinxi");
storeupEntity.setType("1");
storeupService.insert(storeupEntity);
六、系统特色功能
6.1 药膳视频教程
系统支持上传药膳制作视频,用户可以通过视频学习药膳制作方法。
6.2 专家认证系统
专家用户可以发布药膳和养生信息,系统通过专家账号关联确保信息来源的可信度。
6.3 点击量智能排序
系统按点击次数自动排序,展示热门药膳:
params.put("sort", "clicknum");
params.put("order", "desc");
6.4 评论互动功能
用户可以对药膳和养生信息进行评论讨论。
6.5 论坛交流平台
提供论坛功能,支持:
- 帖子发布与回复
- 帖子分类管理
- 帖子举报机制
- 好友添加与聊天
6.6 养生知识科普
养生信息模块提供丰富的养生保健知识,包括养生功效、适用人群等信息。
七、运行与部署
7.1 数据库配置
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot2yi10509
username: root
password: root
7.2 项目启动步骤
- 导入数据库脚本
springboot2yi10509.sql - 配置application.yml数据库连接
- 运行SpringBootApplication主类
- 访问前端页面
7.3 默认账号
- 管理员:admin / admin
- 用户账号:用户账号1 / 123456
- 专家账号:专家账号1 / 123456
八、总结
本项目是一个专业的养生药膳食疗系统,实现了药膳信息管理、养生知识科普、专家咨询、论坛交流等功能。系统采用SpringBoot+MyBatis-Plus+Vue技术栈,具有清晰的分层架构。特色功能包括药膳视频教程、专家认证系统、点击量智能排序、评论互动等,为用户提供了全面的养生药膳学习平台。
更多推荐



所有评论(0)