92 lines
6.8 KiB
SQL
92 lines
6.8 KiB
SQL
-- ============================================================
|
||
-- 企油通对接改造 · 数据库迁移
|
||
-- 生成: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`;
|
||
-- ============================================================
|