接口设计文档
<h1>接口设计文档</h1>
<h2>目录</h2>
<ul>
<li><a href="#websocket-消息接口">WebSocket 消息接口</a>
<ul>
<li><a href="#砍树操作">砍树操作</a></li>
<li><a href="#用户状态更新">用户状态更新</a></li>
<li><a href="#离线奖励领取">离线奖励领取</a></li>
<li><a href="#错误消息">错误消息</a></li>
</ul></li>
<li><a href="#restful-api">RESTful API</a>
<ul>
<li><a href="#升级砍树获得的代币数量">升级砍树获得的代币数量</a></li>
<li><a href="#升级能量恢复速度">升级能量恢复速度</a></li>
<li><a href="#升级能量上限">升级能量上限</a></li>
<li><a href="#升级采矿宠物">升级采矿宠物</a></li>
<li><a href="#开启宝箱">开启宝箱</a></li>
<li><a href="#使用能量填满机会">使用能量填满机会</a></li>
</ul></li>
</ul>
<h2>WebSocket 消息接口</h2>
<h3>砍树操作</h3>
<p><strong>消息类型</strong>:<code>chop_tree</code></p>
<p><strong>客户端发送</strong>:</p>
<pre><code class="language-json">{
&quot;type&quot;: &quot;chop_tree&quot;
}</code></pre>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;type&quot;: &quot;balance_updated&quot;,
&quot;balance&quot;: &lt;最新余额&gt;,
&quot;energy&quot;: &lt;最新能量&gt;,
&quot;availableChests&quot;: &lt;可用宝箱数量&gt;
}</code></pre>
<h3>用户状态更新</h3>
<p><strong>消息类型</strong>:<code>user_status</code></p>
<p><strong>服务器在用户上线时发送,包含用户的最新状态信息。</strong></p>
<pre><code class="language-json">{
&quot;type&quot;: &quot;user_status&quot;,
&quot;balance&quot;: &lt;余额&gt;,
&quot;energy&quot;: &lt;能量&gt;,
&quot;maxEnergy&quot;: &lt;能量上限&gt;,
&quot;energyRecoveryRate&quot;: &lt;能量恢复速度&gt;,
&quot;coinPerChop&quot;: &lt;每次砍树获得的代币数量&gt;,
&quot;petLevel&quot;: &lt;宠物等级&gt;,
&quot;autoChopEnabled&quot;: &lt;是否开启自动砍树&gt;,
&quot;availableChests&quot;: &lt;可用宝箱数量&gt;,
&quot;dailyEnergyRefillsUsed&quot;: &lt;当天已使用的能量填满次数&gt;
}</code></pre>
<h3>离线奖励领取</h3>
<p><strong>消息类型</strong>:<code>offline_rewards_collected</code></p>
<p><strong>服务器在用户重新上线并领取离线奖励后发送。</strong></p>
<pre><code class="language-json">{
&quot;type&quot;: &quot;offline_rewards_collected&quot;,
&quot;message&quot;: &quot;你获得了 &lt;奖励数量&gt; 个离线奖励代币!&quot;,
&quot;balance&quot;: &lt;最新余额&gt;
}</code></pre>
<h3>错误消息</h3>
<p><strong>消息类型</strong>:<code>error</code></p>
<p><strong>服务器在发生错误时发送。</strong></p>
<pre><code class="language-json">{
&quot;type&quot;: &quot;error&quot;,
&quot;message&quot;: &quot;&lt;错误信息&gt;&quot;
}</code></pre>
<h2>RESTful API</h2>
<h3>升级砍树获得的代币数量</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/upgrade/coin-per-chop</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;砍树获得的代币数量已升级!&quot;,
&quot;balance&quot;: &lt;最新余额&gt;,
&quot;coinPerChop&quot;: &lt;最新的 coinPerChop 值&gt;
}</code></pre>
<h3>升级能量恢复速度</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/upgrade/energy-recovery</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;能量恢复速度已升级!&quot;,
&quot;balance&quot;: &lt;最新余额&gt;,
&quot;energyRecoveryRate&quot;: &lt;最新的 energyRecoveryRate 值&gt;
}</code></pre>
<h3>升级能量上限</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/upgrade/max-energy</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;能量上限已升级!&quot;,
&quot;balance&quot;: &lt;最新余额&gt;,
&quot;maxEnergy&quot;: &lt;最新的 maxEnergy 值&gt;
}</code></pre>
<h3>升级采矿宠物</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/upgrade/pet</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;采矿宠物已升级到 Lv&lt;宠物等级&gt;!&quot;,
&quot;balance&quot;: &lt;最新余额&gt;,
&quot;petLevel&quot;: &lt;最新的宠物等级&gt;,
&quot;autoChopEnabled&quot;: &lt;是否开启自动砍树&gt;,
&quot;offlineMiningDuration&quot;: &lt;离线采矿持续时间&gt;,
&quot;offlineMiningBonus&quot;: &lt;离线采矿奖励加成比例&gt;,
&quot;offlineMiningBonusEndTime&quot;: &lt;离线采矿奖励加成结束时间&gt;
}</code></pre>
<h3>开启宝箱</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/chest/open</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;宝箱开启成功!你获得了奖励。&quot;,
&quot;availableChests&quot;: &lt;剩余可用宝箱数量&gt;,
&quot;balance&quot;: &lt;最新余额&gt;
// 其他奖励信息
}</code></pre>
<h3>使用能量填满机会</h3>
<p><strong>请求方式</strong>:<code>POST</code></p>
<p><strong>接口</strong>:<code>/api/energy/refill</code></p>
<p><strong>请求头</strong>:<code>Authorization: Bearer &lt;token&gt;</code></p>
<p><strong>服务器响应</strong>:</p>
<pre><code class="language-json">{
&quot;message&quot;: &quot;能量已填满!&quot;,
&quot;energy&quot;: &lt;最新能量&gt;,
&quot;dailyEnergyRefillsUsed&quot;: &lt;当天已使用的能量填满次数&gt;
}</code></pre>