新增协议:推荐列表

This commit is contained in:
chen wei bo
2025-10-10 18:15:54 +08:00
parent d59eca2a90
commit 46bf60d09d
11 changed files with 257 additions and 35 deletions
+96
View File
@@ -8,6 +8,7 @@ import { GirlUnlockData } from "./GirlUnlockData";
import { GirlChatData } from "./GirlChatData";
import { GirlFavorabilityData } from "./GirlFavorabilityData";
import { GirlRankData } from "./GirlRankData";
import { GirlRecommendData } from "./GirlRecommendData";
import { GirlOtherData } from "./GirlOtherData";
import { DataId } from "./DataManager";
import proto from "db://assets/Scripts/proto/proto.pb.js";
@@ -40,27 +41,34 @@ export class GirlData extends BaseData {
private _categories = new Map<string, CategoryBucket>();
// 排行榜数据
private _rankData: GirlRankData;
// 推荐数据
private _recommendData: GirlRecommendData;
constructor() {
super();
this._rankData = new GirlRankData();
this._rankData.init?.(DataId.GirlRank);
this._recommendData = new GirlRecommendData();
this._recommendData.init?.(DataId.GirlRecommend);
}
public reset(): void {
this._categories.clear();
this._rankData.clear();
this._recommendData.clear();
}
public clear(): void {
this._categories.clear();
this._rankData.clear();
this._recommendData.clear();
}
public destroy(): void {
super.destroy();
this._categories = null;
this._rankData = null;
this._recommendData = null;
}
/** 保障 _categories 存在 */
@@ -90,6 +98,39 @@ export class GirlData extends BaseData {
return bucket;
}
/** 清空分类桶,单个 */
private clearOneBucket(categoryId: string): void {
const cats = this.ensureCategories();
const bucket = cats.get(categoryId);
if (bucket) {
// 清空具体分类的所有数据
bucket.briefs.clear();
bucket.details.clear();
bucket.unlocks.clear();
bucket.chats.clear();
bucket.favorability.clear();
bucket.other.clear();
bucket.girlIds.splice(0); // 使用 splice 清空 girlIds 数组
logger.log(`清空分类桶 ${categoryId}`);
}
}
/** 清空分类桶,所有 */
private clearAllBucket(): void {
const cats = this.ensureCategories();
// 遍历所有分类桶并清空
cats.forEach((bucket, categoryId) => {
bucket.briefs.clear();
bucket.details.clear();
bucket.unlocks.clear();
bucket.chats.clear();
bucket.favorability.clear();
bucket.other.clear();
bucket.girlIds.splice(0); // 使用 splice 清空 girlIds 数组
});
logger.log("清空所有分类桶");
}
/** 取分类下的全部 girlIds(若分类不存在返回空数组) */
public getGirlIds(categoryId: string): number[] {
const b = this.ensureCategories().get(categoryId);
@@ -206,6 +247,61 @@ export class GirlData extends BaseData {
return oneData.getGrilAvatar();
}
/** --------------------------------------------------------- 技师的推荐数据 --------------------------------------------------------- */
/** 清空 推荐数据 */
public clearRecommendData(): void {
if (!this._recommendData) return;
this._recommendData.clear();
}
/** 保存 推荐列表 */
public setRecommendList(data: proto.cs.ICSRecommendRes): void {
if (!data) return;
let arrayData = data.girls;
// 遍历
for (const oneData of arrayData) {
let briefData = oneData.girl;
let categoryId = briefData.category;
this.mergeOneBrief(categoryId.toString(), briefData);
let theArray = [];
theArray.push(oneData);
this.setGirlUnlock(categoryId.toString(), theArray);
this.setGirlFavorability(categoryId.toString(), theArray);
this.setGirlOther(categoryId.toString(), theArray);
}
this._recommendData.setRecommendList(arrayData);
const cats = this.ensureCategories();
logger.log("保存推荐列表后,大分类的数据: ", cats);
}
/** 添加 推荐列表 */
public addRecommendList(data: proto.cs.ICSRecommendRes): void {
if (!data) return;
let arrayData = data.girls;
// 遍历
for (const oneData of arrayData) {
let briefData = oneData.girl;
let categoryId = briefData.category;
this.mergeOneBrief(categoryId.toString(), briefData);
let theArray = [];
theArray.push(oneData);
this.setGirlUnlock(categoryId.toString(), theArray);
this.setGirlFavorability(categoryId.toString(), theArray);
this.setGirlOther(categoryId.toString(), theArray);
}
this._recommendData.addRecommendList(arrayData);
const cats = this.ensureCategories();
logger.log("添加推荐列表后,大分类的数据: ", cats);
}
/** 获取 推荐列表 id */
public getRecommendListIds(): number[] {
if (!this._recommendData) return [];
const ids = this._recommendData.getRecommendListIds();
return ids;
}
/** --------------------------------------------------------- 技师的排行榜数据 --------------------------------------------------------- */
/** 清空 排行榜数据 */