From da8ba158da20c9251025753e4b0bf172a52c5ade Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 13 五月 2026 17:38:11 +0800
Subject: [PATCH] 638 VIP专属客服

---
 Main/System/SuperVIP/SuperVIPWin.cs.meta     |   11 +++
 Main/System/SuperVIP/SuperVIPWin.cs          |   45 +++++++++++++++
 Main/System/SuperVIP/SuperVipManager.cs      |   35 +++++++++++
 Main/System/Main/RightFuncInHome.cs          |   15 ++++
 Main/Main.cs                                 |    2 
 Main/System/SuperVIP.meta                    |    8 ++
 Main/System/SuperVIP/SuperVipManager.cs.meta |   11 +++
 7 files changed, 125 insertions(+), 2 deletions(-)

diff --git a/Main/Main.cs b/Main/Main.cs
index 7c58da3..f2c56e5 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -122,6 +122,8 @@
         managers.Add(FestivalActivityRechargeTotDayManager.Instance);
         managers.Add(FestivalActivityCheckInManager.Instance);
         managers.Add(FestivalActivityMissionManager.Instance);
+        managers.Add(SuperVipManager.Instance);
+
 
         foreach (var manager in managers)
         {
diff --git a/Main/System/Main/RightFuncInHome.cs b/Main/System/Main/RightFuncInHome.cs
index 7b05a29..8a90497 100644
--- a/Main/System/Main/RightFuncInHome.cs
+++ b/Main/System/Main/RightFuncInHome.cs
@@ -19,6 +19,7 @@
     [SerializeField] Button signBtn;
     [SerializeField] Button previewBtn;
     [SerializeField] Button reviewBtn; //濂借瘎
+    [SerializeField] Button superVIPBtn;
 
     static string listenWindowName = "";   //鐩戝惉鍏抽棴鏃跺啀鏄剧ず
 
@@ -93,8 +94,12 @@
         {
             UIManager.Instance.OpenWindow<GoodReviewWin>();
         });
+        superVIPBtn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindow<SuperVIPWin>();
+        });
     }
-    
+
     void OnDestroy()
     {
         UIManager.Instance.OnCloseWindow -= OnCloseWindow;
@@ -111,8 +116,14 @@
         monthCardBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.PrivilegeCard));
         previewBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.FunctionPreview));
         reviewBtn.SetActive(SmallFuncManager.Instance.IsReviewOpen());
+        DisplaySuperVipBtn();
     }
-
+    
+    void DisplaySuperVipBtn()
+    {
+        bool isOpen = SuperVipManager.Instance.IsEntryOpen();
+        superVIPBtn.SetActive(isOpen);
+    }
 
     //鏄鹃殣鍔熻兘鏍�
     public void ShowFuncCol(bool _isShow)
diff --git a/Main/System/SuperVIP.meta b/Main/System/SuperVIP.meta
new file mode 100644
index 0000000..2855f4d
--- /dev/null
+++ b/Main/System/SuperVIP.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ac4a464f1ab9e5b4b9d48b510bf810f5
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/SuperVIP/SuperVIPWin.cs b/Main/System/SuperVIP/SuperVIPWin.cs
new file mode 100644
index 0000000..cf6cf47
--- /dev/null
+++ b/Main/System/SuperVIP/SuperVIPWin.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+public class SuperVIPWin : UIBase
+{
+    [SerializeField] ItemCell[] itemCells;
+    [SerializeField] ButtonEx closeBtn;
+    SuperVipManager manager => SuperVipManager.Instance;
+
+    protected override void InitComponent()
+    {
+        closeBtn.SetListener(CloseWindow);
+
+    }
+
+    protected override void OnPreOpen()
+    {
+        DisplayRewards();
+    }
+
+    protected override void OnPreClose()
+    {
+    }
+
+    void DisplayRewards()
+    {
+        var rewards = manager.customerServiceRewards;
+        if (rewards == null) return;
+
+        for (int i = 0; i < itemCells.Length; i++)
+        {
+            if (i < rewards.Length)
+            {
+                itemCells[i].SetActive(true);
+                int itemID = rewards[i][0];
+                long count = rewards[i][1];
+                itemCells[i].Init(new ItemCellModel(itemID, false, count));
+                itemCells[i].button.SetListener(() => ItemTipUtility.Show(itemID));
+            }
+            else
+            {
+                itemCells[i].SetActive(false);
+            }
+        }
+    }
+}
diff --git a/Main/System/SuperVIP/SuperVIPWin.cs.meta b/Main/System/SuperVIP/SuperVIPWin.cs.meta
new file mode 100644
index 0000000..c46a48f
--- /dev/null
+++ b/Main/System/SuperVIP/SuperVIPWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bd161ea74bfffe74dbefbf3b27562e98
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/SuperVIP/SuperVipManager.cs b/Main/System/SuperVIP/SuperVipManager.cs
new file mode 100644
index 0000000..c44be4e
--- /dev/null
+++ b/Main/System/SuperVIP/SuperVipManager.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using LitJson;
+
+public class SuperVipManager : GameSystemManager<SuperVipManager>
+{
+    /// <summary>娓犻亾闂ㄦ閰嶇疆 {娓犻亾鍚�: 绱厖閲戦/鍏儅</summary>
+    public Dictionary<string, int> channelThresholdDict = new Dictionary<string, int>();
+    /// <summary>瀹㈡湇棰嗗彇濂栧姳鍒楄〃 [[鐗╁搧ID, 涓暟], ...]</summary>
+    public int[][] customerServiceRewards;
+
+    public override void Init()
+    {
+        var config = FuncConfigConfig.Get("SuperVIP");
+        channelThresholdDict = JsonMapper.ToObject<Dictionary<string, int>>(config.Numerical1);
+        customerServiceRewards = JsonMapper.ToObject<int[][]>(config.Numerical2);
+    }
+
+    public override void Release()
+    {
+
+    }
+
+    /// <summary>
+    /// 鍒ゅ畾SuperVIP鍏ュ彛鏄惁寮�鍚�
+    /// 鏉′欢: 褰撳墠娓犻亾鍦ㄩ厤缃〃涓� 涓� 鍘嗗彶绱厖 >= 閰嶇疆闂ㄦ(鍏�) * 100
+    /// </summary>
+    public bool IsEntryOpen()
+    {
+        var appId = VersionConfig.Get().appId;
+        if (!channelThresholdDict.TryGetValue(appId, out var thresholdYuan))
+            return false;
+        return RechargeManager.Instance.realRecharge >= thresholdYuan * 100;
+    }
+}
diff --git a/Main/System/SuperVIP/SuperVipManager.cs.meta b/Main/System/SuperVIP/SuperVipManager.cs.meta
new file mode 100644
index 0000000..da7dde4
--- /dev/null
+++ b/Main/System/SuperVIP/SuperVipManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 92cc6ff4738f597499bc9e243696f16c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0