fix(shop): 修复订单支付状态错误
- 修复 ShopOrderMapper.xml 中更新订单支付状态的错误 - 添加 SQL 脚本修复已存在的错误数据 - 更新订单支付状态为已付款(1)或未付款(0)- 验证修复结果并生成修复报告
This commit is contained in:
@@ -286,7 +286,7 @@
|
||||
pay_type = #{param.payType},
|
||||
</if>
|
||||
<if test="param.payStatus != null">
|
||||
pay_status = #{param.payType},
|
||||
pay_status = #{param.payStatus},
|
||||
</if>
|
||||
<if test="param.orderStatus != null">
|
||||
order_status = #{param.orderStatus},
|
||||
|
||||
133
src/main/resources/sql/fix_pay_status_102_error.sql
Normal file
133
src/main/resources/sql/fix_pay_status_102_error.sql
Normal file
@@ -0,0 +1,133 @@
|
||||
-- 修复支付状态错误:将错误的102值修正为正确的1(已付款)
|
||||
--
|
||||
-- 问题原因:ShopOrderMapper.xml中的updateByOutTradeNo方法错误地将payType的值赋给了payStatus字段
|
||||
-- 修复内容:
|
||||
-- 1. 将所有payStatus=102的记录修改为payStatus=1(已付款)
|
||||
-- 2. 验证修复结果
|
||||
|
||||
-- ========================================
|
||||
-- 1. 检查当前问题数据
|
||||
-- ========================================
|
||||
|
||||
-- 查看所有payStatus=102的订单
|
||||
SELECT
|
||||
'=== 问题数据检查 ===' as section,
|
||||
order_id,
|
||||
order_no,
|
||||
pay_type,
|
||||
pay_status,
|
||||
pay_time,
|
||||
transaction_id,
|
||||
tenant_id,
|
||||
create_time
|
||||
FROM shop_order
|
||||
WHERE pay_status = 102
|
||||
ORDER BY create_time DESC;
|
||||
|
||||
-- 统计问题数据数量
|
||||
SELECT
|
||||
'=== 问题统计 ===' as section,
|
||||
COUNT(*) as total_error_records,
|
||||
COUNT(DISTINCT tenant_id) as affected_tenants,
|
||||
MIN(create_time) as earliest_error,
|
||||
MAX(create_time) as latest_error
|
||||
FROM shop_order
|
||||
WHERE pay_status = 102;
|
||||
|
||||
-- 按租户统计问题数据
|
||||
SELECT
|
||||
'=== 按租户统计 ===' as section,
|
||||
tenant_id,
|
||||
COUNT(*) as error_count,
|
||||
MIN(create_time) as first_error,
|
||||
MAX(create_time) as last_error
|
||||
FROM shop_order
|
||||
WHERE pay_status = 102
|
||||
GROUP BY tenant_id
|
||||
ORDER BY error_count DESC;
|
||||
|
||||
-- ========================================
|
||||
-- 2. 备份问题数据(可选)
|
||||
-- ========================================
|
||||
|
||||
-- 创建备份表(如果需要)
|
||||
-- CREATE TABLE shop_order_pay_status_backup_20250830 AS
|
||||
-- SELECT * FROM shop_order WHERE pay_status = 102;
|
||||
|
||||
-- ========================================
|
||||
-- 3. 修复数据
|
||||
-- ========================================
|
||||
|
||||
-- 修复:将payStatus=102的记录改为payStatus=1(已付款)
|
||||
-- 注意:只修复那些有支付时间和交易号的订单(确实已支付的订单)
|
||||
UPDATE shop_order
|
||||
SET pay_status = 1
|
||||
WHERE pay_status = 102
|
||||
AND pay_time IS NOT NULL
|
||||
AND transaction_id IS NOT NULL
|
||||
AND transaction_id != '';
|
||||
|
||||
-- 对于没有支付时间或交易号的订单,设置为未付款状态
|
||||
UPDATE shop_order
|
||||
SET pay_status = 0
|
||||
WHERE pay_status = 102
|
||||
AND (pay_time IS NULL OR transaction_id IS NULL OR transaction_id = '');
|
||||
|
||||
-- ========================================
|
||||
-- 4. 验证修复结果
|
||||
-- ========================================
|
||||
|
||||
-- 检查是否还有payStatus=102的记录
|
||||
SELECT
|
||||
'=== 修复结果检查 ===' as section,
|
||||
COUNT(*) as remaining_error_records
|
||||
FROM shop_order
|
||||
WHERE pay_status = 102;
|
||||
|
||||
-- 验证修复后的数据分布
|
||||
SELECT
|
||||
'=== 支付状态分布 ===' as section,
|
||||
pay_status,
|
||||
COUNT(*) as record_count,
|
||||
CASE
|
||||
WHEN pay_status = 0 THEN '未付款'
|
||||
WHEN pay_status = 1 THEN '已付款'
|
||||
ELSE CONCAT('异常状态: ', pay_status)
|
||||
END as status_desc
|
||||
FROM shop_order
|
||||
GROUP BY pay_status
|
||||
ORDER BY pay_status;
|
||||
|
||||
-- 检查最近修复的订单
|
||||
SELECT
|
||||
'=== 最近修复的订单 ===' as section,
|
||||
order_id,
|
||||
order_no,
|
||||
pay_type,
|
||||
pay_status,
|
||||
pay_time,
|
||||
transaction_id,
|
||||
tenant_id
|
||||
FROM shop_order
|
||||
WHERE pay_status = 1
|
||||
AND pay_time IS NOT NULL
|
||||
AND transaction_id IS NOT NULL
|
||||
AND update_time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)
|
||||
ORDER BY update_time DESC
|
||||
LIMIT 10;
|
||||
|
||||
-- ========================================
|
||||
-- 5. 生成修复报告
|
||||
-- ========================================
|
||||
|
||||
SELECT
|
||||
'=== 修复完成报告 ===' as section,
|
||||
CONCAT(
|
||||
'问题原因:ShopOrderMapper.xml中updateByOutTradeNo方法错误地将payType值赋给payStatus字段\n',
|
||||
'修复方案:\n',
|
||||
'1. 修复了XML映射文件中的错误:pay_status = #{param.payType} -> pay_status = #{param.payStatus}\n',
|
||||
'2. 修复了数据库中已存在的错误数据\n',
|
||||
'3. 建议:检查其他可能的类似错误\n'
|
||||
) as fix_summary;
|
||||
|
||||
SELECT '✅ 支付状态修复完成!请验证支付回调功能是否正常工作。' as result;
|
||||
Reference in New Issue
Block a user