获取所有已经有过聊天记录的技师 id

This commit is contained in:
chen wei bo
2025-10-13 17:17:58 +08:00
parent 4953b86bb3
commit 43815acef2
2 changed files with 52 additions and 0 deletions
@@ -166,6 +166,13 @@ export class GirlChatData extends BaseData {
return this.chatRecordIds;
}
/** 是否已经有过聊天记录 */
public isAlreadyChat(): boolean {
const hasIds = this.chatRecordIds && this.chatRecordIds.length > 0;
const hasRecords = this.chatRecord && this.chatRecord.size > 0;
return hasIds || hasRecords;
}
/** 获取最新的聊天记录的id */
public getLatestChatRecordId(): number | null {
if (this.chatRecordIds.length === 0) return null;
+45
View File
@@ -1279,6 +1279,16 @@ export class GirlData extends BaseData {
return oneData.getChatRecordIds();
}
/** 是否已经有过聊天记录 */
public isAlreadyChat(
categoryId: string,
girlId: number
): boolean {
let oneData = this.getGrilChat(categoryId, girlId);
if (!oneData) return false;
return oneData.isAlreadyChat();
}
/** 获取最新的聊天记录的id */
public getLatestChatRecordId(
categoryId: string,
@@ -1380,6 +1390,41 @@ export class GirlData extends BaseData {
return result;
}
/** 获取所有已经有过聊天记录的技师 id */
public getAllAlreadyChatGirlIds(): number[] {
const result: number[] = [];
const seen = new Set<number>(); // 用来去重
const cats = this.ensureCategories();
// 遍历
for (const [categoryId, bucket] of cats.entries()) {
for (const girlId of bucket.girlIds) {
if (this.isAlreadyChat(categoryId, girlId) && !seen.has(girlId)) {
seen.add(girlId); // 标记已加入
result.push(girlId);
}
}
}
// 排序
// 1,按照聊天时间从近到远
result.sort((a, b) => {
const categoryIdA = this.getGrilCategoryById(a);
const categoryIdB = this.getGrilCategoryById(b);
// 先取最新聊天时间戳
const tsA = this.getLatestChatRecordTimestamp(categoryIdA.toString(), a);
const tsB = this.getLatestChatRecordTimestamp(categoryIdB.toString(), b);
if (tsA && tsB) {
// 都有聊天记录,按时间倒序
return tsB - tsA;
} else {
return -1;
}
});
// 返回结果
return result;
}
/** --------------------------------------------------------- 技师的好感度数据 --------------------------------------------------------- */
// 创建一个技师好感度数据