Explorar o código

fix: 更新交易记录

Before hai 10 meses
pai
achega
606cb99bcc

+ 19 - 0
src/api/user.ts

@@ -159,3 +159,22 @@ export const getUserVipApi = () => {
         url: "/v1/api/user/user_vip_info",
     });
 };
+
+export interface DepositsRep {
+    /**
+     * 充值金额
+     */
+    amount: number;
+    /**
+     * 充值状态:created、pending、finished、canceled
+     */
+    status: string;
+    /**
+     * 充值时间:时间戳秒
+     */
+    time: number;
+    /**
+     * 充值标题说明
+     */
+    title: string;
+}

+ 3 - 0
src/app/[locale]/(TabBar)/(ordinary)/profile/ProfileHeader.tsx

@@ -0,0 +1,3 @@
+export const ProfileHeader = () => {
+    return <div>Header</div>;
+};

+ 0 - 185
src/app/[locale]/(TabBar)/(ordinary)/profile/page-copy.tsx

@@ -1,185 +0,0 @@
-"use client";
-import { getUserInfoApi, getUserMoneyApi } from "@/api/user";
-import { useRouter } from "@/i18n";
-import { useGlobalStore } from "@/stores";
-import { ProgressBar } from "antd-mobile";
-import clsx from "clsx";
-import { useTranslations } from "next-intl";
-import dynamic from "next/dynamic";
-import { FC, Fragment, useEffect, useState } from "react";
-import ItemCom from "./component/ItemCom";
-import "./page.scss";
-
-const vipImages = [
-    { leve: 1, src: "/vip/1.png", color: "#686868" },
-    { leve: 2, src: "/vip/2-3-4.png", color: "#844C4F" },
-    { leve: 3, src: "/vip/2-3-4.png", color: "#844C4F" },
-    { leve: 4, src: "/vip/2-3-4.png", color: "#844C4F" },
-    { leve: 5, src: "/vip/5-6-7.png", color: "#707386" },
-    { leve: 6, src: "/vip/5-6-7.png", color: "#707386" },
-    { leve: 7, src: "/vip/5-6-7.png", color: "#707386" },
-    { leve: 8, src: "/vip/8-9-10.png", color: "#894622" },
-    { leve: 9, src: "/vip/8-9-10.png", color: "#894622" },
-    { leve: 10, src: "/vip/8-9-10.png", color: "#894622" },
-];
-interface Props {}
-// const ItemCom = dynamic(() => import("./component/ItemCom"));
-const MaskCom = dynamic(() => import("./component/MaskCom"));
-const ModalCom = dynamic(() => import("./component/ModalCom"));
-const Profile: FC<Props> = () => {
-    const t = useTranslations("ProfilePage");
-
-    const { token, userInfo, setUserInfo } = useGlobalStore();
-
-    const level = 1;
-    const process = 10;
-
-    const userInfoRequest = async () => {
-        getUserInfoApi().then((res) => {
-            res.code == 200 && setUserInfo(res.data);
-        });
-    };
-
-    let [money, setMoney] = useState({
-        Score: 0,
-        point: 0,
-    });
-    const userMoneyRequest = async () => {
-        getUserMoneyApi().then((res) => {
-            res.code == 200 &&
-                setMoney({
-                    Score: res.data?.Score || 0.0,
-                    point: res.data?.point || 0.0,
-                });
-        });
-    };
-    useEffect(() => {
-        if (token) {
-            userInfoRequest();
-            userMoneyRequest();
-        }
-        // eslint-disable-next-line react-hooks/exhaustive-deps
-    }, [token]);
-
-    const router = useRouter();
-    const goPage = (path = "/") => {
-        router.push(path);
-    };
-
-    const [visible, setVisible] = useState(false);
-    const callbackFun = () => {
-        setVisible(!visible);
-    };
-
-    const divClassName = clsx("bgImg", token && "default");
-    const divClassName2 = clsx("userContent", token && "active");
-    const divClassName3 = clsx("userInfo", token && "active");
-
-    const vipIconElement = vipImages.map((item, index) => {
-        if (item.leve === level) {
-            return (
-                <Fragment key={index}>
-                    <img src={item.src} className={"icon-image"} alt="vip" key={index} />
-                    <span className={"icon-level"} style={{ color: item.color }}>
-                        {item.leve}
-                    </span>
-                </Fragment>
-            );
-        }
-    });
-
-    return (
-        <div className="profile-box">
-            <div className={divClassName2}>
-                <div className={divClassName3}>
-                    <div>
-                        <div className={divClassName}></div>
-                        {token && (
-                            <div>
-                                <span>{t("Conta")}</span>
-                                <span className="phone">{userInfo?.user_phone || ""}</span>
-                            </div>
-                        )}
-                    </div>
-                    {token ? (
-                        <div
-                            className="goto"
-                            onClick={() =>
-                                goPage(
-                                    `/confirmPassword?userPhone=${userInfo.user_phone}&code=123456&alter=true`
-                                )
-                            }
-                        >
-                            <span className="iconfont icon-xiangzuo1"></span>
-                        </div>
-                    ) : (
-                        <div className="goto" onClick={() => goPage("/login")}>
-                            <span>{t("Login")}</span>
-                            <span className="iconfont icon-xiangzuo1"></span>
-                        </div>
-                    )}
-                </div>
-                {/*vipcard*/}
-                <div className={"vip-card"}>
-                    <div className={"vip-card__icon"}>{vipIconElement}</div>
-                    <div className={"vip-card-process"}>
-                        <div className={"process-top"}>{process}xp</div>
-                        <div>
-                            <ProgressBar
-                                percent={process}
-                                style={{
-                                    "--fill-color": "#fb8b05",
-                                    "--track-width": "0.0694rem",
-                                }}
-                            />
-                        </div>
-                        <div className={"process-bottom"}>
-                            <span>VIP{level}</span>
-                            <span className={"process-bottom-desc"}>leia 400 atualizando para</span>
-                            <span>VIP{level + 1 >= 11 ? "MAX" : level + 1}</span>
-                        </div>
-                    </div>
-                </div>
-
-                {token && (
-                    <div className="coin">
-                        <div>
-                            <span className="iconfont icon-icon-wallet"></span>
-                            <div>
-                                <span>{t("Saldo")}</span>
-                                <div className="num">
-                                    <span className="uppercase">brl </span>
-                                    <span>{money.Score || 0.0}</span>
-                                </div>
-                            </div>
-                        </div>
-                        <div>
-                            <span className="iconfont icon-gift2"></span>
-                            <div>
-                                <span onClick={() => setVisible(true)}>
-                                    {t("Bônus")} <img className="a" src="/img/a.png" alt="" />
-                                </span>
-                                <div className="num">
-                                    <span className="uppercase">brl </span>
-                                    <span>{money.point || 0.0}</span>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                )}
-            </div>
-
-            <div className="link">
-                <span onClick={() => goPage("/deposit")}>{t("Depósito")}</span>
-                <span onClick={() => goPage(token ? "/withdraw" : `/login?redirect=/withdraw`)}>
-                    {t("Sacar")}
-                </span>
-            </div>
-            <ItemCom />
-            <ModalCom />
-            <MaskCom visible={visible} callbackFun={callbackFun} />
-        </div>
-    );
-};
-
-export default Profile;

