目录
一、项目背景
二、技术介绍
三、功能介绍
四、代码设计
五、系统实现
一、项目背景
中医药作为中华民族的瑰宝,在疾病防治与健康养生领域发挥着不可替代的作用。近年来,随着“健康中国”战略的深入推进和民众健康意识的显著提升,中药材市场需求持续旺盛。然而,传统中药材销售模式长期面临信息不对称、品质难溯源、销售渠道单一、专业服务缺失等结构性痛点。一方面,消费者面对琳琅满目的药材品类,往往缺乏辨别真伪优劣的专业知识,容易陷入“以貌取材”的误区;另一方面,基层药材商户受限于信息化水平,在库存管理、客户服务、精准营销等方面力不从心,难以适应数字化时代的消费升级需求。
与此同时,人工智能技术的蓬勃发展正加速重塑传统行业格局。以DeepSeek、ChatGPT为代表的大语言模型(LLM)展现出卓越的自然语言理解与知识推理能力,为中医药领域的智能化转型提供了全新契机。Spring AI框架作为Spring生态中面向AI应用开发的官方解决方案,通过统一抽象的API接口,能够无缝对接各类大模型,极大降低了AI能力与业务系统集成的技术门槛。将AI大模型引入中药材销售场景,有望在智能导购推荐、药材知识问答、个性化养生方案生成等环节实现突破性体验升级。
基于上述背景,本课题拟设计并开发一套基于Spring Boot+Vue3+Spring AI的中药材智能销售系统。系统采用前后端分离架构,后端以Spring Boot 3为核心构建稳健服务层,通过Spring AI框架统一集成大模型能力,前端采用Vue3组合式API与TypeScript构建沉浸式交互界面,Element Plus提供丰富的业务组件支撑。核心功能模块包括:中药材智能商城(支持多维度检索、功效分类浏览、在线下单);AI智能导购助手(基于大模型实现药材功效解析、对症推荐、配伍禁忌提醒);库存与订单管理(面向商户的进销存一体化管理);药膳与养生方案推荐(结合节气、体质等因素生成个性化建议)。本系统的研发,旨在探索AI大模型在中医药流通领域的创新应用路径,为传统中药材行业数字化转型提供可复用的技术范式与解决方案。
二、技术介绍
项目采用技术:
① 架构模式:前后端分离开发
② 系统环境:Windows、Mac
③ 开发环境:IDEA、JDK21、MySQL 8.0+、Node.js 16+
④ 后端技术栈:Spring Boot 3.2.0、Spring AI 1.0.0-M4、阿里云百炼大模型、MyBatis-Plus 3.5.9、MySQL 8.0+、JWT、Hutool、Spring WebFlux
⑤ 前端技术栈:Vue 3.3.4、Vue Router 4.2.4、Vuex 4.1.0、Element Plus 2.3.14、Axios 1.5.0、ECharts 5.4.3、Vite 4.4.9
本系统采用前后端分离的开发模式,支持Windows与macOS跨平台运行。开发环境方面,后端基于IntelliJ IDEA与JDK 21,数据库采用MySQL 8.0+,前端使用Node.js 16+与Vite构建工具,保障高效开发与快速热更新。
后端技术栈以Spring Boot 3.2.0为核心框架,依托Spring AI 1.0.0-M4统一抽象接口集成阿里云百炼大模型能力,实现智能导购与知识问答;MyBatis-Plus 3.5.9作为ORM框架简化数据访问层开发,配合MySQL实现数据持久化;JWT用于身份认证与权限管理,Hutool工具库提升开发效率,Spring WebFlux支持非阻塞响应式编程,为AI流式对话提供高性能通信保障。
前端技术栈采用Vue 3.3.4组合式API与TypeScript构建类型安全的组件化应用,Vue Router 4.2.4管理路由,Vuex 4.1.0实现全局状态管理;Element Plus 2.3.14提供丰富的后台UI组件,Axios 1.5.0封装HTTP请求与拦截器,ECharts 5.4.3实现销售数据可视化分析。该技术体系前后端协同,为中药材智能销售系统提供了高性能、可扩展、体验优良的技术底座。
三、功能介绍
二、功能描述
用户端功能:
用户认证模块(注册、登录、个人信息管理、修改密码)
药材商品模块(列表浏览、详情查看、分类筛选、关键词搜索)
购物车模块(添加商品、修改数量、删除商品、批量删除)
订单模块(创建订单、订单列表、订单支付、取消订单、确认收货)
收货地址模块(地址列表、新增地址、修改地址、删除地址、设置默认)
我的收藏模块(收藏商品、取消收藏、收藏列表)
评价模块(发表评价、星级评分、上传图片、查看评价)
资讯模块(资讯列表、资讯详情、分类浏览)
公告模块(公告列表、公告详情)
AI智能客服模块(中医药材咨询、购买建议、订单查询、常见问题解答、SSE流式输出、上下文记忆)
管理端功能:
管理员认证模块(管理员登录、管理员注册、JWT权限验证)
数据统计模块(销售统计、订单统计、评价统计、用户统计、ECharts可视化图表)
药材管理模块(增删改查、图片上传、上下架管理、库存管理)
分类管理模块(增删改查、排序管理)
订单管理模块(订单列表、订单详情、发货操作、多条件筛选)
用户管理模块(用户列表、用户详情、禁用启用)
评价管理模块(评价列表、评价详情、删除评价)
资讯管理模块(增删改查、封面上传)
公告管理模块(增删改查)
三、数据库设计
系统数据库:herbal_system_db
包含11张主表:
主要数据表:
user(用户表)
sys_admin(管理员表)
product(中药材表)
product_category(药材分类表)
cart(购物车表)
favorite(收藏表)
orders(订单表)
order_item(订单详情表)
address(收货地址表)
review(评价表)
article(资讯表)
notice(公告表)
四、项目特色
完整的前后端分离架构,代码结构清晰规范
集成Spring AI + 阿里云百炼大模型,实现AI智能客服功能
AI客服支持SSE流式输出,实时显示回复内容
完善的用户权限控制,基于JWT的安全认证机制
美观的前端界面,基于Vue3 + Element Plus的响应式设计
完整的电商购物流程,从浏览到下单支付全覆盖
强大的管理后台,支持数据统计和ECharts可视化展示
丰富的业务功能,涵盖中医药材电商平台核心业务场景
支持图片上传和预览功能
严格的代码规范,采用三层架构,易于维护扩展
五、源码说明
源码包含:
前端Vue3源码(完整项目结构,含所有页面组件)
后端SpringBoot源码(完整三层架构:Controller、Service、Mapper)
Spring AI集成源码(AI配置、聊天服务、SSE流式接口)
MySQL数据库脚本(包含完整表结构和测试数据)
详细开发文档(包含技术栈说明、功能介绍、部署步骤、AI配置说明)
测试账号(用户端账号、管理员账号)
六、测试账号
用户端测试账号:
用户名:liming
密码:123456
管理端测试账号:
用户名:admin
密码:123456
四、代码设计
package com.herb.config; import org.springframework.ai.chat.ChatClient; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.chat.prompt.SystemPromptTemplate; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; /** * Spring AI 配置类 * 集成阿里云百炼大模型(兼容OpenAI API格式) */ @Configuration public class AiConfig { @Value("${spring.ai.openai.api-key}") private String apiKey; @Value("${spring.ai.openai.base-url}") private String baseUrl; @Value("${spring.ai.openai.chat.options.model}") private String model; /** * 配置OpenAiApi客户端 * 阿里云百炼兼容OpenAI接口规范 */ @Bean public OpenAiApi openAiApi() { return new OpenAiApi(baseUrl, apiKey); } /** * 配置ChatClient */ @Bean public ChatClient chatClient(OpenAiApi openAiApi) { OpenAiChatOptions options = OpenAiChatOptions.builder() .withModel(model) .withTemperature(0.7) .withMaxTokens(2048) .withTopP(0.9) .build(); return new OpenAiChatClient(openAiApi, options); } }