feat: 实现订单支付功能模块
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m36s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m36s
- 新增订单管理、支付回调、购买验证等核心服务 - 实现订单、订单项目的数据存储层和 API 接口 - 添加订单数据库迁移和 DTO 定义 - 更新 API 文档和路由配置 - 同步 3 个新规范到主规范库(订单管理、订单支付、套餐购买验证) - 完成 OpenSpec 变更归档 Ultraworked with Sisyphus
This commit is contained in:
5
migrations/000028_create_order_tables.down.sql
Normal file
5
migrations/000028_create_order_tables.down.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- 删除订单明细表
|
||||
DROP TABLE IF EXISTS tb_order_item;
|
||||
|
||||
-- 删除订单表
|
||||
DROP TABLE IF EXISTS tb_order;
|
||||
90
migrations/000028_create_order_tables.up.sql
Normal file
90
migrations/000028_create_order_tables.up.sql
Normal file
@@ -0,0 +1,90 @@
|
||||
-- 删除旧的订单表(如果存在)
|
||||
DROP TABLE IF EXISTS tb_order CASCADE;
|
||||
|
||||
-- 创建订单表
|
||||
CREATE TABLE tb_order (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ,
|
||||
creator BIGINT NOT NULL DEFAULT 0,
|
||||
updater BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
-- 订单基础信息
|
||||
order_no VARCHAR(30) NOT NULL,
|
||||
order_type VARCHAR(20) NOT NULL,
|
||||
|
||||
-- 买家信息
|
||||
buyer_type VARCHAR(20) NOT NULL,
|
||||
buyer_id BIGINT NOT NULL,
|
||||
|
||||
-- 关联资源
|
||||
iot_card_id BIGINT,
|
||||
device_id BIGINT,
|
||||
|
||||
-- 金额信息
|
||||
total_amount BIGINT NOT NULL,
|
||||
|
||||
-- 支付信息
|
||||
payment_method VARCHAR(20),
|
||||
payment_status INT NOT NULL DEFAULT 1,
|
||||
paid_at TIMESTAMPTZ,
|
||||
|
||||
-- 佣金信息
|
||||
commission_status INT NOT NULL DEFAULT 1,
|
||||
commission_config_version INT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
-- 添加表注释
|
||||
COMMENT ON TABLE tb_order IS '订单表';
|
||||
COMMENT ON COLUMN tb_order.order_no IS '订单号(ORD+时间戳+6位随机数)';
|
||||
COMMENT ON COLUMN tb_order.order_type IS '订单类型 single_card-单卡购买 device-设备购买';
|
||||
COMMENT ON COLUMN tb_order.buyer_type IS '买家类型 personal-个人客户 agent-代理商';
|
||||
COMMENT ON COLUMN tb_order.buyer_id IS '买家ID(个人客户ID或店铺ID)';
|
||||
COMMENT ON COLUMN tb_order.iot_card_id IS 'IoT卡ID(单卡购买时有值)';
|
||||
COMMENT ON COLUMN tb_order.device_id IS '设备ID(设备购买时有值)';
|
||||
COMMENT ON COLUMN tb_order.total_amount IS '订单总金额(分)';
|
||||
COMMENT ON COLUMN tb_order.payment_method IS '支付方式 wallet-钱包 wechat-微信 alipay-支付宝';
|
||||
COMMENT ON COLUMN tb_order.payment_status IS '支付状态 1-待支付 2-已支付 3-已取消 4-已退款';
|
||||
COMMENT ON COLUMN tb_order.paid_at IS '支付时间';
|
||||
COMMENT ON COLUMN tb_order.commission_status IS '佣金状态 1-待计算 2-已计算';
|
||||
COMMENT ON COLUMN tb_order.commission_config_version IS '佣金配置版本(订单创建时快照)';
|
||||
|
||||
-- 创建索引
|
||||
CREATE UNIQUE INDEX idx_order_no ON tb_order(order_no) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_order_buyer ON tb_order(buyer_type, buyer_id);
|
||||
CREATE INDEX idx_order_payment_status ON tb_order(payment_status);
|
||||
CREATE INDEX idx_order_iot_card_id ON tb_order(iot_card_id) WHERE iot_card_id IS NOT NULL;
|
||||
CREATE INDEX idx_order_device_id ON tb_order(device_id) WHERE device_id IS NOT NULL;
|
||||
CREATE INDEX idx_order_deleted_at ON tb_order(deleted_at);
|
||||
|
||||
-- 创建订单明细表
|
||||
CREATE TABLE tb_order_item (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ,
|
||||
creator BIGINT NOT NULL DEFAULT 0,
|
||||
updater BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
order_id BIGINT NOT NULL,
|
||||
package_id BIGINT NOT NULL,
|
||||
package_name VARCHAR(100) NOT NULL,
|
||||
quantity INT NOT NULL DEFAULT 1,
|
||||
unit_price BIGINT NOT NULL,
|
||||
amount BIGINT NOT NULL
|
||||
);
|
||||
|
||||
-- 添加表注释
|
||||
COMMENT ON TABLE tb_order_item IS '订单明细表';
|
||||
COMMENT ON COLUMN tb_order_item.order_id IS '订单ID';
|
||||
COMMENT ON COLUMN tb_order_item.package_id IS '套餐ID';
|
||||
COMMENT ON COLUMN tb_order_item.package_name IS '套餐名称(快照)';
|
||||
COMMENT ON COLUMN tb_order_item.quantity IS '数量';
|
||||
COMMENT ON COLUMN tb_order_item.unit_price IS '单价(分)';
|
||||
COMMENT ON COLUMN tb_order_item.amount IS '小计金额(分)';
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX idx_order_item_order_id ON tb_order_item(order_id);
|
||||
CREATE INDEX idx_order_item_package_id ON tb_order_item(package_id);
|
||||
CREATE INDEX idx_order_item_deleted_at ON tb_order_item(deleted_at);
|
||||
Reference in New Issue
Block a user