From 7cd1a7cbe73431b23bdbbd6d7081e27b6a69db0c Mon Sep 17 00:00:00 2001 From: Eamon <17516219072@163.com> Date: Tue, 28 Apr 2026 11:16:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=95=B4=E4=BC=98=E6=83=A0=E5=88=B8?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8F=91=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=8A=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=20=20&=20=E7=94=A8=E6=88=B7=E6=B7=BB=E5=8A=A0=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E4=BC=98=E6=83=A0=E5=88=B8=E5=8F=91=E6=94=BE=E8=AF=A6?= =?UTF-8?q?=E6=83=85=20=20&=20=E6=B7=BB=E5=8A=A0=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E7=BA=BF=E4=B8=8A=E7=8E=AF=E5=A2=83=E9=A1=B5=E9=9D=A2=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/actions/coupon.ts | 27 +- src/actions/env.ts | 10 + .../{navigation.tsx => _navigation/index.tsx} | 18 +- src/app/(root)/_navigation/logo.tsx | 28 ++ src/app/(root)/balance/page.tsx | 6 +- src/app/(root)/client/cust/page.tsx | 17 +- src/app/(root)/client/issue/page.tsx | 10 + src/app/(root)/coupon/create.tsx | 185 +++++++--- src/app/(root)/coupon/issue.tsx | 346 ++++++++++++++++++ src/app/(root)/coupon/page.tsx | 64 +++- src/app/(root)/coupon/update.tsx | 205 +++++++---- src/app/(root)/cust/page.tsx | 34 +- src/app/(root)/layout.tsx | 2 +- src/lib/scopes.ts | 3 +- src/models/coupon.ts | 8 +- 15 files changed, 765 insertions(+), 198 deletions(-) create mode 100644 src/actions/env.ts rename src/app/(root)/{navigation.tsx => _navigation/index.tsx} (93%) create mode 100644 src/app/(root)/_navigation/logo.tsx create mode 100644 src/app/(root)/client/issue/page.tsx create mode 100644 src/app/(root)/coupon/issue.tsx diff --git a/src/actions/coupon.ts b/src/actions/coupon.ts index c41f276..7198091 100644 --- a/src/actions/coupon.ts +++ b/src/actions/coupon.ts @@ -7,22 +7,28 @@ export async function getPagCoupon(params: { page: number; size: number }) { } export async function createCoupon(data: { - code: string + name: string amount: number - remark?: string - min_amount?: number + count: number + status: number + min_amount: number expire_at?: Date + expire_in?: number + expire_type: number }) { return callByUser("/api/admin/coupon/create", data) } export async function updateCoupon(data: { - code: string + id: number + name: string amount: number - remark?: string - min_amount?: number + min_amount: number + count: number + status: number + expire_type: number expire_at?: Date - status?: number + expire_in?: number }) { return callByUser("/api/admin/coupon/update", data) } @@ -32,3 +38,10 @@ export async function deleteCoupon(id: number) { id, }) } + +export async function issueCoupon(data: { + coupon_id: number + user_id: number +}) { + return callByUser("/api/admin/coupon/update/assign", data) +} diff --git a/src/actions/env.ts b/src/actions/env.ts new file mode 100644 index 0000000..5ae38de --- /dev/null +++ b/src/actions/env.ts @@ -0,0 +1,10 @@ +import { toast } from "sonner" + +const NODE_ENV = process.env.NODE_ENV + +export async function getNodeEnv() { + if (!NODE_ENV) { + toast.error(`接口请求错误:NODE_ENV为空`) + } + return NODE_ENV +} diff --git a/src/app/(root)/navigation.tsx b/src/app/(root)/_navigation/index.tsx similarity index 93% rename from src/app/(root)/navigation.tsx rename to src/app/(root)/_navigation/index.tsx index d44e3ae..f48a74d 100644 --- a/src/app/(root)/navigation.tsx +++ b/src/app/(root)/_navigation/index.tsx @@ -54,6 +54,7 @@ import { ScopeUserReadNotBind, ScopeUserReadOne, } from "@/lib/scopes" +import Logo from "./logo" // Navigation Context interface NavigationContextType { @@ -255,7 +256,7 @@ const menuSections: { title: string; items: NavItemProps[] }[] = [ href: "/gateway", icon: DoorClosedIcon, label: "网关列表", - requiredScope:ScopeProxyRead + requiredScope: ScopeProxyRead, }, { href: "/admin", @@ -301,22 +302,13 @@ export default function Navigation() {