当前位置: 首页 > news >正文

【Uni-App+SSM 宠物项目实战】Day15:购物车添加

大家好!今天是学习路线的第15天,我们正式进入订单与购物车核心模块。昨天完成了商家服务列表的分页加载,今天聚焦“购物车添加”功能——这是连接“商品浏览”与“订单提交”的关键环节,用户可将宠物用品(如粮食、玩具)加入购物车,后续统一结算。

为什么学这个? 购物车功能看似简单,实则包含“数据唯一性校验”“用户身份关联”“前后端交互反馈”等核心逻辑。通过本次实战,你将掌握:MyBatis-Plus条件查询判断重复、JWT Token验证用户身份、Uni-App弹窗组件的灵活运用,这些都是电商类项目的必备技能。即使是零基础,也能通过“分步代码+详细注释”轻松上手!

本日目标:实现“商品详情页→添加购物车”全流程,包括后端重复商品检测(已存在则更新数量)、用户身份验证,以及前端弹窗确认、操作反馈等交互,最终达到“添加成功有提示、重复添加能增量、未登录不让加”的实战效果。

一、前置准备

在开始编码前,请确认以下环境与数据已就绪,避免开发中卡壳:

项目 检查内容 注意事项
数据库表结构 确保cart(购物车表)已创建,字段需包含:
id(主键)、user_id(关联用户ID,Long类型)、goods_id(关联商品ID,Long类型)、quantity(商品数量,INT,默认1)、create_time(创建时间,DATETIME,默认当前时间)、update_time(更新时间,DATETIME,自动更新)
若表缺失,执行以下建表SQL:
sqlCREATE TABLE cart (id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL COMMENT '用户ID', goods_id BIGINT NOT NULL COMMENT '商品ID', quantity INT DEFAULT 1 COMMENT '商品数量', create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_user_goods (user_id, goods_id) COMMENT '用户-商品唯一索引,防止重复添加');
后端依赖与配置 1. pom.xml已引入JWT(Day10登录用)、MyBatis-Plus(3.5.x版本)、Hutool(4.0.12+);2. MP分页插件已配置;3. JWT密钥与Day10保持一致(如mypet-secret-2024 若JWT依赖缺失,需补充:
xml<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>
前端组件与存储 1. Uni-App项目已安装uni-popup(弹窗)、uni-icons(图标,可选)组件;2. 登录后uni.getStorageSync('mypet_token')能获取有效Token,mypet_userId已存储;3. 商品详情页能获取当前商品ID(goodsId uni-popup安装:HBuilder X→插件市场→搜索“uni-ui”→导入“uni-popup”组件;商品ID可通过页面跳转参数传递(如pages/goods/detail?id=1
测试数据 1. goods(商品表)已存在测试数据(如id=1,商品名称“宠物狗粮10kg”);2. 存在已登录用户(user_id=1,Token有效) 若商品表无数据,执行SQL:
sqlINSERT INTO goods (id, goods_name, price, stock, status, image_url) VALUES (1, '宠物狗粮10kg', 199.00, 100, 1, '/static/images/dog-food.jpg');

二、核心逻辑流程图

先通过流程图理清“添加购物车”的完整逻辑,再动手编码更高效:

取消
确认
Token无效/过期
Token有效
商品不存在/库存不足
商品合法

文章转载自:

http://PyFA8K4Y.rfyff.cn
http://z2nL2HTw.rfyff.cn
http://dXl4mubO.rfyff.cn
http://K3eMT6PO.rfyff.cn
http://FBCkDpEo.rfyff.cn
http://7OVfM6y4.rfyff.cn
http://CA6eKGQM.rfyff.cn
http://FENbIDTn.rfyff.cn
http://9FPYIao1.rfyff.cn
http://47yW4MX9.rfyff.cn
http://v8F3NWPo.rfyff.cn
http://zO6uMkww.rfyff.cn
http://nJrQnCVh.rfyff.cn
http://4mkEducK.rfyff.cn
http://x5WEJGaw.rfyff.cn
http://ez5HpeE2.rfyff.cn
http://OxuxBrsx.rfyff.cn
http://O0e0dxeT.rfyff.cn
http://hty0dQSw.rfyff.cn
http://8GGB3Aza.rfyff.cn
http://3oh8lqf8.rfyff.cn
http://TGn692mg.rfyff.cn
http://Xx7obLpR.rfyff.cn
http://bDPNbyHA.rfyff.cn
http://Os7FpVaH.rfyff.cn
http://z3kRePji.rfyff.cn
http://eo7hgc8G.rfyff.cn
http://vnZP2WT8.rfyff.cn
http://NMXucr4W.rfyff.cn
http://WBpeB3PH.rfyff.cn
http://www.dtcms.com/a/386562.html

相关文章:

  • AI大模型学习知识体系(1)
  • 重要:Java25正式发布(长期支持版)!
  • OneTerm开源堡垒机实战(二):快速部署与基本使用
  • 网络问题排查
  • linux之套接字Socket
  • 【Uni-App+SSM 宠物项目实战】Day14:商家服务列表
  • MCP 协议客户端与服务端python demo
  • 【Nginx开荒攻略】从命令到实战:Nginx服务启动、停止与重载完全指南
  • Ubuntu系统中在线安装MySQL到指定目录
  • C++工程实战入门笔记16-智能指针
  • 【深度学习新浪潮】什么是太空算力中心?
  • 容器化部署之dockercompose08
  • 卷积神经网络搭建实战(一)——torch云端的MNIST手写数字识别(全解二)
  • [deepseek]Visual Studio 2022创建和使用DLL教程
  • k8s节点网络失联后会发生什么
  • 3分钟掌握C++/Lua双向通信:一个高性能内核 + N个动态脚本
  • Spring MVC小点
  • SpringBoot的自动配置原理
  • 动力电池组半自动生产线:效率与灵活性的平衡之道|深圳比斯特自动化
  • 前端开发编辑器有哪些?常用前端开发编辑器推荐、前端开发编辑器对比与最佳实践分析
  • 【Linux】自动化构建工具——make/Makefile
  • Playwright MCP浏览器自动化教程
  • Linux 内存管理章节十四:多核世界的交通规则:深入Linux内存屏障与并发控制
  • .NET Core 中生成 JWT(JSON Web Token)
  • webRTc 为何深受直播实现的青睐?
  • iOS App 卡顿与性能瓶颈排查实战 如何定位CPU内存GPU帧率问题、优化耗电与网络延迟(uni-app开发性能优化全流程指南)
  • Tomcat的基本配置
  • Delphi6中实现PDF文件打印功能
  • 工作笔记-----基于FreeRTOS的lwIP网络任接收过程,从MAC至协议栈
  • ZipVoice小米语音合成-MacOS可运行