6.8 KiB
6.8 KiB
🚀 立即开始:方案A实施指南
创建日期: 2026-01-23
前置条件: ✅ 方案B(钱包支付)已完成
实施目标: 实现次卡、套餐、优惠券、地址关联功能
📋 快速开始
第一步:执行数据库脚本 ⏳
-
打开命令行,进入SQL目录:
cd peidu/sql -
执行批处理文件:
执行方案A数据库脚本.bat -
确认执行:
- 输入
Y确认 - 等待脚本执行完成
- 输入
-
验证结果:
-- 检查新表是否创建成功 USE peixue; SHOW TABLES LIKE 'coupon'; SHOW TABLES LIKE 'user_coupon'; SHOW TABLES LIKE 'user_address'; SHOW TABLES LIKE 'user_package'; -- 检查订单表字段是否添加成功 DESC `order`;
第二步:后端代码实现 ⏳
2.1 优惠券系统
需要创建的文件:
Coupon.java- 优惠券实体UserCoupon.java- 用户优惠券实体CouponMapper.java- 优惠券MapperUserCouponMapper.java- 用户优惠券MapperCouponService.java- 优惠券服务接口CouponServiceImpl.java- 优惠券服务实现CouponController.java- 优惠券控制器
核心功能:
- 领取优惠券
- 查询可用优惠券
- 使用优惠券
- 优惠券过期检查
2.2 地址管理系统
需要创建的文件:
UserAddress.java- 用户地址实体UserAddressMapper.java- 地址MapperUserAddressService.java- 地址服务接口UserAddressServiceImpl.java- 地址服务实现UserAddressController.java- 地址控制器
核心功能:
- 添加地址
- 编辑地址
- 删除地址
- 设置默认地址
- 查询地址列表
2.3 订单支付扩展
需要修改的文件:
OrderServiceImpl.java- 扩展payOrder方法
扩展内容:
@Override
@Transactional(rollbackFor = Exception.class)
public boolean payOrder(Long orderId, String paymentMethod, PaymentDTO paymentDTO) {
Order order = getById(orderId);
if (order == null) {
throw new BusinessException("订单不存在");
}
// 1. 应用优惠券(如果有)
if (paymentDTO.getCouponId() != null) {
applyCoupon(order, paymentDTO.getCouponId());
}
// 2. 根据支付方式处理
switch (paymentMethod) {
case "timecard":
// 次卡支付:不扣款,只标记
validateTimeCard(paymentDTO.getTimecardId());
order.setTimecardId(paymentDTO.getTimecardId());
break;
case "package":
// 套餐支付:不扣款,只标记
validatePackage(paymentDTO.getPackageId());
order.setPackageId(paymentDTO.getPackageId());
break;
case "wallet":
// 钱包支付:立即扣款
walletService.consume(order.getUserId(), orderId, order.getPayAmount());
break;
case "wechat":
// 微信支付:调用第三方接口
// TODO: 实现微信支付
break;
default:
throw new BusinessException("不支持的支付方式");
}
// 3. 更新订单状态
order.setPaymentMethod(paymentMethod);
order.setPayStatus(1);
order.setPayTime(LocalDateTime.now());
order.setStatus(1); // 待接单
return updateById(order);
}
第三步:前端页面实现 ⏳
3.1 支付方式选择页面
文件路径: peidu/uniapp/src/user-package/pages/payment/select-method.vue
功能:
- 显示可用支付方式(钱包、次卡、套餐、微信)
- 显示余额/剩余次数
- 选择支付方式
3.2 优惠券选择页面
文件路径: peidu/uniapp/src/user-package/pages/coupon/select.vue
功能:
- 显示可用优惠券列表
- 显示优惠金额
- 选择优惠券
3.3 地址选择页面
文件路径: peidu/uniapp/src/user-package/pages/address/select.vue
功能:
- 显示地址列表
- 选择服务地址
- 添加新地址
🔄 支付流程示例
场景1:使用次卡支付
用户下单
↓
选择次卡支付
↓
验证次卡是否可用 ✅
↓
标记订单使用次卡(不扣款)✅
↓
订单状态:已支付 ✅
↓
服务完成后扣减次卡次数 ✅
场景2:使用优惠券+钱包
用户下单(原价100元)
↓
选择优惠券(满100减20)
↓
计算实付金额:80元 ✅
↓
选择钱包支付
↓
扣减钱包80元 ✅
↓
标记优惠券已使用 ✅
↓
订单状态:已支付 ✅
📊 实施进度
数据库层 ⏳
- 执行SQL脚本
- 验证表结构
- 插入测试数据
后端层 ⏳
- 优惠券系统实现
- 地址管理实现
- 订单支付扩展
- 单元测试
- 编译验证
前端层 ⏳
- 支付方式选择页面
- 优惠券选择页面
- 地址选择页面
- 前后端联调
测试层 ⏳
- 功能测试
- 集成测试
- 端到端测试
📁 相关文档
设计文档
peidu/docs/fixes/2026-01-23-方案A其他支付方式实施/README.md- 总体方案peidu/docs/fixes/2026-01-23-方案A其他支付方式实施/📋数据库设计.md- 数据库设计
SQL脚本
peidu/sql/plan_a_payment_system_database_2026-01-23.sql- 数据库脚本peidu/sql/执行方案A数据库脚本.bat- 执行批处理
实施指南
peidu/🚀立即开始-方案A实施-2026-01-23.md- 本文件
⚠️ 注意事项
1. 数据库执行
- 确保MySQL服务已启动
- 确保数据库名称正确(peixue)
- 确保用户名密码正确(root/123456)
2. 代码实现
- 所有支付操作必须使用事务
- 失败时必须回滚
- 记录详细的操作日志
3. 测试验证
- 每个功能实现后立即测试
- 确保数据一致性
- 验证异常处理
🎯 成功标准
功能完整性
- ✅ 支持次卡支付
- ✅ 支持套餐支付
- ✅ 支持优惠券使用
- ✅ 支持地址关联
数据准确性
- ✅ 金额计算正确
- ✅ 次卡扣减正确
- ✅ 套餐扣减正确
- ✅ 优惠券使用正确
用户体验
- ✅ 支付流程顺畅
- ✅ 错误提示清晰
- ✅ 响应速度快
📞 下一步行动
-
立即执行数据库脚本 ⏳
cd peidu/sql 执行方案A数据库脚本.bat -
验证数据库表 ⏳
- 检查新表是否创建成功
- 检查订单表字段是否添加成功
-
开始后端实现 ⏳
- 优先实现优惠券系统
- 然后实现地址管理
- 最后扩展订单支付
创建时间: 2026-01-23
当前状态: 准备就绪,等待执行数据库脚本
下一步: 执行 peidu/sql/执行方案A数据库脚本.bat