获取球队成员
<h1>获取球队成员列表(增强版)</h1>
<h2>接口信息</h2>
<ul>
<li><strong>接口名称</strong>: 获取球队成员列表(增强版)</li>
<li><strong>接口描述</strong>: 获取指定球队的所有成员详细信息,包含球员基本信息和球员信息</li>
<li><strong>请求URL</strong>: <code>/api/team/members/{teamId}</code></li>
<li><strong>请求方式</strong>: <code>GET</code></li>
<li><strong>认证方式</strong>: 匿名访问(@Anonymous)</li>
</ul>
<h2>请求参数</h2>
<h3>路径参数</h3>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">示例值</th>
<th>必选</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">teamId</td>
<td style="text-align: left;">101</td>
<td>是</td>
<td style="text-align: left;">Long</td>
<td style="text-align: left;">球队ID</td>
</tr>
</tbody>
</table>
<h2>响应示例</h2>
<h3>成功响应</h3>
<pre><code class="language-json">{
&quot;code&quot;: 200,
&quot;msg&quot;: &quot;操作成功&quot;,
&quot;data&quot;: {
&quot;teamId&quot;: 101,
&quot;teamName&quot;: &quot;篮球队A&quot;,
&quot;members&quot;: [
{
&quot;memberId&quot;: 201,
&quot;teamId&quot;: 101,
&quot;userId&quot;: 1001,
&quot;memberType&quot;: &quot;1&quot;,
&quot;joinStatus&quot;: &quot;1&quot;,
&quot;joinTime&quot;: &quot;2025-01-27 10:00:00&quot;,
&quot;realName&quot;: &quot;张三&quot;,
&quot;name&quot;: &quot;张三&quot;,
&quot;gender&quot;: &quot;男&quot;,
&quot;phone&quot;: &quot;13800138000&quot;,
&quot;idCard&quot;: &quot;110101199001021234&quot;,
&quot;birthDate&quot;: &quot;1990-01-02&quot;,
&quot;ethnicity&quot;: &quot;汉族&quot;,
&quot;provinceCity&quot;: &quot;北京市&quot;,
&quot;position&quot;: &quot;1号位&quot;,
&quot;height&quot;: 185.00,
&quot;weight&quot;: 75.00,
&quot;jerseySize&quot;: &quot;XL&quot;,
&quot;athleteLevel&quot;: &quot;一级运动员&quot;,
&quot;playerResume&quot;: &quot;多次参加校级联赛,表现突出&quot;,
&quot;playerAvatar&quot;: &quot;path/photo1001.jpg&quot;,
&quot;jerseyNumber&quot;: &quot;NO.1&quot;,
&quot;status&quot;: &quot;正常&quot;,
&quot;banUntil&quot;: null
},
{
&quot;memberId&quot;: 202,
&quot;teamId&quot;: 101,
&quot;userId&quot;: 1002,
&quot;memberType&quot;: &quot;1&quot;,
&quot;joinStatus&quot;: &quot;1&quot;,
&quot;joinTime&quot;: &quot;2025-01-28 10:00:00&quot;,
&quot;realName&quot;: &quot;李四&quot;,
&quot;name&quot;: &quot;李四&quot;,
&quot;gender&quot;: &quot;女&quot;,
&quot;phone&quot;: &quot;13900139000&quot;,
&quot;idCard&quot;: &quot;120103199102022345&quot;,
&quot;birthDate&quot;: &quot;1991-02-02&quot;,
&quot;ethnicity&quot;: &quot;满族&quot;,
&quot;provinceCity&quot;: &quot;天津市&quot;,
&quot;position&quot;: &quot;2号位&quot;,
&quot;height&quot;: 178.50,
&quot;weight&quot;: 70.20,
&quot;jerseySize&quot;: &quot;XL&quot;,
&quot;athleteLevel&quot;: &quot;二级运动员&quot;,
&quot;playerResume&quot;: &quot;经验丰富,擅长防守&quot;,
&quot;playerAvatar&quot;: &quot;path/photo1002.jpg&quot;,
&quot;jerseyNumber&quot;: &quot;NO.2&quot;,
&quot;status&quot;: &quot;正常&quot;,
&quot;banUntil&quot;: null
}
],
&quot;total&quot;: 2
}
}</code></pre>
<h3>错误响应</h3>
<pre><code class="language-json">{
&quot;code&quot;: 500,
&quot;msg&quot;: &quot;操作失败&quot;,
&quot;data&quot;: &quot;球队不存在&quot;
}</code></pre>
<h2>响应参数说明</h2>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">integer</td>
<td style="text-align: left;">响应状态码(200=成功 500=失败)</td>
</tr>
<tr>
<td style="text-align: left;">msg</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">响应消息</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">object</td>
<td style="text-align: left;">响应数据</td>
</tr>
<tr>
<td style="text-align: left;">data.teamId</td>
<td style="text-align: left;">long</td>
<td style="text-align: left;">球队ID</td>
</tr>
<tr>
<td style="text-align: left;">data.teamName</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">球队名称</td>
</tr>
<tr>
<td style="text-align: left;">data.members</td>
<td style="text-align: left;">array</td>
<td style="text-align: left;">成员详细信息列表</td>
</tr>
<tr>
<td style="text-align: left;">data.total</td>
<td style="text-align: left;">integer</td>
<td style="text-align: left;">成员总数</td>
</tr>
</tbody>
</table>
<h3>成员信息字段说明</h3>
<h4>球队成员基本信息</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">data.members.memberId</td>
<td style="text-align: left;">long</td>
<td style="text-align: left;">成员ID</td>
</tr>
<tr>
<td style="text-align: left;">data.members.teamId</td>
<td style="text-align: left;">long</td>
<td style="text-align: left;">球队ID</td>
</tr>
<tr>
<td style="text-align: left;">data.members.userId</td>
<td style="text-align: left;">long</td>
<td style="text-align: left;">用户ID</td>
</tr>
<tr>
<td style="text-align: left;">data.members.memberType</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">成员类型(1=球员 2=教练)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.joinStatus</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">加入状态(0=申请中 1=已加入 2=已拒绝)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.joinTime</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">加入时间</td>
</tr>
<tr>
<td style="text-align: left;">data.members.leaveTime</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">离开时间(如有)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.realName</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">真实姓名</td>
</tr>
</tbody>
</table>
<h4>用户基本信息</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">data.members.name</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">姓名</td>
</tr>
<tr>
<td style="text-align: left;">data.members.gender</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">性别(男/女)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.phone</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">联系方式</td>
</tr>
<tr>
<td style="text-align: left;">data.members.idCard</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">身份证号</td>
</tr>
<tr>
<td style="text-align: left;">data.members.birthDate</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">出生年月(YYYY-MM-DD)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.ethnicity</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">民族</td>
</tr>
<tr>
<td style="text-align: left;">data.members.provinceCity</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">所在省市</td>
</tr>
</tbody>
</table>
<h4>球员信息</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">data.members.position</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">场上位置(1号位/2号位/3号位/4号位/5号位)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.height</td>
<td style="text-align: left;">decimal</td>
<td style="text-align: left;">身高(cm)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.weight</td>
<td style="text-align: left;">decimal</td>
<td style="text-align: left;">体重(kg)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.jerseySize</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">球衣尺码(XL/2XL/3XL/4XL/5XL/6XL/7XL)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.athleteLevel</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">运动员等级</td>
</tr>
<tr>
<td style="text-align: left;">data.members.playerResume</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">球员履历</td>
</tr>
<tr>
<td style="text-align: left;">data.members.playerAvatar</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">球员头像(1寸免冠照片路径)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.jerseyNumber</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">球衣号码(自动生成:NO.1, NO.2...)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.status</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">状态(正常/禁赛)</td>
</tr>
<tr>
<td style="text-align: left;">data.members.banUntil</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">禁赛截止时间(如有)</td>
</tr>
</tbody>
</table>
<h2>使用说明</h2>
<ol>
<li><strong>完整信息</strong>: 此接口返回球队成员的完整信息,包含基本信息和球员详细信息</li>
<li><strong>自动编号</strong>: 球衣号码自动按加入时间顺序生成(NO.1, NO.2, NO.3...)</li>
<li><strong>多表关联</strong>: 通过LEFT JOIN关联用户基本信息表和球员信息表</li>
<li><strong>状态过滤</strong>: 只返回已加入状态(joinStatus='1')的成员</li>
<li><strong>排序规则</strong>: 按加入时间升序排列</li>
</ol>
<h2>注意事项</h2>
<ul>
<li>teamId参数是必填的,必须通过URL路径传递</li>
<li>返回的时间格式为 <code>YYYY-MM-DD HH:mm:ss</code></li>
<li>如果球队不存在,会返回"球队不存在"的错误信息</li>
<li>成员列表可能为空数组,表示该球队暂无成员</li>
<li>球员头像字段可能为空,需要前端做默认处理</li>
<li>球衣号码是自动生成的,不需要手动设置</li>
<li>接口会自动处理异常情况并返回相应的错误信息</li>
</ul>
<h2>数据库关联说明</h2>
<p>此接口通过以下表关联获取完整信息:</p>
<ul>
<li><code>wm_team_member</code> - 球队成员表(主表)</li>
<li><code>wm_basic_user_info</code> - 用户基本信息表</li>
<li><code>wm_player_info</code> - 球员信息表</li>
</ul>
<h2>相关接口</h2>
<ul>
<li><a href="2.获取球队详情-增强版.md">获取球队详情(增强版)</a> - 获取球队基本信息及负责人权限</li>
<li><a href="3.获取球队详情和成员-增强版.md">获取球队详情和成员(增强版)</a> - 获取球队信息及成员列表</li>
</ul>