page.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { redirect, RedirectType } from 'next/navigation';
  2. import {serverGraphqlFetch} from "@utils/bagisto/index";
  3. import CheckoutWrapper from "./_components/CheckoutWrapper";
  4. import { GET_CART_ITEM } from "@/graphql";
  5. import { auth } from "@/utils/auth/auth-helper";
  6. import { GetCartItemData } from "@/types/cart/type";
  7. /**
  8. * 进入结账页
  9. * 登录用户的话,获取用户地址列表 从auth session 中获取email
  10. * 获取billing地址和shipping地址
  11. * 获取购物车数据
  12. * 获取运输方式
  13. * 获取支付方式
  14. *
  15. *
  16. */
  17. export const dynamic = "force-dynamic";
  18. export default async function CheckoutPage() {
  19. const session = await auth(); // 游客是null
  20. const {data: cartDetailsRes} = await serverGraphqlFetch<GetCartItemData>({
  21. query: GET_CART_ITEM
  22. });
  23. if(cartDetailsRes.createReadCart === null) {
  24. redirect('/', RedirectType.replace);
  25. }
  26. const cartDetails = cartDetailsRes.createReadCart.readCart;
  27. return (
  28. <>
  29. <CheckoutWrapper key={cartDetails.grandTotal}
  30. cartDetailData={cartDetails}
  31. loginEmail={session?.user?.email || ""}
  32. />
  33. </>
  34. );
  35. }