Files
oil/server-tp6/qyt_migration.sql
2026-09-10 20:56:46 +08:00

92 lines
6.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 企油通对接改造 · 数据库迁移
-- 生成:2026-09-01 修订:2026-09-03(收敛为支付宝企业码通道 + 3 接口,去掉轮询/撤销相关字段)
-- 说明:全部为增量加字段 / 新建表 / 加索引,不改现有字段类型,可安全回滚。
-- 表前缀默认 yoshop_,如实例前缀不同请自行替换。
-- 依赖决策:见《企油通对接现状分析报告.md》§0.5 及后续决策
-- ============================================================
-- ------------------------------------------------------------
-- 1. yoshop_partners_order 增加企油通相关字段(直接加主表)
-- 发放态复用 oil_status_zsy:0未提交 / 2发放成功 / 3发放失败
-- (支付宝企业码通道下 7.7 受理成功即完成发放,无轮询、无撤销)
-- ------------------------------------------------------------
ALTER TABLE `yoshop_partners_order`
ADD COLUMN `driver_name` varchar(50) NOT NULL DEFAULT '' COMMENT '司机姓名(下单平台必传)' AFTER `mobile`,
ADD COLUMN `id_card` varchar(32) NOT NULL DEFAULT '' COMMENT '司机身份证号(平安银行通道必传)' AFTER `driver_name`,
ADD COLUMN `batch_no` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通发放批次号(7.7,含企业前缀)' AFTER `shareNo`,
ADD COLUMN `waybill_no` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通运单号(7.7)' AFTER `batch_no`,
ADD COLUMN `waybill_no_code` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通运单唯一流水(7.10回调匹配用)' AFTER `waybill_no`,
ADD COLUMN `passageway` varchar(20) NOT NULL DEFAULT '' COMMENT '企油通支付通道 alipay=支付宝企业码 pingan=平安银行' AFTER `waybill_no_code`,
ADD COLUMN `qyt_order_code` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通消费订单号(7.10回填)' AFTER `passageway`,
ADD COLUMN `station_name` varchar(100) NOT NULL DEFAULT '' COMMENT '加油站名称(7.10)' AFTER `oil_text`,
ADD COLUMN `oil_name` varchar(50) NOT NULL DEFAULT '' COMMENT '油品名称(7.10)' AFTER `station_name`,
ADD COLUMN `litter` varchar(20) NOT NULL DEFAULT '' COMMENT '加油量/升(7.10)' AFTER `oil_name`,
ADD COLUMN `pay_fee` int(11) NOT NULL DEFAULT 0 COMMENT '实付金额/分(7.10)' AFTER `litter`,
ADD COLUMN `consume_time` int(11) NOT NULL DEFAULT 0 COMMENT '消费时间(7.10)' AFTER `pay_fee`,
ADD INDEX `idx_batch_no` (`batch_no`),
ADD INDEX `idx_waybill_no_code` (`waybill_no_code`);
-- 1.1【并发/幂等】下单平台订单号在同一合作商下唯一:
-- 关闭 OilCard::share 的「先查后插」竞态;重复 saleOrderNo 由唯一键兜底。
-- ⚠️ 若历史数据存在 (partners_id, partners_order_no) 重复,请先清理再执行本句。
-- 检查:SELECT partners_id,partners_order_no,COUNT(*) c FROM yoshop_partners_order
-- GROUP BY partners_id,partners_order_no HAVING c>1;
ALTER TABLE `yoshop_partners_order`
ADD UNIQUE KEY `uk_partner_saleorder` (`partners_id`, `partners_order_no`);
-- ------------------------------------------------------------
-- 2. 新建企油通加油消费流水表(7.10 每笔消费落库)
-- uk_consume 防止同一消费回调重复落库(企油通可能重推 7.10)
-- ------------------------------------------------------------
CREATE TABLE `yoshop_qyt_consume` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`order_id` int(11) NOT NULL DEFAULT 0 COMMENT 'yoshop_partners_order.order_id',
`waybill_no` varchar(64) NOT NULL DEFAULT '' COMMENT '运单号',
`waybill_no_code` varchar(64) NOT NULL DEFAULT '' COMMENT '运单唯一流水',
`order_code` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通消费订单号',
`station_code` varchar(50) NOT NULL DEFAULT '' COMMENT '加油站编号',
`station_name` varchar(100) NOT NULL DEFAULT '' COMMENT '加油站名称',
`oil_name` varchar(50) NOT NULL DEFAULT '' COMMENT '油品名称',
`litter` varchar(20) NOT NULL DEFAULT '' COMMENT '加油量(升)',
`oil_price` int(11) NOT NULL DEFAULT 0 COMMENT '油价原价(分)',
`actual_oil_price` int(11) NOT NULL DEFAULT 0 COMMENT '油价实际价(分)',
`pay_fee` int(11) NOT NULL DEFAULT 0 COMMENT '实付(分)',
`consume_amount` int(11) NOT NULL DEFAULT 0 COMMENT '占用额度(分)',
`pay_time` int(11) NOT NULL DEFAULT 0 COMMENT '支付时间',
`raw` text COMMENT '回调原始报文',
`store_id` int(11) NOT NULL DEFAULT 0 COMMENT '商城ID',
`create_time` int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_consume` (`waybill_no_code`, `order_code`),
KEY `idx_order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='企油通加油消费流水';
-- ------------------------------------------------------------
-- 3. 说明性变更(不强制)
-- yoshop_company / yoshop_account:单企业 + 取消用户池后不再写入,保留历史数据不删表。
-- ------------------------------------------------------------
ALTER TABLE `yoshop_company` COMMENT='客户公司管理(企油通改造后停用,仅历史数据)';
ALTER TABLE `yoshop_account` COMMENT='分油用户池(企油通改造后停用,仅历史数据)';
-- ------------------------------------------------------------
-- 4. 合作商「可售商品 + 库存」已下线
-- 企油通改造后下单按金额(amount)直传,额度管控改由 yoshop_partners.balance 承担,
-- yoshop_partners_goods / yoshop_partners_stock_log 已无任何代码引用。
-- ⚠️ 两表仍保有历史数据,是否物理删除由你决定;确认不再需要后再执行下面两句。
-- ------------------------------------------------------------
ALTER TABLE `yoshop_partners_goods` COMMENT='合作商对接商品(已下线,仅历史数据)';
ALTER TABLE `yoshop_partners_stock_log` COMMENT='合作商商品库存变动(已下线,仅历史数据)';
-- DROP TABLE `yoshop_partners_goods`;
-- DROP TABLE `yoshop_partners_stock_log`;
-- ============================================================
-- 回滚脚本(如需):
-- ALTER TABLE `yoshop_partners_order`
-- DROP COLUMN `driver_name`, DROP COLUMN `batch_no`, DROP COLUMN `waybill_no`,
-- DROP COLUMN `waybill_no_code`, DROP COLUMN `qyt_order_code`, DROP COLUMN `station_name`,
-- DROP COLUMN `oil_name`, DROP COLUMN `litter`, DROP COLUMN `pay_fee`, DROP COLUMN `consume_time`,
-- DROP INDEX `idx_batch_no`, DROP INDEX `idx_waybill_no_code`, DROP INDEX `uk_partner_saleorder`;
-- DROP TABLE `yoshop_qyt_consume`;
-- ============================================================