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(() => {
历史记录
-
+
@@ -346,7 +363,13 @@ onUnmounted(() => {
最低粉丝牌等级
-
+
@@ -358,13 +381,26 @@ onUnmounted(() => {
- 加载用户
-
+
+ 加载用户
+
+
- 开始抽取
+
+ 开始抽取
+
重置
共 {{ validUsers?.length }} 人
@@ -373,12 +409,34 @@ onUnmounted(() => {
-
+
- 大会员
+
+ 大会员
+
- LV {{ item.level }}
+
+ LV {{ item.level }}
+
用户等级
@@ -411,7 +469,9 @@ 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 }} 人
-
+
@@ -558,7 +560,7 @@ onUnmounted(() => {
-
+
{{ user.name }}