year преди 3 месеца
родител
ревизия
c8b48e42e4

+ 89 - 1
src/api/activity.ts

@@ -78,9 +78,24 @@ export interface ContinuousResult {
         stage: ContinuousStageItem[];
         list: Record<number, Record<number, ContinuousListItem>>;
         reward_list: Record<number, Record<number, ContinuousRewardItem>>;
+        config_list: ContinuousCfgItem[];
     };
 }
 
+export interface ContinuousCfgItem {
+    claim_time: number;
+    days: number;
+    diff_num: number;
+    end_at: number;
+    id: number;
+    is_sign: number;
+    is_suss: number;
+    pay_num: number;
+    start_at: number;
+    target_num: number;
+    target_reward: number;
+}
+
 export interface ContinuousStageItem {
     id: number;
     is_sign: number;
@@ -119,9 +134,82 @@ export interface ContinuousRewardItem {
 }
 
 // 连续充值
-export const getContinuousRechargeInfo = (data: { activity_id: number }) => {
+export const getContinuousRechargeInfo = async (data: { activity_id: number }) => {
+    // return (await import("@/mock/activety")).getContinuousInfo();
+
     return server.post<ContinuousResult>({
         url: "/v1/api/user/activity/continuousRechargeInfo",
         data,
     });
 };
+
+export interface PromoterInfo {
+    id: number;
+    name: string;
+    type: number;
+    act_time_type: number;
+    start_at: number;
+    end_at: number;
+    display_start_time: number;
+    display_end_time: number;
+    act_page: number;
+    background_type: number;
+    Background: string;
+    act_promotion_url: string;
+    pay_amount: number;
+    total_bet: number;
+    reward: number;
+    cur_num: number;
+    tally_time: number;
+    is_op: boolean;
+    remark: string;
+    list: { count: number; conf: PromoterItem[]; condition: PromoterCondition };
+}
+
+export interface PromoterCondition {
+    first_pay_num: number;
+    total_pay_num: number;
+    total_bet: number;
+    total_pay_days: number;
+    total_pay_times: number;
+}
+export interface PromoterItem {
+    id: number;
+    coin_type: number;
+    target_num: number;
+    num: number;
+    claim_time: number;
+    is_suss: boolean;
+    is_unlock: boolean;
+    img: string;
+}
+
+// 代理宝箱
+export const getPromoterInfo = async (data: { activity_id: number }) => {
+    // return (await import("@/mock/activety")).getPromoterInfo();
+
+    return server.post<PromoterInfo>({
+        url: "/v1/api/user/activity/promoterBoxInfo",
+        data,
+    });
+};
+
+export interface ChildItem {
+    create_at: number;
+    renter_uid: string;
+    first_pay_deposit: number;
+    first_pay_at: number;
+    deposit: number;
+    deposit_time: number;
+    to_day_pay_times: number;
+    total_bet: number;
+    activity_mp: any;
+}
+
+export const getPromoteList = async () => {
+    return (await import("@/mock/activety")).getPromotChild();
+
+    // return server.post<ChildItem[]>({
+    //     url: "/v1/api/user/activity/childPromoterList",
+    // });
+};

+ 33 - 2
src/app/[locale]/(doings)/continuous/page.module.scss

@@ -51,7 +51,7 @@
         }
     }
     .inner {
-        height: 300px;
+        // height: 300px;
         position: relative;
         // border-radius: 0.2rem 0.2rem 0 0;
         &::before {
@@ -100,7 +100,7 @@
     align-items: center;
     justify-content: space-between;
     .boxItem {
-        width: 0.8rem;
+        width: 0.75rem;
         height: 1.1rem;
         background-size: 100% 100%;
         position: relative;
@@ -157,6 +157,7 @@
         flex-wrap: wrap;
         justify-content: flex-start;
         gap: 0.1rem;
+        background-size: 100%;
     }
     .dayItem {
         flex: 0 0 calc(16.666% - 0.0833rem);
@@ -168,6 +169,7 @@
         flex-direction: column;
         align-items: center;
         justify-content: center;
+        min-width: 0;
         &.active {
             background-color: #7742d4;
             position: relative;
@@ -195,6 +197,7 @@
                 justify-content: center;
                 font-size: 0.1rem;
                 line-height: 1;
+                max-width: 100%;
                 img {
                     width: 0.2rem;
                 }
@@ -209,6 +212,32 @@
         display: none;
     }
 }
+.stageBox {
+    border-radius: 0.2rem;
+    background: linear-gradient(to bottom, #ff03ea, #0af0ff); // 添加水平渐变背景
+    padding: 0.02rem;
+    .stageBoxContainer {
+        background-color: #942ef7;
+        box-shadow: 0 0 15px rgba(255, 5, 234, 0.5) inset;
+        min-height: 1rem;
+        padding: 0.1rem;
+        border-radius: 0.2rem;
+        background-image: url("/continuous/bg_1.png");
+        background-size: 100% auto;
+        padding: 0.15rem 0.1rem;
+        position: relative;
+        &:after {
+            content: "";
+            position: absolute;
+            left: 0;
+            top: 60%;
+            right: 0;
+            height: 6px;
+            background-color: rgb(255, 255, 255, 0.3);
+            border-radius: 4px;
+        }
+    }
+}
 .premio {
     margin-top: 0.2rem;
     .premioTitle {
@@ -243,6 +272,7 @@
         padding: 0.1rem;
         border-radius: 0.2rem;
         background-image: url("/continuous/bg_1.png");
+        background-size: 100% auto;
         padding: 0.15rem 0.1rem;
     }
     .premioItem {
@@ -317,6 +347,7 @@
         padding: 0.1rem;
         border-radius: 0.2rem;
         background-image: url("/continuous/bg_1.png");
+        background-size: 100% auto;
         padding: 0.15rem 0.1rem;
         position: relative;
     }

+ 214 - 71
src/app/[locale]/(doings)/continuous/page.tsx

@@ -1,5 +1,7 @@
 "use client";
 import {
+    claimActivityReward,
+    ContinuousCfgItem,
     ContinuousListItem,
     ContinuousResult,
     ContinuousRewardItem,
@@ -7,8 +9,12 @@ import {
     getContinuousRechargeInfo,
 } from "@/api/activity";
 import CutDown from "@/components/CutDown";
+import GlobalNotify from "@/components/ModalPopup/GlobalNotifyModal";
 import { useRouter } from "@/i18n/routing";
+import { formatAmount } from "@/utils/index";
+import { Toast } from "antd-mobile";
 import clsx from "clsx";
+import { useTranslations } from "next-intl";
 import { useSearchParams } from "next/navigation";
 import React from "react";
 import styles from "./page.module.scss";
@@ -32,26 +38,68 @@ interface RewardItem {
     dayId: number;
     data: ContinuousRewardItem[];
 }
+//"#297fcf"
+const DayItem = ({
+    data,
+    idx,
+    onClaim,
+}: {
+    data: ContinuousCfgItem;
+    idx: number;
+    onClaim: Function;
+}) => {
+    const dayColor = [
+        "#12940f",
+        "#297fcf",
+        "#ec3920",
+        "#12940f",
+        "#297fcf",
+        "#ec3920",
+        "#12940f",
+        "#297fcf",
+        "#ec3920",
+    ];
+
+    const doClaim = () => {
+        if (onClaim && typeof onClaim === "function") {
+            onClaim(data);
+        }
+    };
 
-const DayItem = ({ dayColor = "#297fcf", num = 0 }) => {
     return (
         <div>
-            <div className="mb-[.1rem] flex flex-row justify-center">
-                <div className={styles.canGet}>Grande Prêmio Disponível</div>
-            </div>
-            <div className="item-center mb-[.1rem] flex flex-row justify-center">
-                <CutDown endTime={232323} itemBgColor="rgba(255,255,255,.4)"></CutDown>
-            </div>
+            {data.id >= 2 && (
+                <div className="mb-[.1rem] flex flex-row justify-center">
+                    <div className={styles.canGet}>Grande Prêmio Disponível</div>
+                </div>
+            )}
+
+            {!!data.end_at && (
+                <div className="item-center mb-[.1rem] flex flex-row justify-center">
+                    <CutDown
+                        endTime={data.end_at - Date.now() / 1000}
+                        itemBgColor="rgba(255,255,255,.4)"
+                    ></CutDown>
+                </div>
+            )}
             <div className={styles.premioItem}>
                 <div className={styles.premioItemDay}>
-                    <span style={{ color: dayColor }}>{num}</span>
+                    <span style={{ color: dayColor[idx] }}>{data.days}</span>
                 </div>
                 <div>
-                    <div className="text-[.16rem] font-bold">Recarga contínua por 7 dias</div>
+                    <div className="text-[.16rem] font-bold">
+                        Recarga contínua por {data.days} dias
+                    </div>
                     <div className="flrx-row flex items-center justify-between">
-                        <div>Recompensa de login Platinum 1R</div>
-                        <div className={styles.premioItemBtn}>Recebido</div>
-                        {/* Receber */}
+                        <div>Recompensa de login Platinum {data.target_reward}R</div>
+                        <div
+                            className={clsx(styles.premioItemBtn, {
+                                [styles.disabled]: data.is_sign === 0,
+                            })}
+                            onClick={doClaim}
+                        >
+                            {data.is_sign === 0 ? "Recebido" : "Receber"}
+                        </div>
                     </div>
                 </div>
             </div>
@@ -60,24 +108,18 @@ const DayItem = ({ dayColor = "#297fcf", num = 0 }) => {
 };
 
 const Page = () => {
+    const t = useTranslations();
     const query = Object.fromEntries(useSearchParams());
     const [data, setData] = React.useState<ContinuousResult>({} as ContinuousResult);
     const router = useRouter();
     const dayContainer = React.useRef<HTMLDivElement>(null);
-    const colors = [
-        "#4eb04c",
-        "#297fce",
-        "#ec3b23",
-        "#4eb04c",
-        "#297fce",
-        "#ec3b23",
-        "#4eb04c",
-        "#297fce",
-        "#ec3b23",
-    ];
+
+    const [amount, setAmount] = React.useState<any>({});
+    const [visible, setVisible] = React.useState<boolean>(false);
 
     React.useEffect(() => {
         getData();
+        // eslint-disable-next-line react-hooks/exhaustive-deps
     }, []);
     const getData = async () => {
         const res = await getContinuousRechargeInfo({ activity_id: Number(query.activity_id) });
@@ -126,6 +168,7 @@ const Page = () => {
         }
         const result: StageItem[] = stags
             .map((item) => {
+                console.log(112233, item);
                 return {
                     ...item,
                     ...cfg1[item.id],
@@ -169,10 +212,78 @@ const Page = () => {
         return result;
     }, [data?.list?.reward_list]);
 
+    const waitDay = React.useMemo(() => {
+        if (!data?.list?.reward_list) {
+            return 9999;
+        }
+        const keys = Object.keys(data?.list?.reward_list);
+        let result = 9999;
+        for (let i = 0; i < keys.length; i++) {
+            const key = keys[i];
+            if (Number(keys[i]) < data.cur_num) {
+                continue;
+            }
+            result = Number(key) - data.cur_num;
+            break;
+        }
+        return result;
+    }, [data]);
+
+    const waitList = React.useMemo<ContinuousCfgItem[]>(() => {
+        if (!data?.list?.config_list) return [];
+        const result = [] as ContinuousCfgItem[];
+        data?.list?.config_list.forEach((item) => {
+            // if (item.id <= data.cur_num) {
+            //     return;
+            // }
+            result.push(item);
+        });
+        return result;
+    }, [data?.list?.config_list]);
+
     const goDeposit = () => {
         router.push("/deposit");
     };
 
+    const doClaim = async (data: ContinuousCfgItem) => {
+        if (!data.is_sign) return;
+        try {
+            const res = await claimActivityReward({
+                activity_id: Number(query.activity_id),
+                id: data.days,
+            });
+            if (res.code === 200 && res?.data?.code === 1) {
+                const amountObj: any = {};
+                if (res?.data?.reward) {
+                    res?.data?.reward.forEach((item: any) => {
+                        amountObj[`coin_${item.coin_type}`] = formatAmount(item.amount);
+                    });
+                }
+                if (res?.data?.extra_reward) {
+                    res?.data?.extra_reward.forEach((item: any) => {
+                        amountObj[`coin_${item.coin_type}`] = formatAmount(
+                            new BigNumber(amountObj[`coin_${item.coin_type}`] || 0)
+                                .plus(item.amount)
+                                .toString()
+                        );
+                    });
+                }
+                setAmount(amountObj);
+                setVisible(true);
+                getData();
+            } else {
+                throw new Error(t(`code.400`));
+            }
+        } catch (error: any) {
+            if (error) {
+                Toast.show({
+                    content: error.message || error.toString(),
+                    maskClickable: false,
+                });
+            }
+        }
+    };
+
     return (
         <div className={clsx(styles.continuePage)}>
             <div className={styles.container}>
@@ -184,80 +295,106 @@ const Page = () => {
                 </div>
                 <div className={styles.content}>
                     <div className={styles.tip}>
-                        <div className={styles.text}>Check-in 5 dias consecutivos</div>
+                        <div className={styles.text}>Check-in {waitDay} dias consecutivos</div>
                     </div>
 
                     <div className={styles.inner}>
                         <div className={styles.innerContainer}>
-                            <div className={styles.box}>
-                                {!!stage.length &&
-                                    stage.map((item) => {
-                                        return (
-                                            <div
-                                                key={item.id}
-                                                className={styles.boxItem}
-                                                style={{
-                                                    backgroundImage: `url('/continuous/v${item.id}.png')`,
-                                                }}
-                                            >
-                                                <div className={styles.boxItemTop}>
-                                                    <div className={styles.boxItemTopText}>
-                                                        {item.text}
-                                                    </div>
-                                                    <div className={styles.boxItemTopText}>
-                                                        {item.text2}
+                            {!!stage.length && (
+                                <div className={styles.stageBox}>
+                                    <div className={styles.stageBoxContainer}>
+                                        <div className="mb-[.1rem] text-center text-[.16rem] font-bold">
+                                            Alcançado nesta data
+                                        </div>
+                                        <div className={styles.box}>
+                                            {stage.map((item) => {
+                                                return (
+                                                    <div
+                                                        key={item.id}
+                                                        className={styles.boxItem}
+                                                        style={{
+                                                            backgroundImage: `url('/continuous/v${item.id}.png')`,
+                                                        }}
+                                                    >
+                                                        <div className={styles.boxItemTop}>
+                                                            <div className={styles.boxItemTopText}>
+                                                                {item.text}
+                                                            </div>
+                                                            <div className={styles.boxItemTopText}>
+                                                                {item.text2}
+                                                            </div>
+                                                        </div>
+                                                        <div className={styles.boxItemBottom}>
+                                                            <div>{item.footer}</div>
+                                                            <div>{item.footer2}</div>
+                                                        </div>
                                                     </div>
-                                                </div>
-                                                <div className={styles.boxItemBottom}>
-                                                    <div>{item.footer}</div>
-                                                    <div>{item.footer2}</div>
-                                                </div>
-                                            </div>
-                                        );
-                                    })}
-                            </div>
-                            <div className={styles.daybox}>
-                                <div className={styles.dayContainer} ref={dayContainer}>
-                                    {!!list?.length &&
-                                        list.map((item) => {
+                                                );
+                                            })}
+                                        </div>
+                                    </div>
+                                </div>
+                            )}
+                            {!!list?.length && (
+                                <div className={styles.daybox}>
+                                    <div className={styles.dayContainer} ref={dayContainer}>
+                                        {list.map((item: any) => {
                                             return (
                                                 <div
                                                     key={item.dayId}
-                                                    className={clsx(styles.dayItem, styles.active)}
+                                                    className={clsx(styles.dayItem, {
+                                                        [styles.active]: item.data.is_sign,
+                                                    })}
                                                 >
                                                     <div className={styles.dayItemText}>
                                                         {item.dayId} dia
                                                     </div>
                                                     <div className={styles.dayitemTextActive}>
-                                                        <img src="/continuous/s1.png" alt="" />
+                                                        <img
+                                                            src={`/continuous/s${item.data.id}.png`}
+                                                            alt=""
+                                                        />
                                                         <div className="flex flex-row items-end text-[#dbc6ff]">
                                                             <span className="relative top-[1px] mt-[2px] text-[.13rem]">
-                                                                {/* {item} */}
+                                                                {item.dayId}
                                                             </span>
                                                             <span>dia</span>
                                                         </div>
                                                         <div>recarga</div>
-                                                        <div className="text-[#ffb400]">10000</div>
+                                                        <div className="mt-[.03rem] w-[100%] overflow-hidden text-ellipsis text-[#ffb400]">
+                                                            {item?.data?.pay_num}
+                                                        </div>
                                                     </div>
                                                 </div>
                                             );
                                         })}
+                                    </div>
                                 </div>
-                            </div>
-                            <div className={styles.premio}>
-                                <div className={styles.premioTitle}>
-                                    <span className={styles.premioTitleText}>
-                                        Prévia do Grande Prêmio
-                                    </span>
-                                </div>
-                                <div className={styles.premioContainer}>
-                                    <div className={styles.premioContent}>
-                                        <DayItem num={5}></DayItem>
-                                        <DayItem num={15}></DayItem>
-                                        <DayItem num={25}></DayItem>
+                            )}
+                            {!!waitList.length && (
+                                <div className={styles.premio}>
+                                    <div className={styles.premioTitle}>
+                                        <span className={styles.premioTitleText}>
+                                            Prévia do Grande Prêmio
+                                        </span>
+                                    </div>
+                                    <div className={styles.premioContainer}>
+                                        <div className={styles.premioContent}>
+                                            {waitList.map((item, idx: number) => {
+                                                return (
+                                                    <DayItem
+                                                        key={item.days}
+                                                        data={item}
+                                                        idx={idx}
+                                                        onClaim={doClaim}
+                                                    ></DayItem>
+                                                );
+                                            })}
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
+                            )}
+
                             <div className={styles.introbox}>
                                 <div className={styles.introContainer}>
                                     <div className={styles.introTitle}>
@@ -330,6 +467,12 @@ const Page = () => {
                     </div>
                 </div>
             </div>
+            <GlobalNotify
+                amount={amount}
+                visible={visible}
+                onChange={() => setVisible(false)}
+                deraction={5000}
+            ></GlobalNotify>
         </div>
     );
 };

+ 152 - 35
src/app/[locale]/(doings)/fission/(locale)/page.tsx

@@ -1,44 +1,78 @@
 "use client";
+import { claimActivityReward, getPromoterInfo, PromoterInfo, PromoterItem } from "@/api/activity";
 import { getShareLinkApi } from "@/api/config";
+import GlobalNotify from "@/components/ModalPopup/GlobalNotifyModal";
 import { useRouter } from "@/i18n/routing";
 import { useUserInfoStore } from "@/stores/useUserInfoStore";
+import { formatAmount } from "@/utils";
 import { copyText } from "@/utils/methods";
 import { Toast } from "antd-mobile";
 import clsx from "clsx";
 import { useTranslations } from "next-intl";
-import { usePathname } from "next/navigation";
+import { usePathname, useSearchParams } from "next/navigation";
 import React from "react";
 import styles from "./page.module.scss";
 
-const Item = ({ type = "shake" }) => {
+const Item = ({
+    data,
+    hasArrow = true,
+    onClaim,
+}: {
+    data?: any;
+    hasArrow?: boolean;
+    onClaim?: Function;
+}) => {
+    const claimClick = () => {
+        if (onClaim && typeof onClaim === "function") {
+            onClaim(data);
+        }
+    };
+
     return (
         <div
             className={clsx(
                 "min-w-fit mb-[.2rem] flex flex-shrink-0 flex-grow flex-row items-center",
                 styles.itemWrap
             )}
+            onClick={claimClick}
         >
+            {data && (
+                <div
+                    className={clsx(
+                        styles.item,
+                        {
+                            [styles.active]: data.is_unlock,
+                            [styles.disabled]: data.is_suss,
+                        },
+                        "flex flex-col items-center text-[.12rem]"
+                    )}
+                >
+                    <div className={clsx(styles.itemImg, "mb-[.05rem]")}></div>
+                    <div>Promoção</div>
+                    <div>
+                        <span className="text-[#ffc000]">{data.target_num}</span> Pessoa
+                    </div>
+                    <div className={styles.itemMoney}>
+                        <span>
+                            {data.is_suss ? "+" : ""}
+                            {data.num}
+                        </span>
+                    </div>
+                </div>
+            )}
+            {!data && (
+                <div
+                    className={clsx(styles.item, "flex flex-col items-center text-[.12rem]")}
+                ></div>
+            )}
+
             <div
                 className={clsx(
-                    styles.item,
-                    // styles.disabled,
-                    styles.active,
-                    "flex flex-col items-center text-[.12rem]"
+                    styles.arrow,
+                    "relative top-[-.2rem] flex w-[.2rem] flex-row justify-center"
                 )}
             >
-                <div className={clsx(styles.itemImg, "mb-[.05rem]")}></div>
-                <div>Promoção</div>
-                <div>
-                    <span className="text-[#ffc000]">1</span> Pessoa
-                </div>
-                <div className={styles.itemMoney}>
-                    <span>+3000</span>
-                </div>
-            </div>
-            <div
-                className={clsx(styles.arrow, "relative top-[-.2rem] flex flex-row justify-center")}
-            >
-                <img src="/fission/arrow.png" className={clsx("w-[.2rem]")} alt="" />
+                {hasArrow && <img src="/fission/arrow.png" className={clsx("w-[.2rem]")} alt="" />}
             </div>
         </div>
     );
@@ -47,9 +81,13 @@ const Item = ({ type = "shake" }) => {
 const Page: React.FC = () => {
     const t = useTranslations();
     const router = useRouter();
+    const query = Object.fromEntries(useSearchParams());
     const { userInfo } = useUserInfoStore();
     const pathname = usePathname();
     const [BASE_URL, setBaseUrl] = React.useState("");
+    const [data, setData] = React.useState<PromoterInfo>({} as PromoterInfo);
+    const [amount, setAmount] = React.useState<any>({});
+    const [visible, setVisible] = React.useState<boolean>(false);
 
     const url = React.useMemo(() => {
         const shareUrl = `${BASE_URL}?share_id=${userInfo ? userInfo.referrer_code : "xxxxxx"}`;
@@ -87,6 +125,8 @@ const Page: React.FC = () => {
 
     React.useEffect(() => {
         init();
+        getData();
+        // eslint-disable-next-line react-hooks/exhaustive-deps
     }, []);
     const init = async () => {
         const res = await getShareLinkApi();
@@ -97,6 +137,55 @@ const Page: React.FC = () => {
             setBaseUrl(url);
         }
     };
+    const getData = async () => {
+        const res = await getPromoterInfo({ activity_id: Number(query.activity_id) });
+        if (res.code === 200) {
+            setData(res.data);
+        }
+    };
+
+    const list = React.useMemo<PromoterItem[]>(() => {
+        return data?.list?.conf || [];
+    }, [data?.list]);
+
+    const doClaim = async (data: PromoterItem) => {
+        if (!data.is_unlock) return;
+        try {
+            const res = await claimActivityReward({
+                activity_id: Number(query.activity_id),
+                id: data.id,
+            });
+            if (res.code === 200 && res?.data?.code === 1) {
+                const amountObj: any = {};
+                if (res?.data?.reward) {
+                    res?.data?.reward.forEach((item: any) => {
+                        amountObj[`coin_${item.coin_type}`] = formatAmount(item.amount);
+                    });
+                }
+                if (res?.data?.extra_reward) {
+                    res?.data?.extra_reward.forEach((item: any) => {
+                        amountObj[`coin_${item.coin_type}`] = formatAmount(
+                            new BigNumber(amountObj[`coin_${item.coin_type}`] || 0)
+                                .plus(item.amount)
+                                .toString()
+                        );
+                    });
+                }
+                setAmount(amountObj);
+                setVisible(true);
+                getData();
+            } else {
+                throw new Error(t(`code.400`));
+            }
+        } catch (error: any) {
+            if (error) {
+                Toast.show({
+                    content: error.message || error.toString(),
+                    maskClickable: false,
+                });
+            }
+        }
+    };
 
     return (
         <div className={styles.fissionPage}>
@@ -158,8 +247,14 @@ const Page: React.FC = () => {
                         <div>
                             <div>Meus subordinados diretos</div>
                             <div>
-                                <span className="text-[#ffae00]">0Pessoa </span>
-                                (Válido <span className="text-[#ffae00]">0Pessoa</span>)
+                                <span className="text-[#ffae00]">
+                                    {data?.list?.count || 0}Pessoa{" "}
+                                </span>
+                                (Válido{" "}
+                                <span className="text-[#ffae00]">
+                                    {data?.list?.count || 0}Pessoa Pessoa
+                                </span>
+                                )
                             </div>
                         </div>
                         <div
@@ -171,15 +266,21 @@ const Page: React.FC = () => {
                     </div>
 
                     <div className={clsx("mb-[.1rem] flex flex-row flex-wrap justify-start")}>
-                        <Item></Item>
-                        <Item></Item>
-                        <Item type={"shake"}></Item>
-                        <Item></Item>
-                        <Item></Item>
-                        <Item></Item>
-                        <Item></Item>
-                        <Item></Item>
-                        <Item></Item>
+                        {!!list.length &&
+                            list.map((item: PromoterItem, idx: number) => {
+                                return (
+                                    <Item
+                                        key={item.id}
+                                        data={item}
+                                        hasArrow={idx < list.length - 1}
+                                        onClaim={doClaim}
+                                    ></Item>
+                                );
+                            })}
+                        {!!list.length &&
+                            Array.from({ length: list.length % 4 }, () => 4).map((item, index) => {
+                                return <Item key={index} hasArrow={false}></Item>;
+                            })}
                     </div>
 
                     <div className={clsx(styles.box, "p-[.1rem]")}>
@@ -190,27 +291,37 @@ const Page: React.FC = () => {
                         <div className={styles.hr}></div>
                         <div className="flex flex-row items-center justify-between">
                             <div>Primeiro depósito do subordinado</div>
-                            <div className="text-[#2dd0df]">≥0,00</div>
+                            <div className="text-[#2dd0df]">
+                                ≥{data?.list?.condition?.first_pay_num || "0.00"}
+                            </div>
                         </div>
                         <div className={styles.hr}></div>
                         <div className="flex flex-row items-center justify-between">
                             <div>Depositos acumulados do subordinado</div>
-                            <div className="text-[#2dd0df]">≥0,00</div>
+                            <div className="text-[#2dd0df]">
+                                ≥{data?.list?.condition?.total_pay_num || "0.00"}
+                            </div>
                         </div>
                         <div className={styles.hr}></div>
                         <div className="flex flex-row items-center justify-between">
                             <div>quantidade de apostas acumuladas pelo subordinado</div>
-                            <div className="text-[#2dd0df]">≥0,00</div>
+                            <div className="text-[#2dd0df]">
+                                ≥{data?.list?.condition?.total_bet || "0.00"}
+                            </div>
                         </div>
                         <div className={styles.hr}></div>
                         <div className="flex flex-row items-center justify-between">
                             <div>Dias acumulados de depósito do subordinado</div>
-                            <div className="text-[#2dd0df]">≥0,00</div>
+                            <div className="text-[#2dd0df]">
+                                ≥{data?.list?.condition?.total_pay_days || "0"}
+                            </div>
                         </div>
                         <div className={styles.hr}></div>
                         <div className="flex flex-row items-center justify-between">
                             <div>Número acumulado de recargas dos subordinados</div>
-                            <div className="text-[#2dd0df]">≥0,00</div>
+                            <div className="text-[#2dd0df]">
+                                ≥{data?.list?.condition?.total_pay_times || "0"}
+                            </div>
                         </div>
                     </div>
                     <div
@@ -261,6 +372,12 @@ const Page: React.FC = () => {
                     </div>
                 </div>
             </div>
+            <GlobalNotify
+                amount={amount}
+                visible={visible}
+                onChange={() => setVisible(false)}
+                deraction={5000}
+            ></GlobalNotify>
         </div>
     );
 };

+ 33 - 11
src/app/[locale]/(doings)/fission/detail/page.tsx

@@ -1,9 +1,12 @@
 "use client";
+import { ChildItem, getPromoteList } from "@/api/activity";
+import { formatAmount } from "@/utils";
 import { Button, DotLoading, InfiniteScroll, Input, List } from "antd-mobile";
-
 import clsx from "clsx";
-import { useState } from "react";
+import dayjs from "dayjs";
+import React, { useState } from "react";
 import styles from "./page.module.scss";
+
 const InfiniteScrollContent = ({ hasMore }: { hasMore?: boolean }) => {
     return (
         <>
@@ -20,12 +23,23 @@ const InfiniteScrollContent = ({ hasMore }: { hasMore?: boolean }) => {
 };
 
 const Detail = () => {
-    const [data, setData] = useState<(string | number)[]>([]);
+    const [data, setData] = useState<ChildItem[]>([]);
     const [hasMore, setHasMore] = useState(true);
     async function loadMore() {
-        setData((val) => [...val, ...[1, 2, 3, 4, 5, 6, 7]]);
+        getData();
         setHasMore(true);
     }
+
+    React.useEffect(() => {
+        getData();
+    }, []);
+    const getData = async () => {
+        const res = await getPromoteList();
+        if (res.code === 200) {
+            setData(res.data);
+        }
+    };
+
     return (
         <div className={styles.detail}>
             <div className={clsx("m-[.15rem] flex items-center", styles.searchbox)}>
@@ -39,20 +53,28 @@ const Detail = () => {
             <div className={styles.container}>
                 <div className={clsx(styles.item)}>
                     <div>Tempo</div>
-                    <div>ID do membro</div>
+                    <div>
+                        ID do <br /> membro
+                    </div>
                     <div>Valor do depósito</div>
                     <div>Número de depósitos</div>
-                    <div>Número de depósitos</div>
+                    <div>
+                        Apostas <br /> Válidas
+                    </div>
                 </div>
                 <List>
                     {data.map((item, index) => (
                         <List.Item key={index}>
                             <div className={clsx(styles.item)}>
-                                <div>2025/04/23 14:46:23</div>
-                                <div>100,00R$</div>
-                                <div className="text-[#309a1f_!important]">100,00R$</div>
-                                <div>100,00R$</div>
-                                <div>100,00R$</div>
+                                <div>
+                                    {dayjs(item.create_at * 1000).format("YYYY-MM-DD HH:mm:ss")}
+                                </div>
+                                <div>{item.renter_uid}</div>
+                                <div className="text-[#309a1f_!important]">
+                                    {formatAmount(item.deposit)}R$
+                                </div>
+                                <div>{item.deposit_time}</div>
+                                <div>{item.to_day_pay_times}</div>
                             </div>
                         </List.Item>
                     ))}

+ 897 - 0
src/mock/activety.ts

@@ -0,0 +1,897 @@
+export const getContinuousInfo = () => {
+    return {
+        code: 200,
+        msg: "",
+        data: {
+            id: 1,
+            name: "连续充值",
+            type: 11,
+            act_time_type: 2,
+            start_at: 1745740859,
+            end_at: 1745840859,
+            display_start_time: 1745740859,
+            display_end_time: 1745840859,
+            list: {
+                stage: [
+                    {
+                        id: 2,
+                        days: 1,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 0,
+                        target_reward: 0,
+                        diff_num: 50,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 3,
+                        days: 1,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 0,
+                        target_reward: 0,
+                        diff_num: 100,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 4,
+                        days: 1,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 0,
+                        target_reward: 0,
+                        diff_num: 200,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 1,
+                        days: 1,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 0,
+                        target_reward: 0,
+                        diff_num: 10,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                ],
+                list: {
+                    "1": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 1,
+                            pay_num: 899,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "2": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 1,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "3": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "4": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "5": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "6": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "7": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "8": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "9": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "10": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "11": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "12": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "13": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "14": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "15": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "16": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "17": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "18": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "19": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "20": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "21": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "22": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "23": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "24": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "25": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "26": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "27": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "28": {
+                        "1": {
+                            id: 1,
+                            days: 0,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 0,
+                            target_reward: 0,
+                            diff_num: 0,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                },
+                reward_list: {
+                    "7": {
+                        "1": {
+                            id: 1,
+                            days: 7,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 10,
+                            target_reward: 10,
+                            diff_num: 10,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "2": {
+                            id: 2,
+                            days: 7,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 50,
+                            target_reward: 20,
+                            diff_num: 50,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "3": {
+                            id: 3,
+                            days: 7,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 100,
+                            target_reward: 30,
+                            diff_num: 100,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "4": {
+                            id: 4,
+                            days: 7,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 200,
+                            target_reward: 40,
+                            diff_num: 200,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "14": {
+                        "1": {
+                            id: 1,
+                            days: 14,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 10,
+                            target_reward: 10,
+                            diff_num: 10,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "2": {
+                            id: 2,
+                            days: 14,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 50,
+                            target_reward: 20,
+                            diff_num: 50,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "3": {
+                            id: 3,
+                            days: 14,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 100,
+                            target_reward: 30,
+                            diff_num: 100,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "4": {
+                            id: 4,
+                            days: 14,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 200,
+                            target_reward: 40,
+                            diff_num: 200,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "21": {
+                        "1": {
+                            id: 1,
+                            days: 21,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 10,
+                            target_reward: 10,
+                            diff_num: 10,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "2": {
+                            id: 2,
+                            days: 21,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 50,
+                            target_reward: 20,
+                            diff_num: 50,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "3": {
+                            id: 3,
+                            days: 21,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 100,
+                            target_reward: 30,
+                            diff_num: 100,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "4": {
+                            id: 4,
+                            days: 21,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 200,
+                            target_reward: 40,
+                            diff_num: 200,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                    "28": {
+                        "1": {
+                            id: 1,
+                            days: 28,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 10,
+                            target_reward: 10,
+                            diff_num: 10,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "2": {
+                            id: 2,
+                            days: 28,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 50,
+                            target_reward: 20,
+                            diff_num: 50,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "3": {
+                            id: 3,
+                            days: 28,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 100,
+                            target_reward: 30,
+                            diff_num: 100,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                        "4": {
+                            id: 4,
+                            days: 28,
+                            is_sign: 0,
+                            pay_num: 0,
+                            target_num: 200,
+                            target_reward: 40,
+                            diff_num: 200,
+                            is_suss: 0,
+                            start_at: 0,
+                            end_at: 0,
+                            claim_time: 0,
+                        },
+                    },
+                },
+                config_list: [
+                    {
+                        id: 2,
+                        days: 7,
+                        is_sign: 1,
+                        pay_num: 0,
+                        target_num: 10,
+                        target_reward: 10,
+                        diff_num: 10,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 1745830840,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 1,
+                        days: 14,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 10,
+                        target_reward: 10,
+                        diff_num: 10,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 1,
+                        days: 21,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 10,
+                        target_reward: 10,
+                        diff_num: 10,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                    {
+                        id: 1,
+                        days: 28,
+                        is_sign: 0,
+                        pay_num: 0,
+                        target_num: 10,
+                        target_reward: 10,
+                        diff_num: 10,
+                        is_suss: 0,
+                        start_at: 0,
+                        end_at: 0,
+                        claim_time: 0,
+                    },
+                ],
+            },
+            act_page: 0,
+            background_type: 1,
+            Background: "",
+            act_promotion_url: "",
+            pay_amount: 0,
+            total_bet: 0,
+            reward: 0,
+            cur_num: 18,
+            tally_time: 0,
+            is_op: false,
+            remark: "",
+        },
+    };
+};
+
+export const getPromoterInfo = () => {
+    return {
+        code: 200,
+        msg: "",
+        data: {
+            id: 2,
+            name: "代理宝箱",
+            type: 12,
+            act_time_type: 2,
+            start_at: 1745740859,
+            end_at: 1745840859,
+            display_start_time: 1745740859,
+            display_end_time: 1745840859,
+            list: {
+                count: 1,
+                condition: {
+                    first_pay_num: 0,
+                    total_pay_num: 30,
+                    total_bet: 1000,
+                    total_pay_days: 2,
+                    total_pay_times: 2,
+                },
+                conf: [
+                    {
+                        id: 1,
+                        coin_type: 1,
+                        target_num: 1,
+                        num: 30,
+                        claim_time: 1745831010,
+                        is_suss: true,
+                        is_unlock: false,
+                        img: "",
+                    },
+                    {
+                        id: 2,
+                        coin_type: 1,
+                        target_num: 2,
+                        num: 60,
+                        claim_time: 0,
+                        is_suss: false,
+                        is_unlock: true,
+                        img: "",
+                    },
+                    {
+                        id: 3,
+                        coin_type: 1,
+                        target_num: 3,
+                        num: 100,
+                        claim_time: 0,
+                        is_suss: false,
+                        is_unlock: false,
+                        img: "",
+                    },
+                    {
+                        id: 4,
+                        coin_type: 1,
+                        target_num: 5,
+                        num: 310,
+                        claim_time: 0,
+                        is_suss: false,
+                        is_unlock: false,
+                        img: "",
+                    },
+                    {
+                        id: 5,
+                        coin_type: 1,
+                        target_num: 10,
+                        num: 660,
+                        claim_time: 0,
+                        is_suss: false,
+                        is_unlock: false,
+                        img: "",
+                    },
+                    {
+                        id: 6,
+                        coin_type: 1,
+                        target_num: 15,
+                        num: 1100,
+                        claim_time: 0,
+                        is_suss: false,
+                        is_unlock: false,
+                        img: "",
+                    },
+                ],
+            },
+            act_page: 0,
+            background_type: 1,
+            Background: "",
+            act_promotion_url: "",
+            pay_amount: 0,
+            total_bet: 0,
+            reward: 0,
+            cur_num: 1,
+            tally_time: 0,
+            is_op: false,
+            remark: "",
+        },
+    };
+};
+
+export const getPromotChild = () => {
+    return {
+        code: 200,
+        msg: "",
+        data: [
+            {
+                create_at: 1745828539,
+                renter_uid: "1000010000241",
+                first_pay_deposit: 0,
+                first_pay_at: 0,
+                deposit: 6000,
+                deposit_time: 2,
+                to_day_pay_times: 2,
+                total_bet: 73000,
+                activity_mp: null,
+            },
+        ],
+    };
+};