feat: 基本实现拆单收货
This commit is contained in:
@@ -17,7 +17,6 @@ model User {
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
carts CartItem[]
|
||||
orders Order[]
|
||||
}
|
||||
|
||||
model SupplierProduct {
|
||||
@@ -44,7 +43,6 @@ model SupplierProduct {
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
carts CartItem[]
|
||||
orderItems OrderItem[]
|
||||
|
||||
@@map("supplier_product")
|
||||
}
|
||||
@@ -56,6 +54,8 @@ model SupplierInfo {
|
||||
supplierName String
|
||||
clientId String
|
||||
clientSecret String
|
||||
supplierApiUrl String?
|
||||
sroNo String?
|
||||
createTime DateTime @default(now())
|
||||
updateTime DateTime @updatedAt
|
||||
creator String?
|
||||
@@ -81,35 +81,6 @@ model CartItem {
|
||||
@@unique([userId, productId, skuText])
|
||||
}
|
||||
|
||||
model Order {
|
||||
id Int @id @default(autoincrement())
|
||||
orderNo String @unique
|
||||
userId Int
|
||||
status OrderStatus @default(PENDING_PAYMENT)
|
||||
totalAmount Decimal @db.Decimal(10, 2)
|
||||
payType PayType?
|
||||
paidAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
items OrderItem[]
|
||||
}
|
||||
|
||||
model OrderItem {
|
||||
id Int @id @default(autoincrement())
|
||||
orderId Int
|
||||
productId Int
|
||||
name String
|
||||
imageUrl String?
|
||||
skuText String?
|
||||
price Decimal @db.Decimal(10, 2)
|
||||
quantity Int
|
||||
|
||||
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
|
||||
product SupplierProduct @relation(fields: [productId], references: [id])
|
||||
}
|
||||
|
||||
model SupplierOrderMain {
|
||||
id Int @id @default(autoincrement())
|
||||
orderId String @unique
|
||||
@@ -130,6 +101,8 @@ model SupplierOrderMain {
|
||||
logisticsOrderId String?
|
||||
crrgBsnNm String?
|
||||
orderState Int @default(0)
|
||||
isSplit Int @default(0)
|
||||
splitTime DateTime?
|
||||
totalPrice Decimal @default(0) @db.Decimal(10, 2)
|
||||
wPayOrAPay Decimal @default(0) @db.Decimal(10, 2)
|
||||
pointsPrice Decimal @default(0) @db.Decimal(10, 2)
|
||||
@@ -202,16 +175,121 @@ model SupplierOrderProduct {
|
||||
@@map("supplier_order_product")
|
||||
}
|
||||
|
||||
enum OrderStatus {
|
||||
PENDING_PAYMENT
|
||||
PAID
|
||||
SHIPPED
|
||||
COMPLETED
|
||||
CANCELLED
|
||||
model SupplierPointsLedger {
|
||||
id Int @id @default(autoincrement())
|
||||
ledgerNo String @unique
|
||||
supplierId String
|
||||
userId String
|
||||
mainOrderId String?
|
||||
subOrderId String?
|
||||
bizType Int
|
||||
direction Int
|
||||
points Decimal @db.Decimal(10, 2)
|
||||
beforePoints Decimal? @db.Decimal(10, 2)
|
||||
afterPoints Decimal? @db.Decimal(10, 2)
|
||||
remark String? @db.Text
|
||||
createTime DateTime @default(now())
|
||||
updateTime DateTime @updatedAt
|
||||
deleted Int @default(0)
|
||||
|
||||
@@index([supplierId, userId])
|
||||
@@index([mainOrderId])
|
||||
@@index([subOrderId])
|
||||
@@map("supplier_points_ledger")
|
||||
}
|
||||
|
||||
enum PayType {
|
||||
POINTS
|
||||
WECHAT
|
||||
ALIPAY
|
||||
model SupplierOrderPushLog {
|
||||
id Int @id @default(autoincrement())
|
||||
supplierId String
|
||||
userId String?
|
||||
mainOrderId String?
|
||||
orderId String? @db.VarChar(1000)
|
||||
orderType Int?
|
||||
apiPath String
|
||||
requestBody Json?
|
||||
responseBody Json?
|
||||
httpStatus Int?
|
||||
resultCode Int?
|
||||
pushStatus Int @default(0)
|
||||
retryCount Int @default(0)
|
||||
errorMessage String? @db.Text
|
||||
lastPushTime DateTime?
|
||||
nextRetryTime DateTime?
|
||||
createTime DateTime @default(now())
|
||||
updateTime DateTime @updatedAt
|
||||
deleted Int @default(0)
|
||||
|
||||
@@index([supplierId, mainOrderId])
|
||||
@@index([orderType, pushStatus])
|
||||
@@index([nextRetryTime])
|
||||
@@map("supplier_order_push_log")
|
||||
}
|
||||
|
||||
model SupplierOrderOperateLog {
|
||||
id Int @id @default(autoincrement())
|
||||
supplierId String
|
||||
userId String?
|
||||
mainOrderId String?
|
||||
subOrderId String?
|
||||
operateType Int
|
||||
beforeState Int?
|
||||
afterState Int?
|
||||
beforeSplit Int?
|
||||
afterSplit Int?
|
||||
remark String? @db.Text
|
||||
operator String?
|
||||
createTime DateTime @default(now())
|
||||
deleted Int @default(0)
|
||||
|
||||
@@index([supplierId, mainOrderId])
|
||||
@@index([subOrderId])
|
||||
@@index([operateType])
|
||||
@@map("supplier_order_operate_log")
|
||||
}
|
||||
|
||||
model SupplierRefundExchange {
|
||||
id Int @id @default(autoincrement())
|
||||
serviceOrderId String @unique
|
||||
supplierId String
|
||||
userId String?
|
||||
mainOrderId String?
|
||||
subOrderId String?
|
||||
serviceType Int
|
||||
serviceState Int @default(0)
|
||||
amount Decimal @default(0) @db.Decimal(10, 2)
|
||||
reason String? @db.Text
|
||||
requestBody Json?
|
||||
createTime DateTime @default(now())
|
||||
updateTime DateTime @updatedAt
|
||||
deleted Int @default(0)
|
||||
|
||||
@@index([supplierId, mainOrderId])
|
||||
@@index([subOrderId])
|
||||
@@index([serviceType, serviceState])
|
||||
@@map("supplier_refund_exchange")
|
||||
}
|
||||
|
||||
model SupplierInvoiceInfo {
|
||||
id Int @id @default(autoincrement())
|
||||
invoiceBizId String @unique
|
||||
supplierId String
|
||||
userId String?
|
||||
mainOrderId String?
|
||||
subOrderId String?
|
||||
settlementId String?
|
||||
invoiceCode String?
|
||||
invoiceIds String? @db.VarChar(1000)
|
||||
orderIds String? @db.VarChar(1000)
|
||||
invoiceStatus Int @default(0)
|
||||
fileId String?
|
||||
filePath String?
|
||||
requestBody Json?
|
||||
createTime DateTime @default(now())
|
||||
updateTime DateTime @updatedAt
|
||||
deleted Int @default(0)
|
||||
|
||||
@@index([supplierId, mainOrderId])
|
||||
@@index([settlementId])
|
||||
@@index([invoiceCode])
|
||||
@@map("supplier_invoice_info")
|
||||
}
|
||||
|
||||
@@ -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`;
|
||||
Reference in New Issue
Block a user