【程序源代码】智能饮食推荐平台(含小程序源码、后端源码)

(一)系统介绍
1.1 系统介绍
项目定位
Dietify 是基于 UPICF+MOPSO 双算法的智能饮食推荐平台,聚焦 “个性化推荐 + 精准营养规划” 核心需求,通过跨端技术栈实现全场景饮食管理闭环,解决传统饮食 APP 的推荐精度低、营养适配差等问题。
核心技术架构
前端层采用 UniApp 3.0+、Vue 2.6+、ECharts 5.4,实现跨端组件封装、营养数据可视化、状态管理(Vuex)。应用层基于 Spring Boot 2.5.15、MyBatis Plus,提供 RESTful API 设计、Spring Security+JWT 认证、业务模块化拆分能力。算法层以 Python 3.8+、FastAPI 为基础,集成 UPICF、MOPSO 算法,完成推荐算法服务化、多目标优化计算、TF-IDF 权重模型构建。数据层使用 MySQL 8.0、Redis 6.0+,支持分表设计(用户 / 菜品 / 营养数据)、热点数据缓存(推荐列表 / 用户画像)。
技术亮点
微服务解耦方面,算法服务独立部署,通过 FastAPI 提供 RPC 接口,支持水平扩展,并发承载量提升 2 倍。缓存优化采用 Redis 实现二级缓存(本地缓存 + 分布式缓存),热门菜品查询响应时间≤100ms,缓存命中率达 85%。安全机制基于 RBAC 模型的权限控制,JWT 令牌有效期动态调整,敏感数据(健康信息)采用 AES-256 加密存储。容器化部署支持算法服务 Docker 镜像打包,适配 K8s 编排,环境一致性保障率 100%。
核心功能与技术实现
智能推荐模块(UPICF 算法核心)
算法原理上,以改进协同过滤(CF)为基础框架,引入用户属性权重(通过 TF-IDF 计算年龄 / 性别 / 活动水平权重);基于艾宾浩斯遗忘曲线设计衰减函数 w (t) = e^(-k (t-t0)),修正历史评分时效性;改进余弦相似度公式,加入用户影响因子 S (u,v) = (Σ(i∈I) (r_ui – μ_u)(r_vi – μ_v) * w (t)) / (||r_u||・||r_v||)。功能实现包含新用户基于热门标签 + 基础属性的混合推荐,用户行为(评分 / 收藏 / 跳过)触发算法模型增量更新,推荐列表 10 分钟内刷新,推荐精度达准确率 82%、召回率 76%,较传统 CF 算法提升 35%。
营养规划模块(MOPSO 算法核心)
算法流程围绕初始化、粒子编码、迭代优化、结果输出展开。初始化阶段基于《中国居民膳食营养素参考摄入量》,构建 18 种营养素(蛋白质 / 碳水 / 维生素等)的 RNI-UL 约束空间;粒子编码以食材用量为粒子维度,目标函数涵盖营养满足度、搭配合理性、烹饪难度;通过非支配排序 + 拥挤度计算完成迭代优化,生成 Pareto 最优解集合;最终筛选 3 套差异化方案,营养偏差率≤8%。功能特性支持按 3:4:3 热量比例自动拆分三餐,可自定义调整,适配饮食禁忌(过敏原 / 素食)、食材可得性、烹饪时间等多维度约束,单次规划耗时≤2 秒,支持并发请求(QPS≥50)。
核心支撑功能
用户画像系统通过多维度数据采集(基础信息 + 健康数据 + 行为数据),经 K-Means 聚类生成用户标签(如 “减脂型”“高钙需求”)。饮食记录模块支持手动录入 / 扫码识别,基于食材库自动计算营养成分,生成周 / 月统计报表(ECharts 可视化)。后台管理系统基于若依框架开发,提供菜品 CRUD、营养数据校准、用户行为分析、系统监控(CPU / 内存 / 接口调用量)功能。
技术性能指标
系统响应方面,90% API 请求≤300ms;算法性能表现为 UPICF 推荐耗时≤500ms,MOPSO 规划≤2s;并发承载支持单节点 1000 + 并发用户;数据规模可容纳 10 万 + 用户、5 万 + 菜品数据;稳定性达到服务可用性≥99.9%。
二次开发支持
模块化设计实现算法层、应用层、前端层独立拆分,支持算法替换(如替换为深度学习推荐模型)。接口文档通过 Swagger 3.0 自动生成,算法服务提供 OpenAPI 规范。扩展能力涵盖自定义营养规则、新增菜品分类、接入第三方健康设备数据(如智能秤)。
核心优势总结
算法创新体现在 UPICF+MOPSO 双算法协同,兼顾个性化与科学性;技术成熟度表现为采用主流技术栈选型,架构稳定可扩展,适配高并发场景;功能聚焦核心模块,技术落地性强,无冗余功能,部署维护成本低;扩展性强,支持多场景适配(C 端用户 / 专业机构),二次开发门槛低。
(二)软件开发环境及开发工具
系统开发中具体使用到的技术列表如下:
2.1前端技术框架
css、javascript、jQuery(js框架)、
jQueryEasyUi(基于jQuery的前端框架)
BootStrap(前端框架)、dTree插件、富文本编辑器等
2.2后端技术
开发语言:Java
后台框架:springboot
安卓框架:Uniapp
JDK版本:JDK1.8
服务器:tomcat9.0
数据库:云数据库、mysql 5.7
数据库工具:Navicat11
开发软件:vscode/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
说明:搭建过程中会使用到这些开发环境和工具。建议可以提前学习,这些工具都不收费。网络上找到这些工具下载就行。
(三)最终实现的成果展示(实际运行效果)
数据库配置
# 创建数据库CREATE DATABASE dietify_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;# 导入数据库脚本mysql -u root -p dietify_db < sql/diet.sql
3. 后端启动
cd Dietify-back# 修改配置文件vim diet-admin/src/main/resources/application.yml# 编译打包mvn clean package# 启动应用java -jar diet-admin/target/diet-admin.jar
4. 移动端启动
cd Dietify-App-master# 安装依赖npm install# 开发运行npm run dev:mp-weixin # 微信小程序npm run dev:h5 # H5npm run dev:app-plus # APP# 生产构建npm run build:mp-weixinnpm run build:h5npm run build:app-plus
5. Python算法服务启动
cd recommend-python# 安装Python依赖pip install -r requirements.txt# 启动FastAPI服务uvicorn app.main:app --host 0.0.0.0 --port 8001 --reload# 或使用Docker启动docker build -t dietify-recommend .docker run -p 8001:8001 dietify-recommend
🔧 配置说明
后端配置 (application.yml)
# 数据源配置spring:datasource:url:jdbc:mysql://localhost:3306/dietify_dbusername:rootpassword:your_password# Redis配置redis:host:localhostport:6379password:your_redis_password# 服务端口server:port:8080
移动端配置 (config.js)
module.exports = {// 后端API地址baseUrl: 'http://localhost:8080',// Python算法服务地址recommendUrl: 'http://localhost:8001',// 阿里云短信配置sms: {accessKeyId: 'your_access_key',accessKeySecret: 'your_access_secret' }}









夜雨聆风
