peixue-dev/Archive/peidu-temp-files/docs/🚀立即开始-方案A实施-2026-01-23.md

6.8 KiB
Raw Blame History

🚀 立即开始方案A实施指南

创建日期: 2026-01-23
前置条件: 方案B钱包支付已完成
实施目标: 实现次卡、套餐、优惠券、地址关联功能


📋 快速开始

第一步:执行数据库脚本

  1. 打开命令行进入SQL目录

    cd peidu/sql
    
  2. 执行批处理文件

    执行方案A数据库脚本.bat
    
  3. 确认执行

    • 输入 Y 确认
    • 等待脚本执行完成
  4. 验证结果

    -- 检查新表是否创建成功
    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 优惠券系统

需要创建的文件

  1. Coupon.java - 优惠券实体
  2. UserCoupon.java - 用户优惠券实体
  3. CouponMapper.java - 优惠券Mapper
  4. UserCouponMapper.java - 用户优惠券Mapper
  5. CouponService.java - 优惠券服务接口
  6. CouponServiceImpl.java - 优惠券服务实现
  7. CouponController.java - 优惠券控制器

核心功能

  • 领取优惠券
  • 查询可用优惠券
  • 使用优惠券
  • 优惠券过期检查

2.2 地址管理系统

需要创建的文件

  1. UserAddress.java - 用户地址实体
  2. UserAddressMapper.java - 地址Mapper
  3. UserAddressService.java - 地址服务接口
  4. UserAddressServiceImpl.java - 地址服务实现
  5. UserAddressController.java - 地址控制器

核心功能

  • 添加地址
  • 编辑地址
  • 删除地址
  • 设置默认地址
  • 查询地址列表

2.3 订单支付扩展

需要修改的文件

  1. 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. 测试验证

  • 每个功能实现后立即测试
  • 确保数据一致性
  • 验证异常处理

🎯 成功标准

功能完整性

  • 支持次卡支付
  • 支持套餐支付
  • 支持优惠券使用
  • 支持地址关联

数据准确性

  • 金额计算正确
  • 次卡扣减正确
  • 套餐扣减正确
  • 优惠券使用正确

用户体验

  • 支付流程顺畅
  • 错误提示清晰
  • 响应速度快

📞 下一步行动

  1. 立即执行数据库脚本

    cd peidu/sql
    执行方案A数据库脚本.bat
    
  2. 验证数据库表

    • 检查新表是否创建成功
    • 检查订单表字段是否添加成功
  3. 开始后端实现

    • 优先实现优惠券系统
    • 然后实现地址管理
    • 最后扩展订单支付

创建时间: 2026-01-23
当前状态: 准备就绪,等待执行数据库脚本
下一步: 执行 peidu/sql/执行方案A数据库脚本.bat