refactor(backend): 重构动物相关 API 接口

- 更新了动物数据结构和相关类型定义
- 优化了动物列表、详情、创建、更新和删除接口
- 新增了更新动物状态接口
- 移除了与认领记录相关的接口
-调整了 API 响应结构
This commit is contained in:
ylweng
2025-08-31 00:45:46 +08:00
parent 0cad74b06f
commit 8e5295b572
111 changed files with 15290 additions and 1972 deletions

View File

@@ -0,0 +1,11 @@
<svg width="150" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradCEO" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2ecc71;stop-opacity:1" />
<stop offset="100%" style="stop-color:#27ae60;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="75" cy="75" r="75" fill="url(#gradCEO)"/>
<text x="75" y="85" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="24"></text>
<text x="75" y="110" fill="rgba(255,255,255,0.8)" text-anchor="middle" font-family="Arial, sans-serif" font-size="14">CEO</text>
</svg>

After

Width:  |  Height:  |  Size: 645 B

View File

@@ -0,0 +1,11 @@
<svg width="150" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradCMO" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#3498db;stop-opacity:1" />
<stop offset="100%" style="stop-color:#2980b9;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="75" cy="75" r="75" fill="url(#gradCMO)"/>
<text x="75" y="85" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="24"></text>
<text x="75" y="110" fill="rgba(255,255,255,0.8)" text-anchor="middle" font-family="Arial, sans-serif" font-size="14">CMO</text>
</svg>

After

Width:  |  Height:  |  Size: 645 B

View File

@@ -0,0 +1,11 @@
<svg width="150" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradCOO" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#9b59b6;stop-opacity:1" />
<stop offset="100%" style="stop-color:#8e44ad;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="75" cy="75" r="75" fill="url(#gradCOO)"/>
<text x="75" y="85" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="24"></text>
<text x="75" y="110" fill="rgba(255,255,255,0.8)" text-anchor="middle" font-family="Arial, sans-serif" font-size="14">COO</text>
</svg>

After

Width:  |  Height:  |  Size: 645 B

View File

@@ -0,0 +1,11 @@
<svg width="150" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradCTO" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#1abc9c;stop-opacity:1" />
<stop offset="100%" style="stop-color:#16a085;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="75" cy="75" r="75" fill="url(#gradCTO)"/>
<text x="75" y="85" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="24"></text>
<text x="75" y="110" fill="rgba(255,255,255,0.8)" text-anchor="middle" font-family="Arial, sans-serif" font-size="14">CTO</text>
</svg>

After

Width:  |  Height:  |  Size: 645 B

View File

@@ -0,0 +1,16 @@
<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad2" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#f093fb;stop-opacity:1" />
<stop offset="100%" style="stop-color:#f5576c;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#grad2)"/>
<g fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold">
<text x="200" y="100" font-size="24" dy="0.35em">农场体验</text>
<text x="200" y="130" font-size="14" opacity="0.8">亲近自然,体验农耕</text>
</g>
<path d="M100,150 Q150,120 200,150 Q250,180 300,150" stroke="rgba(255,255,255,0.2)" fill="none" stroke-width="2"/>
<circle cx="120" cy="80" r="15" fill="rgba(255,255,255,0.1)"/>
<circle cx="280" cy="100" r="12" fill="rgba(255,255,255,0.1)"/>
</svg>

After

Width:  |  Height:  |  Size: 888 B

View File

@@ -0,0 +1,16 @@
<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad3" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#764ba2;stop-opacity:1" />
<stop offset="100%" style="stop-color:#667eea;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#grad3)"/>
<g fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold">
<text x="200" y="100" font-size="24" dy="0.35em">送花服务</text>
<text x="200" y="130" font-size="14" opacity="0.8">传递心意,送达祝福</text>
</g>
<path d="M150,80 Q180,60 210,80 Q240,100 270,80" stroke="rgba(255,255,255,0.2)" fill="none" stroke-width="2"/>
<circle cx="180" cy="120" r="10" fill="rgba(255,255,255,0.1)"/>
<circle cx="220" cy="140" r="8" fill="rgba(255,255,255,0.1)"/>
</svg>

After

Width:  |  Height:  |  Size: 884 B

View File

@@ -0,0 +1,10 @@
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradMerchant1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#f72585;stop-opacity:1" />
<stop offset="100%" style="stop-color:#b5179e;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="25" cy="25" r="25" fill="url(#gradMerchant1)"/>
<text x="25" y="30" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="18"></text>
</svg>

After

Width:  |  Height:  |  Size: 524 B

View File

@@ -0,0 +1,16 @@
<svg width="600" height="400" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradTeam" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#2ecc71;stop-opacity:1" />
<stop offset="100%" style="stop-color:#27ae60;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#gradTeam)"/>
<g fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold">
<text x="300" y="180" font-size="32" dy="0.35em">结伴客团队</text>
<text x="300" y="220" font-size="18" opacity="0.9">让旅行不再孤单</text>
</g>
<circle cx="150" cy="120" r="40" fill="rgba(255,255,255,0.1)"/>
<circle cx="450" cy="280" r="30" fill="rgba(255,255,255,0.1)"/>
<path d="M100,250 Q200,200 300,250 Q400,300 500,250" stroke="rgba(255,255,255,0.2)" fill="none" stroke-width="3"/>
</svg>

After

Width:  |  Height:  |  Size: 892 B

View File

@@ -0,0 +1,15 @@
<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
</linearGradient>
</defs>
<rect width="100%" height="100%" fill="url(#grad1)"/>
<g fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold">
<text x="200" y="100" font-size="24" dy="0.35em">旅行结伴</text>
<text x="200" y="130" font-size="14" opacity="0.8">探索世界,结识旅伴</text>
</g>
<circle cx="80" cy="100" r="30" fill="rgba(255,255,255,0.1)"/>
<circle cx="320" cy="60" r="20" fill="rgba(255,255,255,0.1)"/>
</svg>

After

Width:  |  Height:  |  Size: 770 B

View File

@@ -0,0 +1,10 @@
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradAvatar1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#4361ee;stop-opacity:1" />
<stop offset="100%" style="stop-color:#3a0ca3;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="25" cy="25" r="25" fill="url(#gradAvatar1)"/>
<text x="25" y="30" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="18"></text>
</svg>

After

Width:  |  Height:  |  Size: 520 B

View File

@@ -0,0 +1,10 @@
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="gradAvatar2" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#3a0ca3;stop-opacity:1" />
<stop offset="100%" style="stop-color:#4361ee;stop-opacity:1" />
</linearGradient>
</defs>
<circle cx="25" cy="25" r="25" fill="url(#gradAvatar2)"/>
<text x="25" y="30" fill="#ffffff" text-anchor="middle" font-family="Arial, sans-serif" font-weight="bold" font-size="18"></text>
</svg>

After

Width:  |  Height:  |  Size: 520 B