一、项目模块划分及技术选型
(一)用户服务模块
- 功能:用户注册、登录、信息管理(修改密码、个人资料更新等)、用户权限管理(普通用户、管理员等不同角色权限控制)。
- 技术选型:Java + Spring Boot + Spring Security + MySQL
- Java 作为核心开发语言,Spring Boot 用于快速搭建项目框架,提供便捷的开发体验和强大的功能支持。
- Spring Security 用于实现用户认证与授权机制,保障系统安全。
- MySQL存储用户基本信息、权限信息等结构化数据。
(二)商品服务模块
- 功能:商品信息录入、编辑、查询(按分类、关键词等多种方式)、商品上下架管理、库存管理(库存数量增减、库存预警等)。
- 技术选型:Java + Spring Boot + MyBatis + MongoDB
- 基于 Java 和 Spring Boot 构建服务基础架构。
- MyBatis 用于高效地进行数据库操作,方便地实现商品数据的增删改查。
- MongoDB 存储商品的详细信息。MongoDB 是一种非关系型数据库,适合存储商品数据这种具有一定结构但可能会频繁变更数据格式或需要灵活查询的数据。例如,商品的属性可能因不同品类而有差异,MongoDB 的文档型数据结构可以方便地存储这种半结构化数据,并且其水平扩展能力能够应对商品数据量不断增长的情况,提高系统的可扩展性。
(三)订单服务模块
- 功能:订单生成、订单状态更新(待付款、已付款、待发货、已发货、已完成、退款中、已退款等)、订单详情查询、订单统计分析(按时间段、用户等维度统计订单数量、金额等)。
- 技术选型:Java + Spring Boot + MySQL+ Redis
- Java 和 Spring Boot 搭建服务框架。
- MySQL存储订单的核心数据,如订单号、用户信息、商品信息、订单金额、订单状态等。
- Redis 用于缓存订单相关数据,如订单状态缓存,以提高订单查询性能,减轻数据库压力,同时可用于处理一些分布式锁场景,确保订单操作的一致性。
(四)推荐服务模块
- 功能:基于用户行为数据(浏览历史、购买记录等)的个性化商品推荐、热门商品推荐、相关商品推荐等。
- 技术选型:Python + Pandas + NumPy + Scikit-learn + Redis
- Python 作为数据处理和机器学习的主要语言。
- Pandas 和 NumPy 用于数据清洗、预处理和特征工程,将从数据库(如 MongoDB 中存储的商品数据和 MySQL中存储的用户及订单数据)中获取的原始用户行为数据进行整理和转换。
- Scikit-learn 用于构建推荐算法模型,如基于协同过滤算法或内容推荐算法的模型。
- Redis 用于存储推荐结果数据,以便快速提供给前端应用进行展示,提高推荐系统的响应速度。
(五)支付服务模块
- 功能:对接多种支付渠道(如微信支付、支付宝支付等)、支付结果回调处理、支付订单查询与统计。
- 技术选型:Java + Spring Boot + 支付渠道官方 SDK(如微信支付 Java SDK、支付宝支付 Java SDK)
- Java 和 Spring Boot 构建服务基础,方便集成支付渠道官方提供的 Java SDK,实现与支付平台的安全对接和交互,处理支付相关业务逻辑。此模块主要与支付平台交互,对数据库操作相对较少,主要依赖于支付平台的接口响应和数据处理,暂无需特定数据库的深度整合。
(六)消息服务模块
- 功能:订单状态变更通知(如发货通知发送给用户)、促销活动消息推送、系统通知等。
- 技术选型:Golang + Kafka(或 RabbitMQ)
- Golang 开发消息服务,利用其高效的并发处理能力和性能优势,确保消息的快速生产和消费。
- Kafka(或 RabbitMQ)作为消息队列,用于解耦消息的生产者和消费者,实现异步通信和流量削峰。例如,订单服务在订单状态变更时作为消息生产者将消息发送到消息队列,消息服务作为消费者从队列中获取消息并进行推送处理。该模块主要关注消息的传递和处理,与数据存储数据库关联不大。
(七)后台管理系统模块
- 功能:管理员对用户、商品、订单等信息的管理操作界面,数据统计报表展示(如销售报表、用户活跃度报表等)。
- 技术选型:
- 核心管理页面部分采用 Vue.js + Element UI 开发:Vue.js 构建动态交互界面,Element UI 提供丰富的后台管理组件,方便快速搭建美观且功能完善的管理页面,通过 Axios 与后端服务进行数据交互。
- 部分特定功能页面采用 PHP 开发:如一些与服务器环境紧密相关且对性能要求不是特别高的功能页面,如服务器信息监控页面、简单的日志查看页面等,利用 PHP 与服务器环境的紧密结合特性进行开发。后台管理系统主要是对其他服务模块数据的展示和操作入口,数据来源主要是前面提到的各个数据库和服务接口,本身不涉及新的数据存储技术选型。
(八)前端用户界面(PC 端)模块
- 功能:用户浏览商品、搜索商品、加入购物车、下单、查看订单历史、个人中心等功能页面。
- 技术选型:Vue.js + Vue Router + Vuex + Axios + Element UI
- Vue.js 作为核心框架构建单页面应用,实现页面的动态渲染和交互逻辑。
- Vue Router 管理页面路由,实现页面之间的无缝切换和导航。
- Vuex 进行全局状态管理,方便共享和处理用户登录状态、购物车数据等全局信息。
- Axios 用于与后端服务进行 HTTP 通信,获取商品数据、提交订单等操作。
- Element UI 提供一些常用的前端组件,提升开发效率和界面美观度。前端主要关注用户交互和数据展示,通过与后端服务通信获取数据,不涉及数据库存储技术的调整。
(九)移动端应用(UniApp)模块
- 功能:与前端用户界面(PC 端)类似的商品浏览、搜索、购物车、下单等功能,以及适配移动端的特色功能,如扫码添加商品到购物车、基于地理位置的店铺推荐、消息推送接收与展示等。
- 技术选型:UniApp + Vue.js + uni-ui + 相关原生插件(如地图插件、扫码插件等)
- UniApp 基于 Vue.js 框架,一套代码可生成 iOS 和 Android 应用,提高开发效率。
- uni-ui 是 UniApp 的官方组件库,提供丰富的移动端组件,方便构建界面。
- 根据需求集成原生插件,如使用地图插件获取用户地理位置信息,实现基于位置的服务;使用扫码插件实现商品扫码功能,提升用户购物体验。移动端应用同样主要是与后端服务交互获取数据,不涉及数据库存储技术的变更。