-- ============================================================ -- 企油通对接改造 · 数据库迁移 -- 生成: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 `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 `qyt_order_code` varchar(64) NOT NULL DEFAULT '' COMMENT '企油通消费订单号(7.10回填)' AFTER `waybill_no_code`, 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`; -- ============================================================