feat: add coupon support to orders and create user_coupons model
- Added CouponID field to Order model to track used coupons. - Updated order query generation to include CouponID. - Introduced UserCoupon model to manage user coupon associations. - Implemented query methods for UserCoupon to facilitate CRUD operations. - Updated query context and default query setup to include UserCoupon.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
CREATE TABLE "coupons" (
|
||||
"id" BIGSERIAL PRIMARY KEY,
|
||||
"tenant_id" BIGINT NOT NULL DEFAULT 0, -- 租户ID
|
||||
"title" VARCHAR(255) NOT NULL, -- 优惠券标题
|
||||
"description" TEXT, -- 优惠券描述
|
||||
"type" VARCHAR(32) NOT NULL, -- 优惠券类型: fix_amount(固定金额), discount(折扣比率)
|
||||
"value" BIGINT NOT NULL, -- 优惠券面值 (固定金额为分,折扣比率为0-100)
|
||||
"min_order_amount" BIGINT NOT NULL DEFAULT 0, -- 最低订单金额门槛 (分)
|
||||
"max_discount" BIGINT, -- 最高抵扣金额 (分,针对折扣券)
|
||||
"total_quantity" INTEGER NOT NULL DEFAULT 0, -- 发行总量
|
||||
"used_quantity" INTEGER NOT NULL DEFAULT 0, -- 已使用数量
|
||||
"start_at" TIMESTAMPTZ, -- 开始生效时间
|
||||
"end_at" TIMESTAMPTZ, -- 过期失效时间
|
||||
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
"updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX "idx_coupons_tenant_id" ON "coupons" ("tenant_id");
|
||||
|
||||
CREATE TABLE "user_coupons" (
|
||||
"id" BIGSERIAL PRIMARY KEY,
|
||||
"user_id" BIGINT NOT NULL, -- 用户ID
|
||||
"coupon_id" BIGINT NOT NULL, -- 优惠券ID
|
||||
"order_id" BIGINT, -- 使用该优惠券的订单ID
|
||||
"status" VARCHAR(32) NOT NULL DEFAULT 'unused', -- 状态: unused(未使用), used(已使用), expired(已过期)
|
||||
"used_at" TIMESTAMPTZ, -- 使用时间
|
||||
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX "idx_user_coupons_user_id" ON "user_coupons" ("user_id");
|
||||
CREATE INDEX "idx_user_coupons_coupon_id" ON "user_coupons" ("coupon_id");
|
||||
|
||||
-- Add CouponID to Orders table
|
||||
ALTER TABLE "orders" ADD COLUMN "coupon_id" BIGINT DEFAULT 0; -- 关联优惠券ID (0表示未使用)
|
||||
COMMENT ON COLUMN "orders"."coupon_id" IS '使用的优惠券ID (0表示未使用)';
|
||||
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
ALTER TABLE "orders" DROP COLUMN IF EXISTS "coupon_id";
|
||||
DROP TABLE IF EXISTS "user_coupons";
|
||||
DROP TABLE IF EXISTS "coupons";
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user