5.3 KiB
5.3 KiB
✅ 方案A - 智能字段添加方案
创建日期: 2026-01-23
问题: 部分字段已存在导致SQL执行失败
解决方案: 使用智能SQL脚本,自动检测并只添加缺失的字段
🎯 智能方案特点
✅ 自动检测
- 执行前检查字段是否存在
- 只添加不存在的字段
- 已存在的字段自动跳过
✅ 清晰反馈
- ✅ 表示字段/索引添加成功
- ⏭️ 表示字段/索引已存在,已跳过
- 执行完成后显示订单表完整结构
✅ 安全可靠
- 不会因为字段已存在而报错
- 不会删除或修改已有数据
- 可以重复执行
🚀 执行步骤
方法1:使用批处理文件(推荐)
-
打开命令行
cd peidu\sql -
执行批处理
执行智能字段添加.bat -
确认执行
- 输入
Y - 等待执行完成
- 输入
-
查看结果
- 看到 ✅ 表示字段添加成功
- 看到 ⏭️ 表示字段已存在(正常)
- 最后会显示订单表完整结构
方法2:在Navicat中执行(备选)
- 打开Navicat
- 连接到peixue数据库
- 新建查询
- 打开文件:
peidu/sql/add_order_payment_fields_smart_2026-01-23.sql - 点击运行
- 查看结果
📋 预期输出示例
========================================
开始智能添加订单表字段
========================================
⏭️ 字段 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
📞 执行完成后告诉我
请执行完成后告诉我:
-
执行结果
- 有多少个字段添加成功(✅)
- 有多少个字段已存在(⏭️)
- 是否有任何错误
-
验证结果
- 订单表是否包含所有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