古玩多商家商城
创建于 2025 年 3 月 24 日
项目介绍
古玩多商家商城是一个面向古玩钱币行业的电商平台(App 名为”鉴藏君”),基于芋道开源快速开发平台(ruoyi-vue-pro 2.4.1)二次开发而来。仓库包含三大部分:Spring Boot 3 多模块后端(其中 yudao-module-antique 为本次定制的古玩业务模块)、Vue 3 管理后台(yudao-ui-admin-vue3-古玩商城)、基于 shopro 2.4.1 魔改的 uniapp 商城端(yudao-mall-uniapp),外加一份约 6.9MB、含 144 张表的 guwan.sql 全量数据库脚本,导入后即可运行演示。项目同时附带微信支付 v2 密钥、微信公众号配置、SSL 证书与线上域名(www.jcj888.com / api.jcj888.com / admin.jcj888.com),可见这是一个完成交付并进入维护期的真实项目,目录中的《待修改问题.xlsx》记录了后续迭代清单。
与通用商城不同,平台围绕古玩钱币行业设计业务:商品按朝代分类(预置先秦、大宋、大明、清朝,清朝下还有”货布”子类),示例商品如”526#崇宁通宝折十 抽示版 美品,保真包老,支持三方鉴”售价 2000 元、带多图与富文本描述;交易之外还提供”钱币专家确版""特惠评级/加急快评""竞拍专场”三项行业特色服务,形成”买、鉴、评、拍”一体的古玩交易闭环。
项目架构
后端为 Spring Boot 3.4.1(JDK 17)多模块单体架构,定制业务全部收敛在新增的 yudao-module-antique(api + biz 两个子模块)中,与商城、支付、会员、营销等原生模块并列,主要组成部分如下:
| 模块 | 技术栈 | 说明 |
|---|---|---|
| yudao-module-antique | Spring Boot 3、MyBatis-Plus、Redisson | 定制业务:商家、商品、订单、鉴定、评级、竞拍 |
| yudao-module-mall / member / pay / promotion | Spring Boot 3 | 芋道原生商城、会员、支付、营销模块 |
| yudao-server | Spring Boot 3 | 启动模块,dev 环境端口 48080 |
| yudao-ui-admin-vue3 | Vue 3、Element Plus 2.9、Vite、TypeScript | 管理后台,src/views/antique 为定制业务页面 |
| yudao-mall-uniapp | uniapp、Vue 3、Pinia、shopro 2.4.1 | 商城端(H5/微信小程序/App),tabBar 含首页/分类/专场/购物车/我的 |
| guwan.sql | MySQL 8.0.35 | 144 张表,其中 antique_* 定制表 12 张,全部含 tenant_id 支持 SaaS 多租户 |
定制表包括:antique_merchant(商家)、antique_category(商品分类)、antique_goods(商品)、antique_goods_comment(评论)、antique_goods_favorite(收藏)、antique_tag(标签)、antique_order(订单)、antique_identify_apply(鉴定申请)、antique_grade_apply(评级申请)、antique_auction(竞拍)、antique_auction_log(出价记录)以及专场分类、竞拍商品与留言表。订单表记录了从下单到退款的全过程时间戳(支付、发货、收货、关闭、退款时间)与支付单号、支付渠道、退款金额等信息;鉴定与评级申请单除状态流转外,还记录直径、厚度、重量、正背面图与快递单号等钱币评级专业字段。所有金额字段统一以”分”为单位存储,避免浮点误差。
核心功能
多商家与商品管理。 antique_merchant 支持自营与个人两种商家类型,含联系人、手机号、logo、横幅、店铺地址与描述,状态含待审核/正常/禁用;商品表以 merchant_id 归属商家,支持封面图(多张逗号分隔)、视频、销售价格、库存、排序与状态(仓库中/上架/下架),并按朝代分类与标签(如”精品、一口价”)组织。管理后台提供商家、商品、分类、标签的完整 CRUD 页面,App 端有 /antique/goods/page、/antique/category/list 等公开接口支撑商城浏览。
订单交易闭环。 OrderServiceImpl 实现完整状态机:待付款(0)→待发货(10)→已发货(20)→已完成(30),以及已退款(50)、已关闭(60)。创建订单时校验库存、按商品价格与数量计算总价,然后通过 payOrderApi.createOrder 生成支付单(支付应用 PAY_APP_KEY = "Goods",2 小时过期);支付回调 updateOrderPaid 做了完整的幂等与合法性校验——重复回调直接返回、支付单号不匹配报错、支付金额与实付金额必须一致、商户单号必须匹配。用户端支持取消订单、确认收货;管理端支持发货(deliveryOrder)与售后处理:用户提交退款申请(金额不得超过实付),商家同意后通过 payRefundApi.createRefund 创建退款单(merchantRefundId = 订单号 + "-refund"),退款回调后订单置为已退款。管理后台订单页支持按订单编号、商品名称、支付渠道、支付/发货/收货/关闭时间、订单状态与收货人信息组合筛选。
钱币鉴定与评级。 鉴定(专家确版)与评级(送评)是平台的核心增值服务:App 端”钱币鉴定”页说明专家确版 12 小时内出结果、只看版别不鉴真伪、暂只支持北宋南宋钱币,付费 5 元;IdentifyApplyServiceImpl 从配置中心读取 identify.apply.price 作为服务价格,创建申请单后立即生成支付单(PAY_APP_KEY = "IdentifyApply"),支付回调校验通过后进入”待评级→评级中→已评级→已寄回”的流转;评级申请单额外支持记录正面图/背面图、直径、厚度、重量等客观数据,以及快递公司、快递单号与评级结果,管理后台可审核处理。两处支付逻辑均复用同一套”创建支付单 + 回调幂等校验”模式。
竞拍专场。 竞拍功能以”专场”(antique_auction)为组织单位,一个专场挂载多个竞拍商品(子表),支持专场分类、起拍价、当前价、加价幅度、开始/结束时间与状态(未开始/进行中/已结束/流拍),中标用户、中标价与支付状态直接记录在竞拍表上。App 端”专场”是独立 tab 页面:专场列表接口一次返回内嵌的商品列表,出价页提供”加一档/加两档/加五档/自定义出价”选项,展示当前价、加价幅度与剩余时间;每个竞拍商品还支持留言互动,管理端可批量配置整个专场下所有商品的留言开关、是否允许匿名与是否需审核,App 端匿名留言会以”匿名用户”展示。需要说明的是,出价接口在前端已接入(antique/auction-info/auction-goods/bid),但后端源码中尚未提供对应实现,竞拍表也暂无示例数据,属于功能迭代中的一环。
功能截图
暂无运行截图。
快速上手
- 创建数据库并导入脚本(MySQL 8):
mysql -u root -p -e "CREATE DATABASE guwan DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -u root -p guwan < guwan.sql
- 修改
yudao-server/src/main/resources/application-dev.yaml中的 MySQL 与 Redis 连接,启动后端:
mvn install -DskipTests
cd yudao-server && mvn spring-boot:run # http://localhost:48080
- 启动管理后台前端:
cd yudao-ui-admin-vue3-古玩商城 && pnpm install && pnpm dev
- 启动商城端(H5 调试):
cd yudao-mall-uniapp && pnpm install && pnpm dev:h5
- 使用脚本预置账号 admin(密码为芋道默认
admin123)登录管理后台,进入”古玩商城”菜单即可管理商家、商品、分类、标签、订单、鉴定、评级与竞拍专场;商城端可浏览按朝代分类的商品、下单购买、发起鉴定与评级申请。
总结
古玩多商家商城是一个典型的”开源底座 + 行业定制”项目:后端以芋道 Spring Boot 3 多模块工程为骨架,新增 yudao-module-antique 模块承载商家、商品、订单、鉴定、评级、竞拍六类定制业务;支付体系完整复用了平台 PayOrderApi/PayRefundApi 的能力,实现了支付单创建、回调幂等校验与退款联动的可靠交易闭环;前端则是一条 Vue 3 管理后台加一条基于 shopro 魔改的 uniapp 商城端,管理端页面齐全、商城端按古玩行业重新设计了”专场/鉴定/送评”入口与钱币类交互。项目中”买、鉴、评、拍”四类业务并存,鉴定评级收费、竞拍专场等设计对垂直电商很有参考价值;同时也能看到真实项目的另一面——错误码定义存在重复、出价接口前后端未对齐、核心业务表缺少示例数据,这些细节对评估与接手一个交付项目的成熟度很有启发。