feat: 基本实现拆单收货

This commit is contained in:
2026-07-29 15:53:23 +08:00
parent c443109869
commit 1b45f9dac6
92 changed files with 3223 additions and 22968 deletions
@@ -0,0 +1,69 @@
CREATE TABLE IF NOT EXISTS `supplier_points_ledger` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '积分流水主键ID',
`ledgerNo` VARCHAR(191) NOT NULL COMMENT '流水号,业务唯一',
`supplierId` VARCHAR(191) NOT NULL COMMENT '供应商ID',
`userId` VARCHAR(191) NOT NULL COMMENT '用户ID',
`mainOrderId` VARCHAR(191) NULL COMMENT '关联主单ID',
`subOrderId` VARCHAR(191) NULL COMMENT '关联子单ID',
`bizType` INT NOT NULL COMMENT '业务类型:1支付消费,2取消返还,3退货退款,4人工调整',
`direction` INT NOT NULL COMMENT '流水方向:1增加,2扣减',
`points` DECIMAL(10, 2) NOT NULL COMMENT '积分变动金额',
`beforePoints` DECIMAL(10, 2) NULL COMMENT '变动前积分余额',
`afterPoints` DECIMAL(10, 2) NULL COMMENT '变动后积分余额',
`remark` TEXT NULL COMMENT '流水备注',
`createTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updateTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
`deleted` INT NOT NULL DEFAULT 0 COMMENT '删除状态:0未删除,1已删除',
PRIMARY KEY (`id`),
UNIQUE KEY `supplier_points_ledger_ledgerNo_key` (`ledgerNo`),
KEY `supplier_points_ledger_supplierId_userId_idx` (`supplierId`, `userId`),
KEY `supplier_points_ledger_mainOrderId_idx` (`mainOrderId`),
KEY `supplier_points_ledger_subOrderId_idx` (`subOrderId`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='供应商用户积分消费流水表';
CREATE TABLE IF NOT EXISTS `supplier_order_push_log` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '订单推送日志主键ID',
`supplierId` VARCHAR(191) NOT NULL COMMENT '供应商ID',
`userId` VARCHAR(191) NULL COMMENT '用户ID',
`mainOrderId` VARCHAR(191) NULL COMMENT '主单ID',
`orderId` VARCHAR(1000) NULL COMMENT '推送订单ID,多个子单用英文逗号分隔',
`orderType` INT NULL COMMENT '推送事件类型:1取消主单,2拆单子单,3取消子单,7取消已支付未拆单整单',
`apiPath` VARCHAR(191) NOT NULL COMMENT '推送接口路径',
`requestBody` JSON NULL COMMENT '推送请求体',
`responseBody` JSON NULL COMMENT '推送响应体',
`httpStatus` INT NULL COMMENT 'HTTP状态码',
`resultCode` INT NULL COMMENT '远程业务返回码',
`pushStatus` INT NOT NULL DEFAULT 0 COMMENT '推送状态:0待推送,1推送成功,2推送失败',
`retryCount` INT NOT NULL DEFAULT 0 COMMENT '重试次数',
`errorMessage` TEXT NULL COMMENT '失败原因',
`lastPushTime` DATETIME(3) NULL COMMENT '最后推送时间',
`nextRetryTime` DATETIME(3) NULL COMMENT '下次重试时间',
`createTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updateTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
`deleted` INT NOT NULL DEFAULT 0 COMMENT '删除状态:0未删除,1已删除',
PRIMARY KEY (`id`),
KEY `supplier_order_push_log_supplierId_mainOrderId_idx` (`supplierId`, `mainOrderId`),
KEY `supplier_order_push_log_orderType_pushStatus_idx` (`orderType`, `pushStatus`),
KEY `supplier_order_push_log_nextRetryTime_idx` (`nextRetryTime`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='供应商订单远程推送日志表';
CREATE TABLE IF NOT EXISTS `supplier_order_operate_log` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '订单操作日志主键ID',
`supplierId` VARCHAR(191) NOT NULL COMMENT '供应商ID',
`userId` VARCHAR(191) NULL COMMENT '用户ID',
`mainOrderId` VARCHAR(191) NULL COMMENT '主单ID',
`subOrderId` VARCHAR(191) NULL COMMENT '子单ID',
`operateType` INT NOT NULL COMMENT '操作类型:1创建待支付,2支付成功,3拆单,4取消主单,5取消子单,6取消已支付未拆单整单,7已妥投,8已完成,9退款,10换货',
`beforeState` INT NULL COMMENT '操作前订单状态',
`afterState` INT NULL COMMENT '操作后订单状态',
`beforeSplit` INT NULL COMMENT '操作前拆单状态:0未拆单,1已拆单',
`afterSplit` INT NULL COMMENT '操作后拆单状态:0未拆单,1已拆单',
`remark` TEXT NULL COMMENT '操作备注',
`operator` VARCHAR(191) NULL COMMENT '操作人或系统标识',
`createTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`deleted` INT NOT NULL DEFAULT 0 COMMENT '删除状态:0未删除,1已删除',
PRIMARY KEY (`id`),
KEY `supplier_order_operate_log_supplierId_mainOrderId_idx` (`supplierId`, `mainOrderId`),
KEY `supplier_order_operate_log_subOrderId_idx` (`subOrderId`),
KEY `supplier_order_operate_log_operateType_idx` (`operateType`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='供应商订单操作日志表';
@@ -0,0 +1,56 @@
SET @fk_order_item_order = (
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'orderitem'
AND REFERENCED_TABLE_NAME = 'order'
LIMIT 1
);
SET @sql = IF(
@fk_order_item_order IS NULL,
'SELECT 1',
CONCAT('ALTER TABLE `orderitem` DROP FOREIGN KEY `', @fk_order_item_order, '`')
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @fk_order_item_product = (
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'orderitem'
AND REFERENCED_TABLE_NAME = 'supplier_product'
LIMIT 1
);
SET @sql = IF(
@fk_order_item_product IS NULL,
'SELECT 1',
CONCAT('ALTER TABLE `orderitem` DROP FOREIGN KEY `', @fk_order_item_product, '`')
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @fk_order_user = (
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'order'
AND REFERENCED_TABLE_NAME = 'User'
LIMIT 1
);
SET @sql = IF(
@fk_order_user IS NULL,
'SELECT 1',
CONCAT('ALTER TABLE `order` DROP FOREIGN KEY `', @fk_order_user, '`')
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE IF EXISTS `orderitem`;
DROP TABLE IF EXISTS `order`;
@@ -0,0 +1,7 @@
ALTER TABLE `supplier_order_main`
MODIFY COLUMN `orderState` INT NOT NULL DEFAULT 0 COMMENT '订单状态:0待付款,1已支付,2进行中,3已取消,4已妥投,5已完成,6换货,7退货,8废除',
ADD COLUMN `isSplit` TINYINT NOT NULL DEFAULT 0 COMMENT '主单是否拆单:0未拆单,1已拆单' AFTER `orderState`,
ADD COLUMN `splitTime` DATETIME(3) NULL COMMENT '主单拆单时间' AFTER `isSplit`;
ALTER TABLE `supplier_order_sub`
MODIFY COLUMN `orderState` INT NOT NULL DEFAULT 0 COMMENT '订单状态:0待付款,1已支付,2进行中,3已取消,4已妥投,5已完成,6换货,7退货,8废除';
@@ -0,0 +1,46 @@
CREATE TABLE IF NOT EXISTS `supplier_refund_exchange` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '售后记录主键ID',
`serviceOrderId` VARCHAR(191) NOT NULL COMMENT '退货/换货业务单号',
`supplierId` VARCHAR(191) NOT NULL COMMENT '供应商ID',
`userId` VARCHAR(191) NULL COMMENT '用户ID',
`mainOrderId` VARCHAR(191) NULL COMMENT '关联主单ID',
`subOrderId` VARCHAR(191) NULL COMMENT '关联子单ID',
`serviceType` INT NOT NULL COMMENT '售后类型:4退货,5换货',
`serviceState` INT NOT NULL DEFAULT 0 COMMENT '售后状态:0已创建,1处理中,2已完成,3已取消',
`amount` DECIMAL(10, 2) NOT NULL DEFAULT 0 COMMENT '售后金额',
`reason` TEXT NULL COMMENT '售后原因',
`requestBody` JSON NULL COMMENT '原始业务请求体',
`createTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updateTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
`deleted` INT NOT NULL DEFAULT 0 COMMENT '删除状态:0未删除,1已删除',
PRIMARY KEY (`id`),
UNIQUE KEY `supplier_refund_exchange_serviceOrderId_key` (`serviceOrderId`),
KEY `supplier_refund_exchange_supplierId_mainOrderId_idx` (`supplierId`, `mainOrderId`),
KEY `supplier_refund_exchange_subOrderId_idx` (`subOrderId`),
KEY `supplier_refund_exchange_serviceType_serviceState_idx` (`serviceType`, `serviceState`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='供应商退货换货售后记录表';
CREATE TABLE IF NOT EXISTS `supplier_invoice_info` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '发票信息主键ID',
`invoiceBizId` VARCHAR(191) NOT NULL COMMENT '发票业务唯一ID,优先使用发票号或事件订单号',
`supplierId` VARCHAR(191) NOT NULL COMMENT '供应商ID',
`userId` VARCHAR(191) NULL COMMENT '用户ID',
`mainOrderId` VARCHAR(191) NULL COMMENT '关联主单ID',
`subOrderId` VARCHAR(191) NULL COMMENT '关联子单ID',
`settlementId` VARCHAR(191) NULL COMMENT '结算单号',
`invoiceCode` VARCHAR(191) NULL COMMENT '发票代码或纳税识别号',
`invoiceIds` VARCHAR(1000) NULL COMMENT '发票号码列表,多个用英文逗号分隔',
`orderIds` VARCHAR(1000) NULL COMMENT '关联订单号列表,多个用英文逗号分隔',
`invoiceStatus` INT NOT NULL DEFAULT 0 COMMENT '发票状态:0已记录,1已申请,2已开票,3失败',
`fileId` VARCHAR(191) NULL COMMENT '发票文件ID',
`filePath` VARCHAR(191) NULL COMMENT '发票文件路径',
`requestBody` JSON NULL COMMENT '原始业务请求体',
`createTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updateTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
`deleted` INT NOT NULL DEFAULT 0 COMMENT '删除状态:0未删除,1已删除',
PRIMARY KEY (`id`),
UNIQUE KEY `supplier_invoice_info_invoiceBizId_key` (`invoiceBizId`),
KEY `supplier_invoice_info_supplierId_mainOrderId_idx` (`supplierId`, `mainOrderId`),
KEY `supplier_invoice_info_settlementId_idx` (`settlementId`),
KEY `supplier_invoice_info_invoiceCode_idx` (`invoiceCode`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='供应商发票信息表';
@@ -0,0 +1,3 @@
ALTER TABLE `supplier_info`
ADD COLUMN `supplierApiUrl` VARCHAR(1000) NULL COMMENT '供应商开放接口地址' AFTER `clientSecret`,
ADD COLUMN `sroNo` VARCHAR(100) NULL COMMENT 'BAB7服务商编号' AFTER `supplierApiUrl`;