From 9b47d54a72046f3926c5620bfd4c836db5c61147 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 12 九月 2025 13:32:24 +0800
Subject: [PATCH] feat: 公告

---
 apps/taro/src/hooks/lifepay.ts |   68 +++++++++++++++++++++++++++++++++
 1 files changed, 67 insertions(+), 1 deletions(-)

diff --git a/apps/taro/src/hooks/lifepay.ts b/apps/taro/src/hooks/lifepay.ts
index 28090cd..eb019fa 100644
--- a/apps/taro/src/hooks/lifepay.ts
+++ b/apps/taro/src/hooks/lifepay.ts
@@ -1,6 +1,12 @@
 import { useQuery } from '@tanstack/vue-query';
-import { useLifeRechargeContext, CreateEditPayChannelsInput } from '@life-payment/core-vue';
+import {
+  useLifeRechargeContext,
+  CreateEditPayChannelsInput,
+  GetShowingLifePayAnnouncementInput,
+} from '@life-payment/core-vue';
 import { MaybeRef } from 'vue';
+import { Message } from '@/utils';
+import Taro from '@tarojs/taro';
 
 export function useOnlineService() {
   const { blLifeRecharge } = useLifeRechargeContext();
@@ -60,3 +66,63 @@
     getChannlesNameByNum,
   };
 }
+
+type UseShowingLifePayAnnouncementOptions = {
+  params?: MaybeRef<API.GetShowingLifePayAnnouncementInput>;
+  onSuccess?: (data: API.CreateEditLifePayAnnouncementOutput) => any;
+  staleTime?: MaybeRef<number>;
+};
+
+export function useShowingLifePayAnnouncement(options: UseShowingLifePayAnnouncementOptions = {}) {
+  const { onSuccess, params = {}, staleTime } = options;
+
+  const { blLifeRecharge } = useLifeRechargeContext();
+
+  const {
+    data: announcement,
+    isLoading,
+    refetch,
+  } = useQuery({
+    queryKey: ['blLifeRecharge/getShowingLifePayAnnouncement', params],
+    queryFn: async () => {
+      return await blLifeRecharge.services.getShowingLifePayAnnouncement(unref(params), {
+        showLoading: false,
+        skipErrorHandler: true,
+      });
+    },
+    onSuccess: (data) => {
+      onSuccess?.(data);
+    },
+    staleTime: staleTime,
+  });
+
+  return {
+    announcement,
+    isLoading,
+    refetch,
+  };
+}
+
+const dialogShowingLifePayAnnouncementCache = {};
+
+export function useDialogShowingLifePayAnnouncement() {
+  const { blLifeRecharge } = useLifeRechargeContext();
+  const router = Taro.useRouter();
+
+  useShowingLifePayAnnouncement({
+    params: {
+      announcementType: blLifeRecharge.constants.AnnouncementTypeEnum.Dialog,
+    },
+    onSuccess(data) {
+      if (!dialogShowingLifePayAnnouncementCache[router.path]) {
+        dialogShowingLifePayAnnouncementCache[router.path] = true;
+        Message.confirm({
+          title: '鍏憡',
+          message: data.announcementContent ?? '',
+          showCancelBtn: false,
+        });
+      }
+    },
+    staleTime: Infinity,
+  });
+}

--
Gitblit v1.9.1