/** * 技师的详细数据 */ import { BaseData } from "./BaseData"; import proto from 'db://assets/Scripts/proto/proto.pb.js'; export class GirlDetailData extends BaseData { // id private id: number; // 自我介绍 private detailDesc: string; // 图片数据 private photoData: proto.cs.IPurchaseCommercialImage[]; // 视频数据 private videoData: proto.cs.IPurchaseCommercialVideo[]; constructor() { super(); this.id = 0; this.detailDesc = ""; this.photoData = []; this.videoData = []; } public reset(): void { this.id = 0; this.detailDesc = ""; this.photoData = []; this.videoData = []; } public clear(): void { this.id = 0; this.detailDesc = ""; this.photoData = []; this.videoData = []; } public destroy(): void { super.destroy(); this.id = null; this.detailDesc = null; this.photoData = null; this.videoData = null; } /** 保存数据 */ public setData(data: proto.cs.IGirlsDetail): void { if (!data) return; this.id = data.id; this.detailDesc = data.detailDesc; this.photoData = this.parseAllGirlPhoto(data.commercialImages); this.videoData = this.parseAllGirlVideo(data.commercialVideos); } /** 获取 id */ public getId(): number { return this.id; } /** 获取自我介绍 */ public getGirlDesc(): string { return this.detailDesc; } /** --------------------------------------------------------- 图片数据 --------------------------------------------------------- */ // 解析技师图片数据,一个 private parseOneGirlPhoto(data: proto.cs.IPurchaseCommercialImage): proto.cs.IPurchaseCommercialImage | null { if (!data) return null; const oneData: proto.cs.IPurchaseCommercialImage = { id: data.id, // 图片 id imageType: data.imageType, // 图片类型 unlockCounts: data.unlockCounts, // 聊天触发次数 imagePrice: data.imagePrice, // 图片价格 path: data.path, // 图片资源路径 }; return oneData; } // 解析技师图片数据,多个 private parseAllGirlPhoto(data: proto.cs.IPurchaseCommercialImage[]): proto.cs.IPurchaseCommercialImage[] { if (!data) return []; let allData = []; for (const value of data) { const oneData: proto.cs.IPurchaseCommercialImage = this.parseOneGirlPhoto(value); if (oneData) { allData.push(oneData); } } return allData; } /** 获取所有技师图片数据的数量 */ public getAllGrilPhotoDataCount(): number { if (!this.photoData) return 0; return this.photoData.length; } /** 获取所有技师图片数据的id */ public getAllGrilPhotoId(): number[] { if (!this.photoData) return []; // 获取所有 id let allId = []; for (let one of this.photoData) { allId.push(one.id); } return allId; } /** 获取所有技师图片数据的id,展示类型属于在详情页展示 */ public getAllListGrilPhotoId(): number[] { if (!this.photoData) return []; // 筛选出类型为 1 的图片 let listPhotos = this.photoData.filter(photo => photo.imageType === 1); // 按 id 从小到大排序 listPhotos.sort((a, b) => a.id - b.id); // 返回排序后的 id 数组 return listPhotos.map(photo => photo.id); } /** 获取所有技师图片数据的id,展示类型属于在聊天中触发 */ public getAllTriggerGrilPhotoId(): number[] { if (!this.photoData) return []; // 筛选出类型为 2 的图片 let triggerPhotos = this.photoData.filter(photo => photo.imageType === 2); // 按 unlockCounts 从大到小排序 triggerPhotos.sort((a, b) => b.unlockCounts - a.unlockCounts); // 返回排序后的 id 数组 return triggerPhotos.map(photo => photo.id); } /** 获取技师图片数据,通过 id */ private getGrilPhotoData(id: number): proto.cs.IPurchaseCommercialImage | null { if (!this.photoData) return null; // 遍历数组找到匹配的资源 for (let oneData of this.photoData) { if (oneData.id == id) { return oneData; } } return null; } /** 获取技师图片的类型 */ public getGrilPhotoType(id: number): number { let oneData = this.getGrilPhotoData(id); if (!oneData) return 0; return oneData.imageType; } /** 图片展示类型:在详情页展示 */ public isGirlPhotoShowInList(id: number): boolean { let type = this.getGrilPhotoType(id); return type === 1; } /** 图片展示类型:在聊天触发 */ public isGirlPhotoShowInChat(id: number): boolean { let type = this.getGrilPhotoType(id); return type === 2; } /** 获取技师图片的聊天触发次数 */ public getGrilPhotoUnlockCounts(id: number): number { let oneData = this.getGrilPhotoData(id); if (!oneData) return 0; return oneData.unlockCounts; } /** 获取技师图片的价格 */ public getGrilPhotoPrice(id: number): number { let oneData = this.getGrilPhotoData(id); if (!oneData) return 0; return oneData.imagePrice; } /** 获取技师图片的资源路径 */ public getGrilPhotoPath(id: number): string { let oneData = this.getGrilPhotoData(id); if (!oneData) return ""; return oneData.path; } /** --------------------------------------------------------- 视频数据 --------------------------------------------------------- */ // 解析技师视频数据,一个 private parseOneGirlVideo(data: proto.cs.IPurchaseCommercialVideo): proto.cs.IPurchaseCommercialVideo | null { if (!data) return null; const oneData: proto.cs.IPurchaseCommercialVideo = { id: data.id, // 视频 id path: data.path, // 视频资源路径 emotion: data.emotion, // 关联情绪 videoPrice: data.videoPrice, // 价格 }; return oneData; } // 解析技师视频数据,多个 private parseAllGirlVideo(data: proto.cs.IPurchaseCommercialVideo[]): proto.cs.IPurchaseCommercialVideo[] { if (!data) return []; let allData = []; for (const value of data) { const oneData: proto.cs.IPurchaseCommercialVideo = this.parseOneGirlVideo(value); if (oneData) { allData.push(oneData); } } return allData; } /** 获取所有技师视频数据的数量 */ public getAllGrilVideoDataCount(): number { if (!this.videoData) return 0; return this.videoData.length; } /** 获取所有技师视频数据的id */ public getAllGrilVideoId(): number[] { if (!this.videoData) return []; // 获取所有 id let allId = []; for (let one of this.videoData) { allId.push(one.id); } return allId; } /** 获取技师视频数据,通过 id */ private getGrilVideoData(id: number): proto.cs.IPurchaseCommercialVideo | null { if (!this.videoData) return null; // 遍历数组找到匹配的资源 for (let oneData of this.videoData) { if (oneData.id === id) { return oneData; } } return null; } /** 获取技师视频的资源路径 */ public getGrilVideoPath(id: number): string { let oneData = this.getGrilVideoData(id); if (!oneData) return ""; return oneData.path; } /** 获取技师视频的关联情绪 */ public getGrilVideoEmotion(id: number): number { let oneData = this.getGrilVideoData(id); if (!oneData) return 0; return oneData.emotion; } /** 获取技师视频的价格 */ public getGrilVideoPrice(id: number): number { let oneData = this.getGrilVideoData(id); if (!oneData) return 0; return oneData.videoPrice; } }