From 5088bcce733820093f565616f5d8767805e66bf7 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Fri, 5 Sep 2025 09:42:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=9A=E6=8A=80=E5=B8=88=E7=9A=84=E8=AF=A6=E7=BB=86=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/data/GirlData.ts | 21 +++++++++++++++++++ .../chat18x/ui/panels/GirlDetailPanel.ts | 6 ++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/assets/Scripts/chat18x/data/GirlData.ts b/assets/Scripts/chat18x/data/GirlData.ts index 4669df19..f10e0cd0 100644 --- a/assets/Scripts/chat18x/data/GirlData.ts +++ b/assets/Scripts/chat18x/data/GirlData.ts @@ -183,6 +183,27 @@ export class GirlData extends BaseData { return oneData.category; } + /** 获取主题枚举,根据 id */ + public getGrilCategoryById(girlId: number): number { + const cats = this.ensureCategories(); + + for (const bucket of cats.values()) { + // 先查简要信息 + const brief = bucket.briefs.get(girlId); + if (brief && brief.category) { + return brief.category; + } + // 兜底:若只缓存了详情,也从详情里的 brief 取 + const detail = bucket.details.get(girlId); + if (detail?.brief && typeof detail.brief.category) { + return detail.brief.category; + } + } + + // 未找到 + return 0; + } + /** 获取list头像路径 */ public getGrilListAvatar(categoryId: string, girlId: number): string { let oneData = this.getGrilBrief(categoryId, girlId); diff --git a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts index ba95508b..f82f19d3 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts @@ -137,9 +137,8 @@ export class GirlDetailPanel extends li_BaseView { tagKey: string; category: number; async refresh(index: number) { - // TODO,暂时这样获取,修改后从GirlData获取 - const girlConfig = ConfigManager.tables.TbGirls.get(this.id); - this.category = girlConfig.category; + const girlData = DataManager.I.getDataById(DataId.Girl); + this.category = girlData.getGrilCategoryById(this.id); // 请求详细数据 const reqData = { id: this.id, @@ -147,7 +146,6 @@ export class GirlDetailPanel extends li_BaseView { let res = await GirlService.I.reqGetGirlDetail(reqData); if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { // 保存数据 - const girlData = DataManager.I.getDataById(DataId.Girl); girlData.setGirlDetails(this.category.toString(), res.data); // 根据数据,刷新界面 this.nameKey = girlData.getGrilName(this.category.toString(), this.id); From 5821bc17ae411226355577bb1c342e57ac3cf621 Mon Sep 17 00:00:00 2001 From: chen wei bo <1025839511@qq.com> Date: Fri, 5 Sep 2025 10:56:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Scripts/chat18x/core/RoleConfigLoader.ts | 4 ++-- assets/Scripts/chat18x/data/GirlData.ts | 9 +++++++-- assets/Scripts/chat18x/payment/PaymentOpener.ts | 3 +-- assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts | 1 - assets/Scripts/chat18x/uiitems/DetailImageItem.ts | 1 - assets/Scripts/chat18x/uiitems/GirlListItem.ts | 2 +- assets/Scripts/chat18x/uiitems/ThemeItem.ts | 1 - 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/assets/Scripts/chat18x/core/RoleConfigLoader.ts b/assets/Scripts/chat18x/core/RoleConfigLoader.ts index 35fb9019..d6344572 100644 --- a/assets/Scripts/chat18x/core/RoleConfigLoader.ts +++ b/assets/Scripts/chat18x/core/RoleConfigLoader.ts @@ -1,4 +1,4 @@ -import { AiCharacter } from "../../schema/schema"; +import { AiCharacters } from "../../schema/schema"; import { ConfigManager } from "../manager/ConfigManager"; /** @@ -46,7 +46,7 @@ export class RoleConfigLoader { /** * 获取所有配置的角色ID */ - public static getAllRoles(): AiCharacter[] { + public static getAllRoles(): AiCharacters[] { return ConfigManager.tables.TbAiCharacters.getDataList(); } } diff --git a/assets/Scripts/chat18x/data/GirlData.ts b/assets/Scripts/chat18x/data/GirlData.ts index f10e0cd0..24755002 100644 --- a/assets/Scripts/chat18x/data/GirlData.ts +++ b/assets/Scripts/chat18x/data/GirlData.ts @@ -67,11 +67,16 @@ export class GirlData extends BaseData { let allData = this.parseAllGirlBrief(respOrList); if (!allData) return; const bucket = this.ensureBucket(categoryId); + // 用一个临时 Set 保存已有的 id,加速去重 + const existed = new Set(bucket.girlIds); for (const g of allData) { const id = g.id; bucket.briefs.set(id, g); - // TODO,去重 - bucket.girlIds.push(id); + // 去重 + if (!existed.has(id)) { + bucket.girlIds.push(id); + existed.add(id); + } } console.log("保存技师的简要数据: ", bucket); } diff --git a/assets/Scripts/chat18x/payment/PaymentOpener.ts b/assets/Scripts/chat18x/payment/PaymentOpener.ts index efa8adf7..4cdcba68 100644 --- a/assets/Scripts/chat18x/payment/PaymentOpener.ts +++ b/assets/Scripts/chat18x/payment/PaymentOpener.ts @@ -21,8 +21,7 @@ class SystemBrowserOpener implements IPaymentOpener { // 如需内嵌 WebView,可封装一个组件并在 open 里显示;此处给空壳 class InAppWebViewOpener implements IPaymentOpener { async open(url: string) { - // TODO: 实现你的 WebView 弹窗并加载 url;可拦截 redirect_uri 关闭弹窗 - sys.openURL(url); // 临时:用系统浏览器兜底 + sys.openURL(url); // 系统浏览器 } canReturnSignal() { return true; } // 拦截回跳时可立即开始轮询 } diff --git a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts index f82f19d3..fcd82df0 100644 --- a/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts +++ b/assets/Scripts/chat18x/ui/panels/GirlDetailPanel.ts @@ -16,7 +16,6 @@ import LanguageUtils from "../../../Main/Common/LanguageUtils"; import Utils from "../../../Main/Common/Utils"; import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode"; import { SimpleToggle } from "../components/SimpleToggle"; -import { GirlDetail, purchase } from "../../../schema/schema"; import { DataManager, DataId } from "../../data/DataManager"; import { GirlData } from "../../data/GirlData"; import { GirlService } from "db://assets/Scripts/chat18x/network/services/GirlService"; diff --git a/assets/Scripts/chat18x/uiitems/DetailImageItem.ts b/assets/Scripts/chat18x/uiitems/DetailImageItem.ts index 3eb5c19f..91d87199 100644 --- a/assets/Scripts/chat18x/uiitems/DetailImageItem.ts +++ b/assets/Scripts/chat18x/uiitems/DetailImageItem.ts @@ -4,7 +4,6 @@ import ResManager from "db://assets/Scripts/Main/Manager/ResManager"; import { ViewManager } from "db://assets/Scripts/Main/Manager/ViewManager"; import { GButton } from "db://assets/Scripts/Main/Common/GButton"; import { GirlDetailPanel } from "../ui/panels/GirlDetailPanel"; -import { purchase } from "../../schema/schema"; import proto from 'db://assets/Scripts/proto/proto.pb.js'; import { DataManager, DataId } from "../data/DataManager"; import { GirlData } from "../data/GirlData"; diff --git a/assets/Scripts/chat18x/uiitems/GirlListItem.ts b/assets/Scripts/chat18x/uiitems/GirlListItem.ts index 185f0505..69861e39 100644 --- a/assets/Scripts/chat18x/uiitems/GirlListItem.ts +++ b/assets/Scripts/chat18x/uiitems/GirlListItem.ts @@ -4,7 +4,7 @@ import { ViewManager } from "db://assets/Scripts/Main/Manager/ViewManager"; import ResManager from "db://assets/Scripts/Main/Manager/ResManager"; import Utils from "db://assets/Scripts/Main/Common/Utils"; import { NavigationManager } from "../manager/NavigationManager"; -import { Girl, PriceType } from "../../schema/schema"; +import { PriceType } from "../../schema/schema"; import LanguageUtils from "../../Main/Common/LanguageUtils"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { DataManager, DataId } from "../data/DataManager"; diff --git a/assets/Scripts/chat18x/uiitems/ThemeItem.ts b/assets/Scripts/chat18x/uiitems/ThemeItem.ts index 98a668a4..d9a212bc 100644 --- a/assets/Scripts/chat18x/uiitems/ThemeItem.ts +++ b/assets/Scripts/chat18x/uiitems/ThemeItem.ts @@ -3,7 +3,6 @@ import { GButton } from "db://assets/Scripts/Main/Common/GButton"; import ResManager from "db://assets/Scripts/Main/Manager/ResManager"; import Utils from "db://assets/Scripts/Main/Common/Utils"; import { NavigationManager } from "../manager/NavigationManager"; -import { TbThemes, Theme } from "../../schema/schema"; import LanguageUtils from "../../Main/Common/LanguageUtils"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { DataManager, DataId } from "../data/DataManager";