seata测试

This commit is contained in:
zjf committed 2026-09-19 23:57:33 +08:00
1 parent 991e555606
commit deefac848b
3 files changed
+109 -5

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
import request from '/@/utils/request'
/** Seata 提交探测 */
export function seataProbeCommit() {
return request({
url: '/admin/seataProbe/commit',
method: 'post',
})
}
/** Seata 回滚探测 */
export function seataProbeRollback() {
return request({
url: '/admin/seataProbe/rollback',
method: 'post',
})
}
+85
View File
@@ -0,0 +1,85 @@
<template>
<div class="layout-padding">
<div class="layout-padding-auto layout-padding-view">
<el-alert
title="用于验证 Seata Server(如升级到 2.1)后全局事务是否正常。请先在业务库执行 db/seata_tx_probe.sql。"
type="info"
:closable="false"
show-icon
class="mb8"
/>
<div class="mb8">
<el-button type="primary" :loading="commitLoading" @click="runCommit" v-auth="'admin_seata_probe'">
测试提交(应落库)
</el-button>
<el-button type="warning" :loading="rollbackLoading" @click="runRollback" v-auth="'admin_seata_probe'">
测试回滚(应不落库)
</el-button>
</div>
<el-descriptions v-if="lastResult" title="最近一次结果" :column="1" border>
<el-descriptions-item label="是否通过">
<el-tag :type="lastResult.pass ? 'success' : 'danger'">{{ lastResult.pass ? '通过' : '未通过' }}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="说明">{{ lastResult.message }}</el-descriptions-item>
<el-descriptions-item label="类型">{{ lastResult.caseType }}</el-descriptions-item>
<el-descriptions-item label="mark">{{ lastResult.mark }}</el-descriptions-item>
<el-descriptions-item label="xid">{{ lastResult.xid || '-' }}</el-descriptions-item>
<el-descriptions-item label="库中行数">{{ lastResult.rowCount }}</el-descriptions-item>
</el-descriptions>
<div v-else style="color: #909399">点击上方按钮开始测试</div>
</div>
</div>
</template>
<script setup lang="ts" name="adminSeataProbe">
import { ref } from 'vue'
import { useMessage } from '/@/hooks/message'
import { seataProbeCommit, seataProbeRollback } from '/@/api/admin/seataProbe'
const commitLoading = ref(false)
const rollbackLoading = ref(false)
const lastResult = ref<any>(null)
const pickBody = (res: any) => {
if (res?.data && typeof res.data === 'object' && ('pass' in res.data || 'mark' in res.data)) {
return res.data
}
return res?.data ?? res
}
const runCommit = async () => {
commitLoading.value = true
try {
const res: any = await seataProbeCommit()
const body = pickBody(res)
lastResult.value = body
if (res?.code === 0 && body?.pass) {
useMessage().success(body.message || '提交探测通过')
} else {
useMessage().error(res?.msg || body?.message || '提交探测失败')
}
} catch (e: any) {
useMessage().error(e?.msg || e?.message || '请求失败')
} finally {
commitLoading.value = false
}
}
const runRollback = async () => {
rollbackLoading.value = true
try {
const res: any = await seataProbeRollback()
const body = pickBody(res)
lastResult.value = body
if (res?.code === 0 && body?.pass) {
useMessage().success(body.message || '回滚探测通过')
} else {
useMessage().error(res?.msg || body?.message || '回滚探测失败')
}
} catch (e: any) {
useMessage().error(e?.msg || e?.message || '请求失败')
} finally {
rollbackLoading.value = false
}
}
</script>
+7 -5
View File
@@ -22,11 +22,13 @@
@sort-change="sortChangeHandle">
<el-table-column type="selection" width="40" align="center" />
<el-table-column type="index" label="#" width="40" />
<el-table-column prop="apiName" label="接口名称" show-overflow-tooltip/>
<el-table-column prop="requestParameter" label="请求参数" show-overflow-tooltip/>
<el-table-column prop="requestUrl" label="请求路径" show-overflow-tooltip/>
<el-table-column prop="httpStatus" label="状态码" show-overflow-tooltip/>
<el-table-column prop="errorCode" label="错误码(如-1)" show-overflow-tooltip/>
<el-table-column prop="createTime" label="时间" width="170" show-overflow-tooltip/>
<el-table-column prop="apiName" label="接口名称" min-width="180" show-overflow-tooltip/>
<el-table-column prop="requestParameter" label="请求参数" min-width="160" show-overflow-tooltip/>
<el-table-column prop="requestUrl" label="请求路径" min-width="140" show-overflow-tooltip/>
<el-table-column prop="httpStatus" label="状态" width="80" show-overflow-tooltip/>
<el-table-column prop="errorCode" label="错误码" width="100" show-overflow-tooltip/>
<el-table-column prop="errorMsg" label="错误描述" min-width="120" show-overflow-tooltip/>
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button icon="edit-pen" text type="primary" v-auth="'thirdparty_thirdPartyLog_edit'"