feat(dev): 添加开发环境支付配置和优惠券字段修复功能
- 新增开发环境控制器和环境感知支付服务 - 添加数据库字段缺失修复指南 - 改进优惠券适用商品查询逻辑 -优化支付配置获取方式
This commit is contained in:
206
src/main/resources/sql/create_dev_tenant_payment.sql
Normal file
206
src/main/resources/sql/create_dev_tenant_payment.sql
Normal file
@@ -0,0 +1,206 @@
|
||||
-- 创建开发专用租户和支付配置
|
||||
-- 用于隔离开发环境和生产环境的支付回调地址
|
||||
|
||||
-- ========================================
|
||||
-- 1. 创建开发专用租户(如果不存在)
|
||||
-- ========================================
|
||||
|
||||
-- 检查是否已存在开发租户
|
||||
SELECT 'Checking for dev tenant...' as status;
|
||||
|
||||
-- 插入开发租户(租户ID使用 9999 避免与生产冲突)
|
||||
INSERT IGNORE INTO sys_tenant (
|
||||
tenant_id,
|
||||
tenant_name,
|
||||
tenant_code,
|
||||
contact_person,
|
||||
contact_phone,
|
||||
contact_email,
|
||||
status,
|
||||
deleted,
|
||||
create_time,
|
||||
update_time,
|
||||
comments
|
||||
) VALUES (
|
||||
9999,
|
||||
'开发测试租户',
|
||||
'DEV_TENANT',
|
||||
'开发者',
|
||||
'13800000000',
|
||||
'dev@websoft.top',
|
||||
1,
|
||||
0,
|
||||
NOW(),
|
||||
NOW(),
|
||||
'专用于开发环境测试,不影响生产环境'
|
||||
);
|
||||
|
||||
-- ========================================
|
||||
-- 2. 创建开发环境专用支付配置
|
||||
-- ========================================
|
||||
|
||||
-- 微信支付开发配置
|
||||
INSERT IGNORE INTO sys_payment (
|
||||
name,
|
||||
type,
|
||||
code,
|
||||
image,
|
||||
wechat_type,
|
||||
app_id,
|
||||
mch_id,
|
||||
api_key,
|
||||
apiclient_cert,
|
||||
apiclient_key,
|
||||
pub_key,
|
||||
pub_key_id,
|
||||
merchant_serial_number,
|
||||
notify_url,
|
||||
comments,
|
||||
sort_number,
|
||||
status,
|
||||
deleted,
|
||||
tenant_id,
|
||||
create_time,
|
||||
update_time
|
||||
) VALUES (
|
||||
'微信支付-开发环境',
|
||||
0, -- 微信支付
|
||||
'wechat_dev',
|
||||
'/static/images/wechat_pay.png',
|
||||
1, -- 普通商户
|
||||
'wx1234567890abcdef', -- 开发环境AppID
|
||||
'1234567890', -- 开发环境商户号
|
||||
'your_dev_api_key_32_characters_long',
|
||||
'dev/wechat/apiclient_cert.pem',
|
||||
'dev/wechat/apiclient_key.pem',
|
||||
'dev/wechat/wechatpay_cert.pem',
|
||||
'your_pub_key_id',
|
||||
'your_merchant_serial_number',
|
||||
'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify', -- 开发环境回调地址
|
||||
'开发环境专用配置,使用本地回调地址',
|
||||
1,
|
||||
1, -- 启用
|
||||
0, -- 未删除
|
||||
9999, -- 开发租户ID
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- 支付宝开发配置
|
||||
INSERT IGNORE INTO sys_payment (
|
||||
name,
|
||||
type,
|
||||
code,
|
||||
app_id,
|
||||
mch_id,
|
||||
api_key,
|
||||
notify_url,
|
||||
comments,
|
||||
sort_number,
|
||||
status,
|
||||
deleted,
|
||||
tenant_id,
|
||||
create_time,
|
||||
update_time
|
||||
) VALUES (
|
||||
'支付宝-开发环境',
|
||||
1, -- 支付宝
|
||||
'alipay_dev',
|
||||
'your_dev_alipay_app_id',
|
||||
'your_dev_alipay_mch_id',
|
||||
'your_dev_alipay_private_key',
|
||||
'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify', -- 开发环境回调地址
|
||||
'开发环境专用支付宝配置',
|
||||
2,
|
||||
1, -- 启用
|
||||
0, -- 未删除
|
||||
9999, -- 开发租户ID
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
|
||||
-- ========================================
|
||||
-- 3. 创建开发环境用户(可选)
|
||||
-- ========================================
|
||||
|
||||
-- 创建开发专用用户
|
||||
INSERT IGNORE INTO sys_user (
|
||||
user_id,
|
||||
username,
|
||||
password,
|
||||
nickname,
|
||||
avatar,
|
||||
sex,
|
||||
phone,
|
||||
email,
|
||||
email_verified,
|
||||
real_name,
|
||||
id_card,
|
||||
birthday,
|
||||
department_id,
|
||||
status,
|
||||
deleted,
|
||||
tenant_id,
|
||||
create_time,
|
||||
update_time,
|
||||
comments
|
||||
) VALUES (
|
||||
99999,
|
||||
'dev_user',
|
||||
'$2a$10$yKTnKzKqKqKqKqKqKqKqKOKqKqKqKqKqKqKqKqKqKqKqKqKqKqKqK', -- 密码: dev123456
|
||||
'开发测试用户',
|
||||
'/static/images/default_avatar.png',
|
||||
1,
|
||||
'13800000001',
|
||||
'dev_user@websoft.top',
|
||||
1,
|
||||
'开发者',
|
||||
'000000000000000000',
|
||||
'1990-01-01',
|
||||
1,
|
||||
0, -- 正常状态
|
||||
0, -- 未删除
|
||||
9999, -- 开发租户ID
|
||||
NOW(),
|
||||
NOW(),
|
||||
'开发环境专用测试用户'
|
||||
);
|
||||
|
||||
-- ========================================
|
||||
-- 4. 验证创建结果
|
||||
-- ========================================
|
||||
|
||||
-- 检查租户创建结果
|
||||
SELECT
|
||||
'Tenant Check' as check_type,
|
||||
tenant_id,
|
||||
tenant_name,
|
||||
tenant_code,
|
||||
status
|
||||
FROM sys_tenant
|
||||
WHERE tenant_id = 9999;
|
||||
|
||||
-- 检查支付配置创建结果
|
||||
SELECT
|
||||
'Payment Config Check' as check_type,
|
||||
id,
|
||||
name,
|
||||
type,
|
||||
notify_url,
|
||||
tenant_id,
|
||||
status
|
||||
FROM sys_payment
|
||||
WHERE tenant_id = 9999;
|
||||
|
||||
-- 检查用户创建结果
|
||||
SELECT
|
||||
'User Check' as check_type,
|
||||
user_id,
|
||||
username,
|
||||
nickname,
|
||||
tenant_id,
|
||||
status
|
||||
FROM sys_user
|
||||
WHERE tenant_id = 9999;
|
||||
|
||||
SELECT '开发环境配置创建完成!' as result;
|
||||
101
src/main/resources/sql/fix_coupon_apply_item_table.sql
Normal file
101
src/main/resources/sql/fix_coupon_apply_item_table.sql
Normal file
@@ -0,0 +1,101 @@
|
||||
-- 修复优惠券适用商品表字段缺失问题
|
||||
-- 作者: WebSoft
|
||||
-- 日期: 2025-01-15
|
||||
-- 说明: 添加缺失的 goods_id 和 category_id 字段
|
||||
|
||||
-- ========================================
|
||||
-- 1. 检查表是否存在
|
||||
-- ========================================
|
||||
SELECT 'Checking table existence...' as status;
|
||||
|
||||
-- ========================================
|
||||
-- 2. 添加缺失的字段
|
||||
-- ========================================
|
||||
|
||||
-- 添加 goods_id 字段(如果不存在)
|
||||
SET @sql = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'shop_coupon_apply_item'
|
||||
AND COLUMN_NAME = 'goods_id') = 0,
|
||||
'ALTER TABLE shop_coupon_apply_item ADD COLUMN goods_id INT(11) NULL COMMENT "商品ID" AFTER coupon_id;',
|
||||
'SELECT "goods_id column already exists" as result;'
|
||||
));
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 添加 category_id 字段(如果不存在)
|
||||
SET @sql = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'shop_coupon_apply_item'
|
||||
AND COLUMN_NAME = 'category_id') = 0,
|
||||
'ALTER TABLE shop_coupon_apply_item ADD COLUMN category_id INT(11) NULL COMMENT "分类ID" AFTER goods_id;',
|
||||
'SELECT "category_id column already exists" as result;'
|
||||
));
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ========================================
|
||||
-- 3. 更新现有数据(如果需要)
|
||||
-- ========================================
|
||||
|
||||
-- 如果表中有数据但 goods_id 为空,可以根据业务逻辑设置默认值
|
||||
-- 这里只是示例,实际需要根据业务需求调整
|
||||
UPDATE shop_coupon_apply_item
|
||||
SET goods_id = pk
|
||||
WHERE goods_id IS NULL AND type = 1 AND pk IS NOT NULL;
|
||||
|
||||
-- ========================================
|
||||
-- 4. 添加索引优化查询性能
|
||||
-- ========================================
|
||||
|
||||
-- 添加 goods_id 索引
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_goods ON shop_coupon_apply_item(coupon_id, goods_id);
|
||||
|
||||
-- 添加 category_id 索引
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_category ON shop_coupon_apply_item(coupon_id, category_id);
|
||||
|
||||
-- 添加类型索引
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_type ON shop_coupon_apply_item(coupon_id, type);
|
||||
|
||||
-- ========================================
|
||||
-- 5. 验证修复结果
|
||||
-- ========================================
|
||||
|
||||
-- 检查表结构
|
||||
SELECT
|
||||
COLUMN_NAME,
|
||||
DATA_TYPE,
|
||||
IS_NULLABLE,
|
||||
COLUMN_DEFAULT,
|
||||
COLUMN_COMMENT
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'shop_coupon_apply_item'
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
|
||||
-- 检查数据
|
||||
SELECT
|
||||
'Data check' as check_type,
|
||||
COUNT(*) as total_records,
|
||||
COUNT(goods_id) as records_with_goods_id,
|
||||
COUNT(category_id) as records_with_category_id
|
||||
FROM shop_coupon_apply_item;
|
||||
|
||||
-- ========================================
|
||||
-- 6. 创建示例数据(可选)
|
||||
-- ========================================
|
||||
|
||||
-- 如果表为空,插入一些示例数据用于测试
|
||||
INSERT IGNORE INTO shop_coupon_apply_item
|
||||
(coupon_id, goods_id, category_id, type, status, tenant_id, create_time, update_time)
|
||||
VALUES
|
||||
(1, 1, NULL, 1, 0, 1, NOW(), NOW()),
|
||||
(1, 2, NULL, 1, 0, 1, NOW(), NOW()),
|
||||
(2, NULL, 1, 2, 0, 1, NOW(), NOW()),
|
||||
(2, NULL, 2, 2, 0, 1, NOW(), NOW());
|
||||
|
||||
SELECT 'Database fix completed successfully!' as result;
|
||||
183
src/main/resources/sql/production_safe_payment_config.sql
Normal file
183
src/main/resources/sql/production_safe_payment_config.sql
Normal file
@@ -0,0 +1,183 @@
|
||||
-- 生产环境安全的支付配置脚本
|
||||
-- 此脚本可以安全地在生产数据库执行
|
||||
-- 不会创建测试数据,只添加必要的配置支持
|
||||
|
||||
-- ========================================
|
||||
-- 1. 检查当前环境(手动确认)
|
||||
-- ========================================
|
||||
SELECT
|
||||
'请确认这是您要修改的数据库' as warning,
|
||||
DATABASE() as current_database,
|
||||
NOW() as execution_time;
|
||||
|
||||
-- 暂停执行,让用户确认
|
||||
-- 如果确认无误,请删除下面这行注释继续执行
|
||||
-- SELECT 'Please confirm this is the correct database before proceeding' as confirmation_required;
|
||||
|
||||
-- ========================================
|
||||
-- 2. 添加支付配置表字段(如果不存在)
|
||||
-- ========================================
|
||||
|
||||
-- 检查是否需要添加环境标识字段
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN '需要添加environment字段'
|
||||
ELSE '环境字段已存在'
|
||||
END as environment_field_status
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'sys_payment'
|
||||
AND COLUMN_NAME = 'environment';
|
||||
|
||||
-- 添加环境标识字段(如果不存在)
|
||||
SET @sql = (SELECT IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'sys_payment'
|
||||
AND COLUMN_NAME = 'environment') = 0,
|
||||
'ALTER TABLE sys_payment ADD COLUMN environment VARCHAR(20) DEFAULT "prod" COMMENT "环境标识(dev/test/prod)" AFTER tenant_id;',
|
||||
'SELECT "environment column already exists" as result;'
|
||||
));
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ========================================
|
||||
-- 3. 为现有支付配置添加环境标识
|
||||
-- ========================================
|
||||
|
||||
-- 将现有配置标记为生产环境
|
||||
UPDATE sys_payment
|
||||
SET environment = 'prod'
|
||||
WHERE environment IS NULL OR environment = '';
|
||||
|
||||
-- ========================================
|
||||
-- 4. 创建开发环境配置的安全方式
|
||||
-- ========================================
|
||||
|
||||
-- 方式1:复制现有生产配置作为开发模板(推荐)
|
||||
-- 注意:这里使用您现有的租户ID,不创建新租户
|
||||
|
||||
-- 获取当前生产环境的微信支付配置
|
||||
SELECT
|
||||
'当前微信支付配置' as config_type,
|
||||
id,
|
||||
name,
|
||||
app_id,
|
||||
mch_id,
|
||||
notify_url,
|
||||
tenant_id,
|
||||
environment
|
||||
FROM sys_payment
|
||||
WHERE type = 0 AND status = 1 AND deleted = 0
|
||||
ORDER BY id DESC LIMIT 1;
|
||||
|
||||
-- 获取当前生产环境的支付宝配置
|
||||
SELECT
|
||||
'当前支付宝配置' as config_type,
|
||||
id,
|
||||
name,
|
||||
app_id,
|
||||
mch_id,
|
||||
notify_url,
|
||||
tenant_id,
|
||||
environment
|
||||
FROM sys_payment
|
||||
WHERE type = 1 AND status = 1 AND deleted = 0
|
||||
ORDER BY id DESC LIMIT 1;
|
||||
|
||||
-- ========================================
|
||||
-- 5. 手动创建开发配置的SQL模板
|
||||
-- ========================================
|
||||
|
||||
-- 以下SQL需要您手动修改参数后执行
|
||||
-- 请根据上面查询的结果,修改相应的参数
|
||||
|
||||
/*
|
||||
-- 微信支付开发配置模板(请修改参数后执行)
|
||||
INSERT INTO sys_payment (
|
||||
name, type, code, image, wechat_type,
|
||||
app_id, mch_id, api_key, apiclient_cert, apiclient_key,
|
||||
pub_key, pub_key_id, merchant_serial_number, notify_url,
|
||||
comments, sort_number, status, deleted, tenant_id, environment,
|
||||
create_time, update_time
|
||||
) VALUES (
|
||||
'微信支付-开发环境',
|
||||
0, -- 微信支付
|
||||
'wechat_dev',
|
||||
'/static/images/wechat_pay.png',
|
||||
1, -- 普通商户
|
||||
'YOUR_DEV_APP_ID', -- 请替换为您的开发环境AppID
|
||||
'YOUR_DEV_MCH_ID', -- 请替换为您的开发环境商户号
|
||||
'YOUR_DEV_API_KEY', -- 请替换为您的开发环境API密钥
|
||||
'dev/wechat/apiclient_cert.pem',
|
||||
'dev/wechat/apiclient_key.pem',
|
||||
'dev/wechat/wechatpay_cert.pem',
|
||||
'YOUR_DEV_PUB_KEY_ID',
|
||||
'YOUR_DEV_MERCHANT_SERIAL',
|
||||
'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify', -- 开发环境回调
|
||||
'开发环境专用配置',
|
||||
1,
|
||||
1, -- 启用
|
||||
0, -- 未删除
|
||||
YOUR_TENANT_ID, -- 请替换为您的租户ID
|
||||
'dev', -- 开发环境标识
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
*/
|
||||
|
||||
-- ========================================
|
||||
-- 6. 更安全的方案:仅更新现有配置的回调地址
|
||||
-- ========================================
|
||||
|
||||
-- 查看当前回调地址
|
||||
SELECT
|
||||
'当前回调地址检查' as check_type,
|
||||
id,
|
||||
name,
|
||||
type,
|
||||
notify_url,
|
||||
tenant_id,
|
||||
environment
|
||||
FROM sys_payment
|
||||
WHERE status = 1 AND deleted = 0;
|
||||
|
||||
-- 如果您只是想临时修改回调地址进行调试,可以使用以下SQL:
|
||||
-- 注意:请先备份原始配置!
|
||||
|
||||
/*
|
||||
-- 备份当前配置
|
||||
CREATE TABLE IF NOT EXISTS sys_payment_backup AS
|
||||
SELECT *, NOW() as backup_time FROM sys_payment WHERE status = 1;
|
||||
|
||||
-- 临时修改回调地址(请谨慎使用)
|
||||
UPDATE sys_payment
|
||||
SET notify_url = 'http://frps-10550.s209.websoft.top/api/shop/shop-order/notify'
|
||||
WHERE type = 0 AND tenant_id = YOUR_TENANT_ID AND status = 1;
|
||||
|
||||
-- 恢复原始配置的SQL(调试完成后执行)
|
||||
UPDATE sys_payment
|
||||
SET notify_url = 'https://cms-api.websoft.top/api/shop/shop-order/notify'
|
||||
WHERE type = 0 AND tenant_id = YOUR_TENANT_ID AND status = 1;
|
||||
*/
|
||||
|
||||
-- ========================================
|
||||
-- 7. 验证配置
|
||||
-- ========================================
|
||||
|
||||
-- 检查所有支付配置
|
||||
SELECT
|
||||
'最终配置检查' as check_type,
|
||||
id,
|
||||
name,
|
||||
type,
|
||||
notify_url,
|
||||
tenant_id,
|
||||
environment,
|
||||
status
|
||||
FROM sys_payment
|
||||
WHERE deleted = 0
|
||||
ORDER BY tenant_id, type;
|
||||
|
||||
SELECT '生产环境安全配置完成!请根据注释中的模板手动创建开发配置。' as result;
|
||||
17
src/main/resources/sql/simple_fix_coupon_table.sql
Normal file
17
src/main/resources/sql/simple_fix_coupon_table.sql
Normal file
@@ -0,0 +1,17 @@
|
||||
-- 简单修复优惠券适用商品表字段缺失问题
|
||||
-- 执行前请备份数据库
|
||||
|
||||
-- 1. 添加缺失的字段
|
||||
ALTER TABLE shop_coupon_apply_item
|
||||
ADD COLUMN IF NOT EXISTS goods_id INT(11) NULL COMMENT '商品ID' AFTER coupon_id;
|
||||
|
||||
ALTER TABLE shop_coupon_apply_item
|
||||
ADD COLUMN IF NOT EXISTS category_id INT(11) NULL COMMENT '分类ID' AFTER goods_id;
|
||||
|
||||
-- 2. 添加索引
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_goods ON shop_coupon_apply_item(coupon_id, goods_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_category ON shop_coupon_apply_item(coupon_id, category_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_coupon_apply_item_type ON shop_coupon_apply_item(coupon_id, type);
|
||||
|
||||
-- 3. 检查表结构
|
||||
DESCRIBE shop_coupon_apply_item;
|
||||
Reference in New Issue
Block a user