feat: 系统优化和功能完善
主要更新: - 调整并发配置为50人(数据库连接池30,Tomcat线程150,异步线程池5/20) - 实现无界阻塞队列(LinkedBlockingQueue)任务处理 - 实现分镜视频保存功能(保存到uploads目录) - 统一管理页面导航栏和右上角样式 - 添加日活用户统计功能 - 优化视频拼接和保存逻辑 - 添加部署文档和快速部署指南 - 更新.gitignore排除敏感配置文件
This commit is contained in:
@@ -51,7 +51,7 @@
|
||||
<div class="header-right">
|
||||
<div class="points">
|
||||
<el-icon><Star /></el-icon>
|
||||
<span>25 | 首购优惠</span>
|
||||
<span>{{ userInfo.points - (userInfo.frozenPoints || 0) }} | 首购优惠</span>
|
||||
</div>
|
||||
<div class="notifications">
|
||||
<el-icon><Bell /></el-icon>
|
||||
@@ -67,12 +67,13 @@
|
||||
<section class="profile-section">
|
||||
<div class="profile-info">
|
||||
<div class="avatar">
|
||||
<div class="avatar-icon"></div>
|
||||
<img v-if="userInfo.avatar" :src="userInfo.avatar" alt="avatar" class="avatar-image" />
|
||||
<div v-else class="avatar-icon"></div>
|
||||
</div>
|
||||
<div class="user-details">
|
||||
<h2 class="username">mingzi_FBx7foZYDS7inLQb</h2>
|
||||
<p class="profile-status">还没有设置个人简介,点击填写</p>
|
||||
<p class="user-id">ID 2994509784706419</p>
|
||||
<h2 class="username">{{ userInfo.nickname || userInfo.username || '未设置用户名' }}</h2>
|
||||
<p class="profile-status" v-if="userInfo.bio">{{ userInfo.bio }}</p>
|
||||
<p class="user-id">ID {{ userInfo.id || '加载中...' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -166,6 +167,7 @@ import {
|
||||
Film
|
||||
} from '@element-plus/icons-vue'
|
||||
import { getMyWorks } from '@/api/userWorks'
|
||||
import { getCurrentUser } from '@/api/auth'
|
||||
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
@@ -174,6 +176,18 @@ const userStore = useUserStore()
|
||||
const showUserMenu = ref(false)
|
||||
const userStatusRef = ref(null)
|
||||
|
||||
// 用户信息
|
||||
const userInfo = ref({
|
||||
username: '',
|
||||
nickname: '',
|
||||
bio: '',
|
||||
avatar: '',
|
||||
id: '',
|
||||
points: 0,
|
||||
frozenPoints: 0
|
||||
})
|
||||
const userLoading = ref(false)
|
||||
|
||||
// 视频数据
|
||||
const videos = ref([])
|
||||
const loading = ref(false)
|
||||
@@ -288,6 +302,37 @@ const transformWorkData = (work) => {
|
||||
}
|
||||
}
|
||||
|
||||
// 加载用户信息
|
||||
const loadUserInfo = async () => {
|
||||
userLoading.value = true
|
||||
try {
|
||||
const response = await getCurrentUser()
|
||||
console.log('获取用户信息响应:', response)
|
||||
if (response && response.data && response.data.success && response.data.data) {
|
||||
const user = response.data.data
|
||||
console.log('用户数据:', user)
|
||||
userInfo.value = {
|
||||
username: user.username || '',
|
||||
nickname: user.nickname || user.username || '',
|
||||
bio: user.bio || '',
|
||||
avatar: user.avatar || '',
|
||||
id: user.id ? String(user.id) : '',
|
||||
points: user.points || 0,
|
||||
frozenPoints: user.frozenPoints || 0
|
||||
}
|
||||
console.log('设置后的用户信息:', userInfo.value)
|
||||
} else {
|
||||
console.error('获取用户信息失败:', response?.data?.message || '未知错误')
|
||||
ElMessage.error('获取用户信息失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载用户信息失败:', error)
|
||||
ElMessage.error('加载用户信息失败: ' + (error.message || '未知错误'))
|
||||
} finally {
|
||||
userLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 加载用户作品列表
|
||||
const loadVideos = async () => {
|
||||
loading.value = true
|
||||
@@ -296,21 +341,31 @@ const loadVideos = async () => {
|
||||
page: 0,
|
||||
size: 6 // 只加载前6个作品
|
||||
})
|
||||
console.log('获取作品列表响应:', response)
|
||||
|
||||
if (response.data.success) {
|
||||
if (response && response.data && response.data.success) {
|
||||
const data = response.data.data || []
|
||||
console.log('作品数据:', data)
|
||||
// 转换数据格式
|
||||
videos.value = data.map(transformWorkData)
|
||||
console.log('转换后的作品列表:', videos.value)
|
||||
} else {
|
||||
console.error('获取作品列表失败:', response.data.message)
|
||||
console.error('获取作品列表失败:', response?.data?.message || '未知错误')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载作品列表失败:', error)
|
||||
ElMessage.error('加载作品列表失败: ' + (error.message || '未知错误'))
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 编辑个人资料
|
||||
const editProfile = () => {
|
||||
// TODO: 可以跳转到编辑页面或打开编辑对话框
|
||||
ElMessage.info('个人简介编辑功能待实现')
|
||||
}
|
||||
|
||||
// 点击外部关闭菜单
|
||||
const handleClickOutside = (event) => {
|
||||
const userStatus = event.target.closest('.user-status')
|
||||
@@ -343,6 +398,7 @@ const onVideoLoaded = (event) => {
|
||||
|
||||
onMounted(() => {
|
||||
document.addEventListener('click', handleClickOutside)
|
||||
loadUserInfo()
|
||||
loadVideos()
|
||||
})
|
||||
|
||||
@@ -642,6 +698,13 @@ onUnmounted(() => {
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.avatar-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.user-details {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user