Merge remote-tracking branch 'origin/main'
This commit is contained in:
984
backend/public/api-docs.html
Normal file
984
backend/public/api-docs.html
Normal file
@@ -0,0 +1,984 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>NiuMall API 文档</title>
|
||||
<style>
|
||||
/* 基础样式 */
|
||||
:root {
|
||||
--primary: #3B82F6;
|
||||
--secondary: #10B981;
|
||||
--accent: #8B5CF6;
|
||||
--danger: #EF4444;
|
||||
--warning: #F59E0B;
|
||||
--info: #60A5FA;
|
||||
--dark: #1E293B;
|
||||
--light: #F1F5F9;
|
||||
--gray-50: #F9FAFB;
|
||||
--gray-100: #F3F4F6;
|
||||
--gray-200: #E5E7EB;
|
||||
--gray-500: #6B7280;
|
||||
--gray-700: #374151;
|
||||
--gray-800: #1F2937;
|
||||
--gray-900: #111827;
|
||||
--blue-100: #DBEAFE;
|
||||
--blue-50: #EFF6FF;
|
||||
--blue-800: #1E40AF;
|
||||
--green-100: #D1FAE5;
|
||||
--green-50: #ECFDF5;
|
||||
--green-600: #059669;
|
||||
--green-800: #065F46;
|
||||
--red-50: #FEF2F2;
|
||||
--red-600: #DC2626;
|
||||
--yellow-50: #FFFBEB;
|
||||
--yellow-100: #FEF3C7;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
background-color: var(--gray-50);
|
||||
min-height: 100vh;
|
||||
color: var(--gray-900);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* 布局样式 */
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: 1280px;
|
||||
margin: 0 auto;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.lg:flex-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.justify-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.gap-8 {
|
||||
gap: 32px;
|
||||
}
|
||||
|
||||
.shrink-0 {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.lg:w-64 {
|
||||
width: 256px;
|
||||
}
|
||||
|
||||
.flex-1 {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* 卡片和阴影 */
|
||||
.shadow-lg {
|
||||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.shadow-card {
|
||||
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.rounded-xl {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.rounded-lg {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.rounded {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.rounded-full {
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
/* 内边距和外边距 */
|
||||
.p-4 {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.p-6 {
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.py-6 {
|
||||
padding-top: 24px;
|
||||
padding-bottom: 24px;
|
||||
}
|
||||
|
||||
.px-4 {
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
.px-6 {
|
||||
padding-left: 24px;
|
||||
padding-right: 24px;
|
||||
}
|
||||
|
||||
.py-8 {
|
||||
padding-top: 32px;
|
||||
padding-bottom: 32px;
|
||||
}
|
||||
|
||||
.mt-1 {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.mt-4 {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.mt-8 {
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
.mb-4 {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.mb-8 {
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.mb-12 {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.ml-2 {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.mr-2 {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* 文本样式 */
|
||||
.text-white {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.text-secondary {
|
||||
color: var(--secondary);
|
||||
}
|
||||
|
||||
.text-accent {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.text-dark {
|
||||
color: var(--dark);
|
||||
}
|
||||
|
||||
.text-gray-100 {
|
||||
color: var(--gray-100);
|
||||
}
|
||||
|
||||
.text-gray-400 {
|
||||
color: var(--gray-400);
|
||||
}
|
||||
|
||||
.text-gray-500 {
|
||||
color: var(--gray-500);
|
||||
}
|
||||
|
||||
.text-gray-700 {
|
||||
color: var(--gray-700);
|
||||
}
|
||||
|
||||
.text-gray-800 {
|
||||
color: var(--gray-800);
|
||||
}
|
||||
|
||||
.text-blue-100 {
|
||||
color: var(--blue-100);
|
||||
}
|
||||
|
||||
.text-blue-800 {
|
||||
color: var(--blue-800);
|
||||
}
|
||||
|
||||
.text-green-600 {
|
||||
color: var(--green-600);
|
||||
}
|
||||
|
||||
.text-green-800 {
|
||||
color: var(--green-800);
|
||||
}
|
||||
|
||||
.text-red-600 {
|
||||
color: var(--red-600);
|
||||
}
|
||||
|
||||
.text-yellow-100 {
|
||||
color: var(--yellow-100);
|
||||
}
|
||||
|
||||
.text-gray-300 {
|
||||
color: var(--gray-300);
|
||||
}
|
||||
|
||||
.font-bold {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.font-semibold {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.font-medium {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.text-xs {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.text-sm {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.text-base {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.text-lg {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.text-xl {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.text-2xl {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.text-3xl {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.text-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.tracking-wider {
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.text-shadow {
|
||||
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
/* 背景色 */
|
||||
.bg-primary {
|
||||
background-color: var(--primary);
|
||||
}
|
||||
|
||||
.bg-secondary {
|
||||
background-color: var(--secondary);
|
||||
}
|
||||
|
||||
.bg-accent {
|
||||
background-color: var(--accent);
|
||||
}
|
||||
|
||||
.bg-dark {
|
||||
background-color: var(--dark);
|
||||
}
|
||||
|
||||
.bg-gray-50 {
|
||||
background-color: var(--gray-50);
|
||||
}
|
||||
|
||||
.bg-gray-100 {
|
||||
background-color: var(--gray-100);
|
||||
}
|
||||
|
||||
.bg-gray-800 {
|
||||
background-color: var(--gray-800);
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.bg-blue-50 {
|
||||
background-color: var(--blue-50);
|
||||
}
|
||||
|
||||
.bg-blue-100 {
|
||||
background-color: var(--blue-100);
|
||||
}
|
||||
|
||||
.bg-green-100 {
|
||||
background-color: var(--green-100);
|
||||
}
|
||||
|
||||
.bg-green-50 {
|
||||
background-color: var(--green-50);
|
||||
}
|
||||
|
||||
.bg-red-50 {
|
||||
background-color: var(--red-50);
|
||||
}
|
||||
|
||||
.bg-yellow-50 {
|
||||
background-color: var(--yellow-50);
|
||||
}
|
||||
|
||||
.bg-yellow-100 {
|
||||
background-color: var(--yellow-100);
|
||||
}
|
||||
|
||||
.bg-info {
|
||||
background-color: var(--info);
|
||||
}
|
||||
|
||||
.bg-danger {
|
||||
background-color: var(--danger);
|
||||
}
|
||||
|
||||
.bg-warning {
|
||||
background-color: var(--warning);
|
||||
}
|
||||
|
||||
.bg-gradient-to-r {
|
||||
background-image: linear-gradient(to right, var(--primary), var(--accent));
|
||||
}
|
||||
|
||||
/* 导航和链接 */
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
/* 表格样式 */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 8px 16px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid var(--gray-200);
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: 600;
|
||||
color: var(--gray-500);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* 代码和预格式化文本 */
|
||||
pre {
|
||||
overflow-x: auto;
|
||||
padding: 16px;
|
||||
border-radius: 8px;
|
||||
background-color: var(--gray-800);
|
||||
color: var(--gray-100);
|
||||
font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* 滚动条样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--gray-100);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--gray-400);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--gray-500);
|
||||
}
|
||||
|
||||
/* 响应式设计 */
|
||||
@media (max-width: 1024px) {
|
||||
.lg:flex-row {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.lg:w-64 {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* 工具类 */
|
||||
.overflow-hidden {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.overflow-x-auto {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.border-l-4 {
|
||||
border-left: 4px solid;
|
||||
}
|
||||
|
||||
.pl-4 {
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
.sticky {
|
||||
position: sticky;
|
||||
top: 16px;
|
||||
}
|
||||
|
||||
/* 图标替代方案 */
|
||||
.icon {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 8px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* 导航高亮 */
|
||||
.nav-link.active {
|
||||
background-color: var(--blue-50);
|
||||
color: var(--primary);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-gray-50 min-h-screen">
|
||||
<header class="bg-gradient-to-r from-primary to-accent text-white shadow-lg">
|
||||
<div class="container mx-auto px-4 py-6 sm:px-6 lg:px-8">
|
||||
<div class="flex flex-col md:flex-row md:justify-between md:items-center">
|
||||
<div>
|
||||
<h1 class="text-[clamp(1.5rem,3vw,2.5rem)] font-bold text-shadow">NiuMall API 文档</h1>
|
||||
<p class="mt-1 text-blue-100">版本: 1.0.0 | 最后更新: 2025-09-12</p>
|
||||
</div>
|
||||
<div class="mt-4 md:mt-0">
|
||||
<div class="flex items-center space-x-2 bg-white/20 px-4 py-2 rounded-lg backdrop-blur-sm">
|
||||
<span class="icon" style="background: white; width: 20px; height: 20px; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 18H5c-.55 0-1-.45-1-1V5c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v14c0 .55-.45 1-1 1z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span>
|
||||
<span>运行环境: Production</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container mx-auto px-4 py-8 sm:px-6 lg:px-8">
|
||||
<div class="flex flex-col lg:flex-row gap-8">
|
||||
<!-- 侧边导航 -->
|
||||
<aside class="lg:w-64 shrink-0">
|
||||
<nav class="bg-white rounded-xl shadow-card p-4 sticky top-4">
|
||||
<h2 class="text-lg font-bold text-dark mb-4 flex items-center">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--primary), var(--accent)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 接口分类
|
||||
</h2>
|
||||
<ul class="space-y-1">
|
||||
<li>
|
||||
<a href="#auth" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--primary), var(--accent)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 15c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3zm0-2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-10C7.03 3 3 7.03 3 12c0 5.52 3.84 10.74 9 12 5.16-1.26 9-6.48 9-12 0-4.97-4.03-9-9-9zm0 16.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 认证管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#users" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--secondary), var(--primary)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 用户管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#orders" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--warning), var(--primary)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 订单管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#finance" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--info), var(--primary)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 财务管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#suppliers" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--accent), var(--primary)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M19 6H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H5V8h14v8zm-4-6h-4v2h4v-2zm0 4h-4v2h4v-2z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 供应商管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#transport" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--secondary), var(--accent)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 19.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V10.5h2.5zM18 19.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 运输管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#quality" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--warning), var(--accent)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 质量管理
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#system" class="block px-4 py-2 rounded-lg hover:bg-blue-50 hover:text-primary">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--dark), var(--primary)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 系统接口
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="mt-8">
|
||||
<h2 class="text-lg font-bold text-dark mb-4 flex items-center">
|
||||
<span class="icon" style="background: linear-gradient(45deg, var(--primary), var(--accent)); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 文档说明
|
||||
</h2>
|
||||
<div class="bg-blue-50 p-4 rounded-lg">
|
||||
<p class="text-sm text-blue-800">
|
||||
本API文档提供了NiuMall系统所有后端接口的详细说明。所有接口均返回统一的JSON格式,包含success、message和data字段。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<!-- 主内容区 -->
|
||||
<main class="flex-1">
|
||||
<!-- 认证管理 -->
|
||||
<section id="auth" class="mb-12">
|
||||
<div class="bg-white rounded-xl shadow-card overflow-hidden">
|
||||
<div class="bg-primary text-white px-6 py-4">
|
||||
<h2 class="text-xl font-bold flex items-center">
|
||||
<span class="icon" style="background: white; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 15c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3zm0-2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-10C7.03 3 3 7.03 3 12c0 5.52 3.84 10.74 9 12 5.16-1.26 9-6.48 9-12 0-4.97-4.03-9-9-9zm0 16.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5 6.5 2.91 6.5 6.5-2.91 6.5-6.5 6.5z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 认证管理
|
||||
</h2>
|
||||
<p class="text-blue-100 text-sm mt-1">认证相关接口,用于用户登录获取访问令牌</p>
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<!-- 登录接口 -->
|
||||
<div class="mb-8 border-l-4 border-primary pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">用户登录</h3>
|
||||
<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded font-medium">POST</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/api/auth/login</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">请求参数</h4>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">参数名</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">类型</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">必填</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">username</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-red-600">是</td>
|
||||
<td class="px-4 py-2">用户名/手机号/邮箱</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">password</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-red-600">是</td>
|
||||
<td class="px-4 py-2">密码</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">请求示例</h4>
|
||||
<div class="bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto">
|
||||
<pre>{"username": "admin", "password": "123456"}</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">响应示例</h4>
|
||||
<div class="bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto">
|
||||
<pre>{"success": true, "message": "登录成功", "data": {"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 86400, "user": {"id": 1, "username": "admin", "email": "admin@example.com", "role": "admin", "status": "active"}}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">响应状态码</h4>
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm">
|
||||
<div class="bg-green-50 px-3 py-2 rounded-lg flex items-center">
|
||||
<span class="bg-green-500 text-white text-xs w-6 h-6 flex items-center justify-center rounded-full mr-2">200</span>
|
||||
<span>登录成功</span>
|
||||
</div>
|
||||
<div class="bg-red-50 px-3 py-2 rounded-lg flex items-center">
|
||||
<span class="bg-red-500 text-white text-xs w-6 h-6 flex items-center justify-center rounded-full mr-2">401</span>
|
||||
<span>用户名或密码错误</span>
|
||||
</div>
|
||||
<div class="bg-yellow-50 px-3 py-2 rounded-lg flex items-center">
|
||||
<span class="bg-yellow-500 text-white text-xs w-6 h-6 flex items-center justify-center rounded-full mr-2">403</span>
|
||||
<span>账户已被禁用</span>
|
||||
</div>
|
||||
<div class="bg-blue-50 px-3 py-2 rounded-lg flex items-center">
|
||||
<span class="bg-blue-500 text-white text-xs w-6 h-6 flex items-center justify-center rounded-full mr-2">500</span>
|
||||
<span>服务器内部错误</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 用户管理 -->
|
||||
<section id="users" class="mb-12">
|
||||
<div class="bg-white rounded-xl shadow-card overflow-hidden">
|
||||
<div class="bg-secondary text-white px-6 py-4">
|
||||
<h2 class="text-xl font-bold flex items-center">
|
||||
<span class="icon" style="background: white; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 用户管理
|
||||
</h2>
|
||||
<p class="text-green-100 text-sm mt-1">用户相关接口,用于管理系统用户信息</p>
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<!-- 获取用户列表 -->
|
||||
<div class="mb-8 border-l-4 border-secondary pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">获取用户列表</h3>
|
||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded font-medium">GET</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/api/users</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">查询参数</h4>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">参数名</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">类型</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">必填</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">page</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">页码,默认为1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">pageSize</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">每页条数,默认为20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">keyword</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">关键词搜索(用户名、邮箱、手机号)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">user_type</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">用户类型筛选</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">status</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">用户状态筛选</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">响应示例</h4>
|
||||
<div class="bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto">
|
||||
<pre>{"success": true, "data": {"items": [{"id": 1, "username": "admin", "email": "admin@example.com", "phone": "13800138000", "user_type": "admin", "status": "active", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z"}], "total": 10, "page": 1, "pageSize": 20, "totalPages": 1}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 获取用户详情 -->
|
||||
<div class="mb-8 border-l-4 border-secondary pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">获取用户详情</h3>
|
||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded font-medium">GET</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/api/users/:id</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">路径参数</h4>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">参数名</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">类型</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">必填</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">id</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-red-600">是</td>
|
||||
<td class="px-4 py-2">用户ID</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">响应示例</h4>
|
||||
<div class="bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto">
|
||||
<pre>{"success": true, "data": {"id": 1, "username": "admin", "email": "admin@example.com", "phone": "13800138000", "user_type": "admin", "status": "active", "createdAt": "2024-01-01T00:00:00Z", "updatedAt": "2024-01-01T00:00:00Z"}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 订单管理 -->
|
||||
<section id="orders" class="mb-12">
|
||||
<div class="bg-white rounded-xl shadow-card overflow-hidden">
|
||||
<div class="bg-warning text-white px-6 py-4">
|
||||
<h2 class="text-xl font-bold flex items-center">
|
||||
<span class="icon" style="background: white; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 订单管理
|
||||
</h2>
|
||||
<p class="text-yellow-100 text-sm mt-1">订单相关接口,用于管理商品订单</p>
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<!-- 获取订单列表 -->
|
||||
<div class="mb-8 border-l-4 border-warning pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">获取订单列表</h3>
|
||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded font-medium">GET</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/api/orders</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">查询参数</h4>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">参数名</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">类型</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">必填</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">page</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">页码,默认为1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">pageSize</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">每页条数,默认为20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">orderNo</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">订单号搜索</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">buyerId</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">买方ID筛选</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">supplierId</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">供应商ID筛选</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">status</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">订单状态筛选</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 财务管理 -->
|
||||
<section id="finance" class="mb-12">
|
||||
<div class="bg-white rounded-xl shadow-card overflow-hidden">
|
||||
<div class="bg-info text-white px-6 py-4">
|
||||
<h2 class="text-xl font-bold flex items-center">
|
||||
<span class="icon" style="background: white; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 财务管理
|
||||
</h2>
|
||||
<p class="text-blue-100 text-sm mt-1">财务相关接口,用于管理结算和支付</p>
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<!-- 获取结算列表 -->
|
||||
<div class="mb-8 border-l-4 border-info pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">获取结算列表</h3>
|
||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded font-medium">GET</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/api/finance/settlements</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">查询参数</h4>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">参数名</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">类型</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">必填</th>
|
||||
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="bg-white divide-y divide-gray-200">
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">page</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">页码,默认为1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">pageSize</td>
|
||||
<td class="px-4 py-2">number</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">每页条数,默认为20</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">keyword</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">关键词搜索</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2 font-medium">paymentStatus</td>
|
||||
<td class="px-4 py-2">string</td>
|
||||
<td class="px-4 py-2 text-green-600">否</td>
|
||||
<td class="px-4 py-2">支付状态筛选</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 系统接口 -->
|
||||
<section id="system" class="mb-12">
|
||||
<div class="bg-white rounded-xl shadow-card overflow-hidden">
|
||||
<div class="bg-dark text-white px-6 py-4">
|
||||
<h2 class="text-xl font-bold flex items-center">
|
||||
<span class="icon" style="background: white; mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 系统接口
|
||||
</h2>
|
||||
<p class="text-gray-300 text-sm mt-1">系统级接口,用于监控和维护</p>
|
||||
</div>
|
||||
<div class="p-6">
|
||||
<!-- 健康检查 -->
|
||||
<div class="mb-8 border-l-4 border-dark pl-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-2">
|
||||
<h3 class="text-lg font-semibold text-dark">健康检查</h3>
|
||||
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded font-medium">GET</span>
|
||||
<span class="bg-gray-100 text-gray-800 text-sm px-3 py-1 rounded">/health</span>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h4 class="text-sm font-semibold text-gray-700 mb-2">响应示例</h4>
|
||||
<div class="bg-gray-800 text-gray-100 p-4 rounded-lg text-sm overflow-x-auto">
|
||||
<pre>{"success": true, "message": "服务运行正常", "timestamp": "2025-09-12T04:47:48.209Z", "version": "1.0.0"}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="bg-dark text-gray-400 py-8 mt-12">
|
||||
<div class="container mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="flex flex-col md:flex-row justify-between items-center">
|
||||
<div class="mb-4 md:mb-0">
|
||||
<p>NiuMall API 文档 © 2025</p>
|
||||
</div>
|
||||
<div class="flex space-x-4">
|
||||
<a href="#" class="hover:text-white">
|
||||
<span class="icon" style="background: var(--gray-400); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 帮助中心
|
||||
</a>
|
||||
<a href="#" class="hover:text-white">
|
||||
<span class="icon" style="background: var(--gray-400); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 联系我们
|
||||
</a>
|
||||
<a href="#" class="hover:text-white">
|
||||
<span class="icon" style="background: var(--gray-400); mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z'/></svg>'); mask-size: contain; mask-repeat: no-repeat;"></span> 完整文档
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/static/scripts/docs.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user