year 18 годин тому
батько
коміт
edd0efd9d3

+ 18 - 3
src/app/[locale]/(TabBar)/[[...share]]/@prizeWidget2/page.tsx

@@ -1,4 +1,4 @@
-import { PrizeTypes } from "@/api/home";
+import { BannerRep, PrizeTypes } from "@/api/home";
 import { server } from "@/utils/server";
 import HomePrize from "../_home/HomePrize";
 
@@ -8,9 +8,24 @@ const getPrizeApi = () => {
         method: "post",
     });
 };
+const getNotices = async () => {
+    return server
+        .request<BannerRep[]>({
+            url: "/v1/api/front/marquee",
+            method: "POST",
+            body: JSON.stringify({}),
+            next: { revalidate: 0 },
+        })
+        .then((res) => {
+            if (res.code === 200) return res.data;
+            return [];
+        });
+};
+
 const Page = async () => {
-    const result = await getPrizeApi();
+    const [result, notices] = await Promise.all([getPrizeApi(), getNotices()]);
+
     if (!result.data) return null;
-    return <HomePrize type={"notice"} data={result.data ?? []}></HomePrize>;
+    return <HomePrize type={"notice"} data={result.data ?? []} notices={notices}></HomePrize>;
 };
 export default Page;

+ 31 - 14
src/app/[locale]/(TabBar)/[[...share]]/_home/HomePrize.tsx

@@ -1,23 +1,44 @@
 "use client";
-import { PrizeTypes } from "@/api/home";
+import { BannerRep, PrizeTypes } from "@/api/home";
 import { Card } from "@/components/Card";
 import { Tabs } from "antd-mobile";
 import clsx from "clsx";
-import { FC } from "react";
+import React, { FC } from "react";
 import { Autoplay, FreeMode } from "swiper/modules";
 import { Swiper, SwiperSlide } from "swiper/react";
 import styles from "./prize.module.scss";
 interface Props {
     data: PrizeTypes[];
+    notices?: BannerRep[];
     type: "list" | "card" | "notice";
 }
 
 const HomePrize: FC<Props> = (props) => {
-    const { data, type } = props;
-    // const t = useTranslations("HomePage");
-    // const tt = useTranslations("Game");
+    const { data, type, notices } = props;
 
-    if (!data?.length) return null;
+    const renderData = React.useMemo(() => {
+        if (type !== "notice") return data;
+        const result: any = [];
+        if (!!data?.length) {
+            data.forEach((item) => {
+                result.push({
+                    text: ` ${item.phone ? item.phone.slice(0, 1) + "*****" + item.phone.slice(-3) : ""}
+                                acabou de retirar {prize.amount} R$`,
+                });
+            });
+        }
+        if (!!notices?.length) {
+            notices?.forEach((item) => {
+                result.push({
+                    text: item.content,
+                });
+            });
+        }
+
+        return result;
+    }, [data, notices, type]);
+
+    if (!renderData?.length) return null;
 
     if (type === "notice") {
         return (
@@ -43,18 +64,14 @@ const HomePrize: FC<Props> = (props) => {
                     modules={[Autoplay, FreeMode]}
                     className="homeNoticeSwiper"
                 >
-                    {[...(data || []), ...(data || [])].map((prize, index) => (
+                    {renderData.map((item: any, index: number) => (
                         <SwiperSlide key={index}>
                             <div
                                 className={
-                                    "textBox inline-block text-[.12rem] text-[var(--textColor1)]"
+                                    "textBox inline-block !text-[.12rem] text-[var(--textColor1)]"
                                 }
-                            >
-                                {prize.phone
-                                    ? prize.phone.slice(0, 1) + "*****" + prize.phone.slice(-3)
-                                    : ""}{" "}
-                                acabou de retirar {prize.amount} R$
-                            </div>
+                                dangerouslySetInnerHTML={{ __html: item.text }}
+                            ></div>
                         </SwiperSlide>
                     ))}
                 </Swiper>

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

@@ -33,7 +33,7 @@ const HomeSwiper: FC<Props> = (props) => {
                         <Box none action={banner.action_type} actionData={banner.action_params}>
                             <CustomImage
                                 width={"100%"}
-                                height={"1.86rem"}
+                                // height={"1.86rem"}
                                 // lazy
                                 className="rounded-[0.1rem]"
                                 src={banner.content}

+ 1 - 1
src/app/[locale]/(TabBar)/[[...share]]/layout.tsx

@@ -78,7 +78,7 @@ const Layout: FC<PropsWithChildren<Props>> = async (props) => {
                     <Suspense fallback={<NoticePlaceHolder />}>{noticeWidget}</Suspense>
                 </div> */}
                 <Suspense fallback={<PrizePlaceHolder />}>{prizeWidget2}</Suspense>
-
+                {/* <Suspense fallback={<PrizePlaceHolder />}>{noticeWidget}</Suspense> */}
                 {/* <Box>
                        {categoryWidget}
                     </Box> */}

+ 18 - 4
src/app/[locale]/(navbar)/deposit/@PrizeWidget/page.tsx

@@ -1,16 +1,30 @@
-import { PrizeTypes } from "@/api/home";
+import { BannerRep, PrizeTypes } from "@/api/home";
 import { server } from "@/utils/server";
 import HomePrize from "../../../(TabBar)/[[...share]]/_home/HomePrize";
-
 const getPrizeApi = () => {
     return server.request<PrizeTypes[]>({
         url: "/v1/api/front/games_notice_win",
         method: "post",
     });
 };
+const getNotices = async () => {
+    return server
+        .request<BannerRep[]>({
+            url: "/v1/api/front/marquee",
+            method: "POST",
+            body: JSON.stringify({}),
+            next: { revalidate: 0 },
+        })
+        .then((res) => {
+            if (res.code === 200) return res.data;
+            return [];
+        });
+};
+
 const Page = async () => {
-    const result = await getPrizeApi();
+    const [result, notices] = await Promise.all([getPrizeApi(), getNotices()]);
+
     if (!result.data) return null;
-    return <HomePrize type={"notice"} data={result.data ?? []}></HomePrize>;
+    return <HomePrize type={"notice"} data={result.data ?? []} notices={notices}></HomePrize>;
 };
 export default Page;

+ 0 - 1
src/components/Image/index.tsx

@@ -5,7 +5,6 @@ const CustomImage = ({ onError, src, ...props }: ImageProps) => {
     const [isError, setIsError] = React.useState(false);
 
     const onErrorHandler = (event: React.SyntheticEvent<HTMLImageElement, Event>) => {
-        console.log(9900);
         if (typeof onError === "function") onError(event);
         setIsError(true);
     };