源码地址
宠物用品商城:先选宠物档案,再找适用品
面对猫咪、狗狗和不同生命阶段的用品,买家需要快速找到适合当前宠物的商品。这套商城在通用购物流程上增加个人宠物档案与适用标签,把种类、阶段筛选连接到规格、购物车和订单。
本文使用当前分支真实页面和隔离演示库。宠物、买家、商品、收件人、电话、地址和运单号均为虚构或占位数据;支付、发货和收货为状态演示,没有真实资金或物流活动。
两类角色如何协作
| 角色 | 职责 |
|---|---|
| 管理员(admin) | 维护商品适用标签、分类、规格价格、库存及订单发货 |
| 养宠买家(user) | 注册登录、维护个人宠物档案、筛选用品、管理地址并购买 |
宠物档案属于买家个人数据,商品筛选基于种类与生命阶段。该规则用于商品发现,不提供医疗或营养建议。
管理员与养宠买家分工
管理员维护商品、适用标签、规格、价格、库存与发货;买家维护本人宠物档案并购买用品。本分支沿用admin、user两类角色,没有兽医或宠物独立账号。
角色:管理员。真实页面,使用虚构演示数据。
四类商品集中维护
当前演示目录包含外出帆布袋、幼猫玩具、成年犬牵引绳和清洁毛巾,分别位于外出、猫咪、狗狗与通用分类。商品可上下架,分类可启停。
角色:管理员。真实页面,使用虚构演示数据。
适用种类与阶段标签
幼猫逗猫玩具设置为猫咪、幼年。本次编辑并保存虚构商品说明,保留原标签。种类可选猫咪、狗狗或猫狗通用,阶段可选幼年、成年、老年或全年龄;图片填写URL。
角色:管理员。真实页面,使用虚构演示数据。
规格与库存独立管理
幼猫玩具标准款19.90元、初始库存30件。规格维护价格和库存,库存为0时后台显示缺货。本次未制造缺货场景,截图为有货规格。
角色:管理员。真实页面,使用虚构演示数据。
全部商品展示适用标签
买家注册后目录显示4款上架商品及适用标签。清除宠物筛选可浏览全部商品,分类筛选可以进一步缩小范围。
角色:买家。真实页面,使用虚构演示数据。
建立两份个人宠物档案
实际创建演示幼猫小橘(猫咪、幼年)和演示成年犬小白(狗狗、成年)。字段只有名称、种类、阶段,可编辑或删除,不涉及真实健康记录。
角色:买家。真实页面,使用虚构演示数据。
按成年犬筛选用品
选择成年犬小白后,目录显示成年犬牵引绳、宠物外出帆布袋与清洁毛巾,幼猫玩具不在结果中。通用种类和全年龄标签允许用品适配不同档案。
角色:买家。真实页面,使用虚构演示数据。
按幼猫筛选用品
切换幼猫小橘后,目录显示幼猫玩具与两款通用用品,成年犬牵引绳不在结果中。筛选基于明确标签匹配,不是医疗、营养建议或智能推荐。
角色:买家。真实页面,使用虚构演示数据。
购物车核对两件玩具
本次加购两件幼猫玩具,单价19.90元、合计39.80元,选择虚构收货地址后结算。适配筛选只影响商品发现,订单没有绑定宠物档案。
角色:买家。真实页面,使用虚构演示数据。
提交待支付订单
提交后订单#1为待支付,保存商品、规格、价格和收货信息快照;幼猫玩具库存由30减为28。宠物名称不写入订单。
角色:买家。真实页面,使用虚构演示数据。
模拟支付等待发货
点击模拟支付后变为待发货,只更新演示状态,没有真实扣款。管理员随后可以填写演示运单号。
角色:买家。真实页面,使用虚构演示数据。
管理员记录模拟发货
填写DEMO-PET-1005-001后订单为待收货,保留数量2、金额39.80元。当前只记录运单号,不接真实快递或物流轨迹。
角色:管理员。真实页面,使用虚构演示数据。
买家收货完成闭环
确认收货后订单显示已完成。SQL核验COMPLETED、39.80元与两件明细,库存28件,其他商品库存不变。没有实际配送或签收。
角色:买家。真实页面,使用虚构演示数据。
技术栈、验证与边界
后端使用Java25、Spring Boot4.0.6、MyBatis-Plus、MySQL8.4与Sa-Token;Web使用React18、TypeScript、Umi Max、Ant Design和Pro Components。