feat: 添加任务状态级联触发器,优化支付和做同款功能

主要更新:
- 添加 MySQL 触发器实现 task_status 表到其他表的状态级联
- 移除控制器中的多表状态检查代码
- 完善做同款功能,支持参数传递
- 支付宝 USD 转 CNY 汇率转换
- 修复状态枚举映射问题

注意: 触发器仅在 task_status 更新时触发,部分代码仍直接更新业务表
This commit is contained in:
AIGC Developer
2025-12-08 13:54:02 +08:00
parent 624d560fb4
commit 3c37006ebd
84 changed files with 5325 additions and 1668 deletions

View File

@@ -33,7 +33,7 @@
</nav>
<div class="sidebar-footer">
<div class="online-users">
{{ $t('nav.onlineUsers') }}: <span class="highlight">{{ onlineUsers }}</span>
{{ $t('nav.todayVisitors') }}: <span class="highlight">{{ onlineUsers }}</span>
</div>
<div class="system-uptime">
{{ $t('nav.systemUptime') }}: <span class="highlight">{{ systemUptime }}</span>
@@ -139,7 +139,7 @@ const loading = ref(false)
// 系统状态数据
const onlineUsers = ref('0/500')
const systemUptime = ref('加载中...')
const systemUptime = ref(t('common.loading'))
const apiForm = reactive({
apiKey: '',
jwtExpirationHours: 24 // 默认24小时
@@ -221,13 +221,13 @@ const saveApiKey = async () => {
// 验证输入:至少需要提供一个配置项
if (!hasApiKey && !hasJwtExpiration) {
ElMessage.warning('请至少输入API密钥或设置Token过期时间')
ElMessage.warning(t('apiManagement.atLeastOneRequired') || '请至少输入API密钥或设置Token过期时间')
return
}
// 验证JWT过期时间范围
if (hasJwtExpiration && (apiForm.jwtExpirationHours < 1 || apiForm.jwtExpirationHours > 720)) {
ElMessage.warning('Token过期时间必须在1-720小时之间1小时-30天')
ElMessage.warning(t('apiManagement.tokenRangeError') || 'Token过期时间必须在1-720小时之间')
return
}
@@ -275,22 +275,26 @@ onMounted(() => {
fetchSystemStats()
})
// 获取系统统计数据
// 获取系统统计数据(当天访问人数和系统运行时间)
const fetchSystemStats = async () => {
try {
// 临时使用计算值后续可以从API获取
// 计算在线用户数(这里简化处理)
const randomOnline = Math.floor(Math.random() * 50) + 10
onlineUsers.value = `${randomOnline}/500`
// 计算系统运行时间(基于当前时间简单模拟)
const hours = new Date().getHours()
const minutes = new Date().getMinutes()
systemUptime.value = `${hours}小时${minutes}`
const response = await fetch('/api/admin/online-stats', {
headers: {
'Authorization': `Bearer ${sessionStorage.getItem('token')}`
}
})
const data = await response.json()
if (data.success) {
onlineUsers.value = data.todayVisitors || 0
systemUptime.value = data.uptime || $t('systemSettings.unknown')
} else {
onlineUsers.value = '0'
systemUptime.value = $t('systemSettings.unknown')
}
} catch (error) {
console.error('获取系统统计失败:', error)
onlineUsers.value = '0/500'
systemUptime.value = '未知'
console.error('Get online stats failed:', error)
onlineUsers.value = '0'
systemUptime.value = $t('systemSettings.unknown')
}
}
</script>