+ 1 - 0
src/app/[locale]/(TabBar)/[[...share]]/_home/HomeGames.tsx

@@ -19,6 +19,7 @@ const Manufacturer = (props: { data: GameListRep[] }) => {
 const HomeGames = (props: Props) => {
     const router = useRouter();
     const { groupGames = [] } = props;
+    console.log(`🚀🚀🚀🚀🚀-> in HomeGames.tsx on 22`, groupGames);
     const todoHandler = (item: Category) => {
         router.push(`/gameList/${item.line_config_amount}`);
     };

+ 25 - 23
src/app/[locale]/(navbar)/transactions/components/Message.tsx

@@ -1,31 +1,33 @@
+import { DepositsRep } from "@/api/user";
 import Box from "@/components/Box";
+import Empty from "@/components/Empty";
 import { timeFormat } from "@/utils/methods";
 
-const Message = () => {
+type Props = {
+    data: DepositsRep[];
+};
+const Message = (props: Props) => {
+    const { data = [] } = props;
+    if (data.length === 0) return <Empty />;
     return (
         <div>
-            {Array(20)
-                .fill(null)
-                .map((_, i) => {
-                    return (
-                        <Box key={i} className={"border-b-[1px] border-[#333333] text-[14px]"}>
-                            <div className={"flex justify-between pb-[0.0694rem]"}>
-                                <p>name</p>
-                                <p className={""}>
-                                    {i % 3 === 0 ? (
-                                        <span className={"text-[green]"}>+ {i + 1}</span>
-                                    ) : (
-                                        <span className={"text-[#acacac]"}>5000</span>
-                                    )}
-                                </p>
-                            </div>
-                            <div className={"text-[12px flex justify-between text-[#acacac]"}>
-                                <p>{timeFormat(new Date().getTime())}</p>
-                                <p>Pogo</p>
-                            </div>
-                        </Box>
-                    );
-                })}
+            {data.map((item, i) => {
+                return (
+                    <Box key={i} className={"border-b-[1px] border-[#333333] text-[14px]"}>
+                        <div className={"flex justify-between pb-[0.0694rem]"}>
+                            <p>{item.title}</p>
+                            <p>
+                                <span className={"text-[green]"}>+ {item.amount}</span>
+                                {/*<span className={"text-[#acacac]"}></span>*/}
+                            </p>
+                        </div>
+                        <div className={"text-[12px flex justify-between text-[#acacac]"}>
+                            <p>{timeFormat(item.time)}</p>
+                            <p>{item.status}</p>
+                        </div>
+                    </Box>
+                );
+            })}
         </div>
     );
 };

+ 38 - 5
src/app/[locale]/(navbar)/transactions/page.tsx

@@ -1,12 +1,45 @@
-"use client";
+import { DepositsRep } from "@/api/user";
 import Tabs from "@/components/Tabs";
+import { server } from "@/utils/server";
 import Message from "./components/Message";
 
-const Transactions = () => {
+/**
+ * @description 获取用户充值记录接口地址:https://app.apifox.com/link/project/4790544/apis/api-216321352
+ */
+const getDepositsApi = async () => {
+    return server
+        .request<DepositsRep[]>({
+            url: "/v1/api/user/user_deposits",
+            method: "POST",
+            data: { page: 1, size: 20 },
+        })
+        .then((res) => {
+            if (res.code === 200) return res.data;
+            return [];
+        });
+};
+/**
+ * @description获取用户提现记录 接口地址:https://app.apifox.com/link/project/4790544/apis/api-216388352
+ */
+const getWithdraws = async () => {
+    return server
+        .request<DepositsRep[]>({
+            url: "/v1/api/user/user_withdraws",
+            method: "POST",
+            data: { page: 1, size: 20 },
+        })
+        .then((res) => {
+            if (res.code === 200) return res.data;
+            return [];
+        });
+};
+const Transactions = async () => {
+    const deposits = await getDepositsApi();
+    const withdraws = await getWithdraws();
     const defaultTabs = [
-        { id: 1, name: "deposits", content: 0, render: <Message></Message> },
-        { id: 2, name: "saques", content: 0, render: <Message></Message> },
-        { id: 3, name: "bonus", content: 0, render: <Message></Message> },
+        { id: 1, name: "deposits", content: 0, render: <Message data={deposits}></Message> },
+        { id: 2, name: "saques", content: 0, render: <Message data={withdraws}></Message> },
+        { id: 3, name: "bonus", content: 0, render: <Message data={[]}></Message> },
     ];
     return <Tabs items={defaultTabs} />;
 };