From ca3f7ca57e383decd875dbd6173bd5d9527a78f9 Mon Sep 17 00:00:00 2001 From: Megghy Date: Tue, 12 Mar 2024 00:51:42 +0800 Subject: [PATCH] fix lottery distinct --- src/api/api-models.ts | 1 + src/views/manage/LotteryView.vue | 80 +++++++++++++++++++++++++---- src/views/open_live/OpenLottery.vue | 14 ++--- 3 files changed, 79 insertions(+), 16 deletions(-) diff --git a/src/api/api-models.ts b/src/api/api-models.ts index fce7147..e187fe1 100644 --- a/src/api/api-models.ts +++ b/src/api/api-models.ts @@ -414,6 +414,7 @@ export interface OpenLiveInfo { export interface OpenLiveLotteryUserInfo { name: string uId: number + openId: string level?: number avatar: string fans_medal_level: number diff --git a/src/views/manage/LotteryView.vue b/src/views/manage/LotteryView.vue index ae75f2e..5fba706 100644 --- a/src/views/manage/LotteryView.vue +++ b/src/views/manage/LotteryView.vue @@ -5,6 +5,7 @@ import { QueryGetAPI } from '@/api/query' import { LOTTERY_API_URL, TURNSTILE_KEY } from '@/data/constants' import { useLocalStorage, useStorage } from '@vueuse/core' import { format } from 'date-fns' +import { List } from 'linqts' import { NAvatar, NButton, @@ -151,6 +152,9 @@ async function getCommentsUsers() { ) .then((data) => { if (data.code == 200) { + data.data.users = new List(data.data.users).DistinctBy((u) => u.uId).ToArray() + data.data.total = data.data.users.length + originCommentUsers.value = JSON.parse(JSON.stringify(data.data)) commentUsers.value = data.data isCommentCountDown.value = false @@ -177,6 +181,9 @@ async function getForwardUsers() { ) .then((data) => { if (data.code == 200) { + data.data.users = new List(data.data.users).DistinctBy((u) => u.uId).ToArray() + data.data.total = data.data.users.length + originForwardUsers.value = JSON.parse(JSON.stringify(data.data)) forwardUsers.value = data.data isCommentCountDown.value = false @@ -258,7 +265,12 @@ function onFinishLottery() { h( NSpace, { vertical: true }, - resultUsers.value?.map((user) => h(NSpace, null, [h(NAvatar, { src: user.avatar + '@32w_32h', imgProps: { referrerpolicy: 'no-referrer' } }), h('span', user.name)])), + resultUsers.value?.map((user) => + h(NSpace, null, [ + h(NAvatar, { src: user.avatar + '@32w_32h', imgProps: { referrerpolicy: 'no-referrer' } }), + h('span', user.name), + ]), + ), ), meta: format(new Date(), 'yyyy-MM-dd HH:mm:ss'), onAfterLeave: () => { @@ -321,7 +333,12 @@ onUnmounted(() => { - + @@ -358,13 +381,26 @@ onUnmounted(() => {
- 加载用户 - + + 加载用户 + +
- 开始抽取 + + 开始抽取 + 重置 共 {{ validUsers?.length }} 人 @@ -373,12 +409,34 @@ onUnmounted(() => { diff --git a/src/views/open_live/OpenLottery.vue b/src/views/open_live/OpenLottery.vue index cb05651..f0f826e 100644 --- a/src/views/open_live/OpenLottery.vue +++ b/src/views/open_live/OpenLottery.vue @@ -121,10 +121,10 @@ function updateUsers() { }) } function addUser(user: OpenLiveLotteryUserInfo, danmu: any) { - if (originUsers.value.find((u) => u.uId == user.uId) || !isStartLottery.value) { + if (originUsers.value.find((u) => u.openId == user.openId) || !isStartLottery.value) { return } - if (isUserValid(user, danmu)) { + if (isUserValid(user, danmu) && !originUsers.value.find((u) => u.openId == user.openId)) { originUsers.value.push(user) currentUsers.value.push(user) console.log(`[OPEN-LIVE-Lottery] ${user.name} 添加到队列中`) @@ -267,8 +267,8 @@ function clear() { updateUsers() } function removeUser(user: OpenLiveLotteryUserInfo) { - currentUsers.value = currentUsers.value.filter((u) => u.uId != user.uId) - originUsers.value = originUsers.value.filter((u) => u.uId != user.uId) + currentUsers.value = currentUsers.value.filter((u) => u.openId != user.openId) + originUsers.value = originUsers.value.filter((u) => u.openId != user.openId) updateUsers() } @@ -278,6 +278,7 @@ function onDanmaku(data: DanmakuInfo, command: any) { addUser( { uId: data.uid, + openId: data.open_id, name: data.uname, avatar: data.uface, fans_medal_level: data.fans_medal_level, @@ -294,6 +295,7 @@ function onGift(data: GiftInfo, command: any) { addUser( { uId: data.uid, + openId: data.open_id, name: data.uname, avatar: data.uface, fans_medal_level: data.fans_medal_level, @@ -496,7 +498,7 @@ onUnmounted(() => { 共 {{ currentUsers?.length }} 人 - + - + {{ user.name }}