peixue-dev/Archive/peidu-temp-files/docs/✅方案A-智能字段添加方案-2026-01-23.md

5.3 KiB
Raw Blame History

方案A - 智能字段添加方案

创建日期: 2026-01-23
问题: 部分字段已存在导致SQL执行失败
解决方案: 使用智能SQL脚本自动检测并只添加缺失的字段


🎯 智能方案特点

自动检测

  • 执行前检查字段是否存在
  • 只添加不存在的字段
  • 已存在的字段自动跳过

清晰反馈

  • 表示字段/索引添加成功
  • ⏭️ 表示字段/索引已存在,已跳过
  • 执行完成后显示订单表完整结构

安全可靠

  • 不会因为字段已存在而报错
  • 不会删除或修改已有数据
  • 可以重复执行

🚀 执行步骤

方法1使用批处理文件推荐

  1. 打开命令行

    cd peidu\sql
    
  2. 执行批处理

    执行智能字段添加.bat
    
  3. 确认执行

    • 输入 Y
    • 等待执行完成
  4. 查看结果

    • 看到 表示字段添加成功
    • 看到 ⏭️ 表示字段已存在(正常)
    • 最后会显示订单表完整结构

方法2在Navicat中执行备选

  1. 打开Navicat
  2. 连接到peixue数据库
  3. 新建查询
  4. 打开文件: peidu/sql/add_order_payment_fields_smart_2026-01-23.sql
  5. 点击运行
  6. 查看结果

📋 预期输出示例

========================================
开始智能添加订单表字段
========================================

⏭️  字段 payment_method 已存在,跳过
⏭️  字段 wallet_amount 已存在,跳过
✅ 字段 timecard_id 添加成功
✅ 字段 package_id 添加成功
✅ 字段 coupon_id 添加成功
✅ 字段 coupon_discount 添加成功
✅ 字段 service_address_id 添加成功
✅ 字段 original_amount 添加成功
✅ 字段 discount_amount 添加成功

========================================
开始智能添加索引
========================================

✅ 索引 idx_timecard_id 添加成功
✅ 索引 idx_package_id 添加成功
✅ 索引 idx_coupon_id 添加成功
✅ 索引 idx_service_address_id 添加成功

========================================
✅ 订单表字段智能添加完成!
========================================

订单表当前字段:
+---------------------+--------------+------+-----+---------+
| Field               | Type         | Null | Key | Default |
+---------------------+--------------+------+-----+---------+
| id                  | bigint       | NO   | PRI | NULL    |
| ...                 | ...          | ...  | ... | ...     |
| payment_method      | varchar(50)  | YES  |     | NULL    |
| wallet_amount       | decimal(10,2)| YES  |     | 0.00    |
| timecard_id         | bigint       | YES  | MUL | NULL    |
| package_id          | bigint       | YES  | MUL | NULL    |
| coupon_id           | bigint       | YES  | MUL | NULL    |
| coupon_discount     | decimal(10,2)| YES  |     | 0.00    |
| service_address_id  | bigint       | YES  | MUL | NULL    |
| original_amount     | decimal(10,2)| YES  |     | NULL    |
| discount_amount     | decimal(10,2)| YES  |     | 0.00    |
+---------------------+--------------+------+-----+---------+

🔍 验证结果

执行完成后运行以下SQL验证

USE peixue;

-- 1. 检查订单表字段
DESC `order`;

-- 2. 检查新表是否存在
SHOW TABLES LIKE 'coupon';
SHOW TABLES LIKE 'user_coupon';
SHOW TABLES LIKE 'user_address';
SHOW TABLES LIKE 'user_package';

-- 3. 查看优惠券测试数据
SELECT * FROM coupon;

-- 4. 查看用户地址测试数据
SELECT * FROM user_address;

完成标准

执行成功后,订单表应该包含以下字段:

支付相关字段

  • payment_method - 支付方式
  • wallet_amount - 钱包支付金额
  • timecard_id - 使用的次卡ID
  • package_id - 使用的套餐ID

优惠券相关字段

  • coupon_id - 使用的优惠券ID
  • coupon_discount - 优惠券折扣金额

地址相关字段

  • service_address_id - 服务地址ID

金额相关字段

  • original_amount - 原价
  • discount_amount - 总折扣金额

索引

  • idx_timecard_id
  • idx_package_id
  • idx_coupon_id
  • idx_service_address_id

📞 执行完成后告诉我

请执行完成后告诉我:

  1. 执行结果

    • 有多少个字段添加成功(
    • 有多少个字段已存在(⏭️
    • 是否有任何错误
  2. 验证结果

    • 订单表是否包含所有9个新字段
    • 4个新表是否都存在
    • 测试数据是否正常

然后我会告诉你下一步:开始后端代码实现


🎯 下一步预告

数据库准备完成后,我们将开始实现:

第一步优惠券系统1-2天

  • Coupon、UserCoupon实体
  • CouponService、CouponController
  • 优惠券领取、使用、查询功能

第二步地址管理1天

  • UserAddress实体
  • UserAddressService、UserAddressController
  • 地址增删改查功能

第三步订单支付扩展2-3天

  • 扩展payOrder方法
  • 支持次卡/套餐/优惠券支付
  • 实现组合支付逻辑

创建时间: 2026-01-23
当前状态: 准备执行智能字段添加
执行文件: peidu/sql/执行智能字段添加.bat
SQL文件: peidu/sql/add_order_payment_fields_smart_2026-01-23.sql