Files
xlxumu/api-test.html

426 lines
16 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>锡林郭勒盟智慧养殖API测试页面</title>
<style>
body {
font-family: 'Microsoft YaHei', Arial, sans-serif;
margin: 20px;
background-color: #f5f5f5;
}
.container {
max-width: 1200px;
margin: 0 auto;
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
h1 {
color: #2c3e50;
text-align: center;
}
.section {
margin: 20px 0;
padding: 15px;
border: 1px solid #ddd;
border-radius: 5px;
}
.section h3 {
color: #34495e;
margin-top: 0;
}
button {
background-color: #3498db;
color: white;
border: none;
padding: 10px 15px;
border-radius: 5px;
cursor: pointer;
margin: 5px;
}
button:hover {
background-color: #2980b9;
}
.result {
background-color: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 5px;
padding: 10px;
margin: 10px 0;
white-space: pre-wrap;
font-family: monospace;
font-size: 12px;
max-height: 200px;
overflow-y: auto;
}
.success {
border-color: #28a745;
background-color: #d4edda;
}
.error {
border-color: #dc3545;
background-color: #f8d7da;
}
.token-display {
background-color: #fff3cd;
border: 1px solid #ffeaa7;
padding: 10px;
border-radius: 5px;
margin: 10px 0;
word-break: break-all;
}
</style>
</head>
<body>
<div class="container">
<h1>🐄 锡林郭勒盟智慧养殖产业平台 API 测试</h1>
<div class="section">
<h3>🔧 系统状态检查</h3>
<button onclick="checkHealth()">检查系统健康状态</button>
<button onclick="checkDatabase()">检查数据库状态</button>
<div id="health-result" class="result"></div>
</div>
<div class="section">
<h3>🔐 用户认证</h3>
<button onclick="login()">管理员登录</button>
<button onclick="getProfile()">获取用户信息</button>
<button onclick="getPermissions()">获取用户权限</button>
<div id="token-display" class="token-display" style="display:none;">
<strong>当前Token:</strong> <span id="current-token"></span>
</div>
<div id="auth-result" class="result"></div>
</div>
<div class="section">
<h3>👥 用户管理</h3>
<button onclick="getUserList()">获取用户列表</button>
<button onclick="getRoleList()">获取角色列表</button>
<button onclick="createTestUser()">创建测试用户</button>
<div id="user-result" class="result"></div>
</div>
<div class="section">
<h3>🐮 牛只档案管理</h3>
<button onclick="getCattleList()">获取牛只列表</button>
<button onclick="getCattleStats()">获取牛只统计</button>
<button onclick="createTestCattle()">创建测试牛只</button>
<button onclick="getCattleDetail()">获取牛只详情</button>
<div id="cattle-result" class="result"></div>
</div>
<div class="section">
<h3>📊 大屏数据</h3>
<button onclick="getRegions()">获取区域数据</button>
<button onclick="getRegionDetail()">获取区域详情</button>
<div id="dashboard-result" class="result"></div>
</div>
<div class="section">
<h3>💰 金融服务监管</h3>
<button onclick="getLoanList()">获取贷款列表</button>
<button onclick="getFinanceStats()">获取金融统计</button>
<button onclick="createTestLoan()">创建测试贷款</button>
<div id="finance-result" class="result"></div>
</div>
<div class="section">
<h3>📝 交易管理</h3>
<button onclick="getTransactionList()">获取交易列表</button>
<button onclick="getTradingStats()">获取交易统计</button>
<button onclick="getContractList()">获取合同列表</button>
<div id="trading-result" class="result"></div>
</div>
<div class="section">
<h3>🏢 政府监管</h3>
<button onclick="getFarmSupervision()">获取牧场监管</button>
<button onclick="getInspectionList()">获取检查记录</button>
<button onclick="getGovStats()">获取监管统计</button>
<button onclick="getPolicyList()">获取政策法规</button>
<div id="government-result" class="result"></div>
</div>
<div class="section">
<h3>🛍️ 商城管理</h3>
<button onclick="getProductList()">获取商品列表</button>
<button onclick="getOrderList()">获取订单列表</button>
<button onclick="getMallStats()">获取商城统计</button>
<button onclick="getProductDetail()">获取商品详情</button>
<div id="mall-result" class="result"></div>
</div>
</div>
<script>
const API_BASE = 'http://localhost:8889';
let currentToken = '';
function displayResult(elementId, data, isSuccess = true) {
const element = document.getElementById(elementId);
element.textContent = JSON.stringify(data, null, 2);
element.className = isSuccess ? 'result success' : 'result error';
}
function updateToken(token) {
currentToken = token;
document.getElementById('current-token').textContent = token;
document.getElementById('token-display').style.display = 'block';
}
async function apiRequest(url, options = {}) {
try {
const response = await fetch(API_BASE + url, {
headers: {
'Content-Type': 'application/json',
'Authorization': currentToken ? `Bearer ${currentToken}` : '',
...options.headers
},
...options
});
const data = await response.json();
return { data, status: response.status };
} catch (error) {
return { error: error.message, status: 0 };
}
}
async function checkHealth() {
const result = await apiRequest('/health');
displayResult('health-result', result.data || result.error, result.status === 200);
}
async function checkDatabase() {
const result = await apiRequest('/api/v1/database/status');
displayResult('health-result', result.data || result.error, result.status === 200);
}
async function login() {
const result = await apiRequest('/api/v1/auth/login', {
method: 'POST',
body: JSON.stringify({
username: 'admin',
password: 'admin123'
})
});
if (result.data && result.data.success) {
updateToken(result.data.data.token);
}
displayResult('auth-result', result.data || result.error, result.status === 200);
}
async function getProfile() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/auth/profile');
displayResult('auth-result', result.data || result.error, result.status === 200);
}
async function getPermissions() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/auth/permissions');
displayResult('auth-result', result.data || result.error, result.status === 200);
}
async function getUserList() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/users');
displayResult('user-result', result.data || result.error, result.status === 200);
}
async function getRoleList() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/users/roles/list');
displayResult('user-result', result.data || result.error, result.status === 200);
}
async function createTestUser() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/users', {
method: 'POST',
body: JSON.stringify({
username: 'test_farmer',
password: 'test123',
real_name: '测试养殖户',
user_type: 'farmer',
email: 'test@example.com'
})
});
displayResult('user-result', result.data || result.error, result.status === 201);
}
async function getCattleList() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/cattle');
displayResult('cattle-result', result.data || result.error, result.status === 200);
}
async function getCattleStats() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/cattle/stats/overview');
displayResult('cattle-result', result.data || result.error, result.status === 200);
}
async function createTestCattle() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/cattle', {
method: 'POST',
body: JSON.stringify({
ear_tag: 'TEST' + Date.now(),
name: '测试牛只',
breed: '西门塔尔牛',
gender: 'female',
birth_date: '2023-01-01',
color: '黄白花',
weight: 350.5,
farm_location: '测试牧场'
})
});
displayResult('cattle-result', result.data || result.error, result.status === 201);
}
async function getCattleDetail() {
if (!currentToken) {
alert('请先登录');
return;
}
const result = await apiRequest('/api/v1/cattle/1');
displayResult('cattle-result', result.data || result.error, result.status === 200);
}
async function getRegions() {
const result = await apiRequest('/api/v1/dashboard/map/regions');
displayResult('dashboard-result', result.data || result.error, result.status === 200);
}
async function getRegionDetail() {
const result = await apiRequest('/api/v1/dashboard/map/region/xlg');
displayResult('dashboard-result', result.data || result.error, result.status === 200);
}
// 金融服务测试函数
async function getLoanList() {
const result = await apiRequest('/api/v1/finance/loans');
displayResult('finance-result', result.data || result.error, result.status === 200);
}
async function getFinanceStats() {
const result = await apiRequest('/api/v1/finance/statistics');
displayResult('finance-result', result.data || result.error, result.status === 200);
}
async function createTestLoan() {
const result = await apiRequest('/api/v1/finance/loans', {
method: 'POST',
body: JSON.stringify({
loan_type: 'cattle',
loan_amount: 500000,
purpose: '购买优质肉牛',
term_months: 24
})
});
displayResult('finance-result', result.data || result.error, result.status === 201 || result.status === 200);
}
// 交易管理测试函数
async function getTransactionList() {
const result = await apiRequest('/api/v1/trading/transactions');
displayResult('trading-result', result.data || result.error, result.status === 200);
}
async function getTradingStats() {
const result = await apiRequest('/api/v1/trading/statistics');
displayResult('trading-result', result.data || result.error, result.status === 200);
}
async function getContractList() {
const result = await apiRequest('/api/v1/trading/contracts');
displayResult('trading-result', result.data || result.error, result.status === 200);
}
// 政府监管测试函数
async function getFarmSupervision() {
const result = await apiRequest('/api/v1/government/farms/supervision');
displayResult('government-result', result.data || result.error, result.status === 200);
}
async function getInspectionList() {
const result = await apiRequest('/api/v1/government/inspections');
displayResult('government-result', result.data || result.error, result.status === 200);
}
async function getGovStats() {
const result = await apiRequest('/api/v1/government/statistics');
displayResult('government-result', result.data || result.error, result.status === 200);
}
async function getPolicyList() {
const result = await apiRequest('/api/v1/government/policies');
displayResult('government-result', result.data || result.error, result.status === 200);
}
// 商城管理测试函数
async function getProductList() {
const result = await apiRequest('/api/v1/mall/products');
displayResult('mall-result', result.data || result.error, result.status === 200);
}
async function getOrderList() {
const result = await apiRequest('/api/v1/mall/orders');
displayResult('mall-result', result.data || result.error, result.status === 200);
}
async function getMallStats() {
const result = await apiRequest('/api/v1/mall/statistics');
displayResult('mall-result', result.data || result.error, result.status === 200);
}
async function getProductDetail() {
const result = await apiRequest('/api/v1/mall/products/1');
displayResult('mall-result', result.data || result.error, result.status === 200);
}
// 页面加载时自动检查系统状态
window.onload = function() {
checkHealth();
};
</script>
</body>
</html>