v2.3.8
<p>[TOC]</p>
<h1>进入房间[协议调整]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/room/enter</td>
<td style="text-align: left;">应答结构中增加一个字段</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">
// 应答数据
{
BD *Room_BD `json:"bd,omitempty"`
RP *Room_RP `json:"rp,omitempty"`
...
NoReserved bool `json:"no_reserved"`
TB *TurnTable `json:"tb,omitempty"` // 新增一个大转盘游戏状态数据, 具体结构参加下面:TurnTable
}
type TurnTable struct {
GameId int64 `json:"game_id"`
RoomId int64 `json:"room_id"`
Ante int32 `json:"ante"` // 赌注
MaxCount int32 `json:"max_count"` // 参与人员数量
Creater *JoinPlayer `json:"creater"` // 创建者
Players []*JoinPlayer `json:"players"` // 成员
Winers []string `json:"winers"` // 游戏结果: 按用户Id列表顺序依次淘汰, 最后一个为胜利者
Emoticons []int `json:"emoticons"` // 伴随Winers数据的随机表情数组
State int32 `json:"state"` // 状态 1:已创建 2:准备中 3:已完成 4: 已取消
CreatedAt int64 `json:"at"` // 游戏开始时间
RemainSec int `json:"remain"` // 游戏结束剩余时间(秒)
}
type JoinPlayer struct {
UserId string `json:"user_id"`
Name string `json:"name"` // 昵称
Photo *Photo `json:"photo,omitempty"` // 头像
Vip bool `json:"vip"` //
CoinLv int `json:"coinlv"` // 财富等级
CharmLv int `json:"charmlv"` // 魅力值
VipLvl int `json:"viplvl"` // vip等级
JoinAt int64 `json:"join_at"` // 加入时间
}</code></pre>
<h1>创建轮盘游戏[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/room/turnCreate</td>
<td style="text-align: left;">会触发房间广播消息:room.turntableInfo</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
roomid:int
coinNum:int 赌资
userCount:int 人数上限
withJoin:bool 创建者自动加入(不会触发join通知,客户端需要自行把自己添加进游戏)
// 应答
ok:bool
</code></pre>
<h1>加入轮盘游戏[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/room/turnJoin</td>
<td style="text-align: left;">会触发房间广播消息:room.turntableJoin</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
gameid:int
roomid:int
// 应答
ok:bool
</code></pre>
<h1>开始轮盘游戏[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/room/turnStart</td>
<td style="text-align: left;">会触发房间广播消息:room.turntableStart</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
gameid:int
roomid:int
// 应答
ok:bool
</code></pre>
<h1>取消轮盘游戏[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/room/turnCancel</td>
<td style="text-align: left;">会触发房间广播消息: room.turntableCancel</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
gameid:int
roomid:int
// 应答
ok:bool
需要特别处理的错误码:
code:450 desc:"TURNTABLE_NOEXIST" // 游戏已经不存在</code></pre>
<h1>房间轮盘游戏消息广播[新增]</h1>
<pre><code class="language-go">// room.turntableInfo
type RoomTurnTableInfo struct {
Super
Info *proto.TurnTable `json:"info"` // 此结构看上面的 TurnTable
}
// room.turntableJoin
type RoomTurnTableJoin struct {
Super // "action":"room.turntableJoin" ...
GameId int64 `json:"game_id"`
RoomId int64 `json:"room_id"`
Joiner *JoinPlayer `json:"joiner"`
State int `json:"state"`
}
// room.turntableStart
type RoomTurnTableStart struct {
Super // "action":"room.turntableStart" ...
GameId int64 `json:"game_id"`
RoomId int64 `json:"room_id"`
StartAt int64 `json:"start_at"`
State int `json:"state"`
Players []*proto.JoinPlayer `json:"players"` // 成员
Winers []string `json:"winers"` // 游戏结果: 按用户Id列表顺序依次淘汰, 最后一个为胜利者
Emoticons []int `json:"emoticons"` // 伴随Winers数据的随机表情数组
}
// room.turntableCancel
type RoomTurnTableCancel struct {
Super // "action":"room.turntableCancel" ...
GameId int64 `json:"game_id"`
RoomId int64 `json:"room_id"`
Closer string `json:"closer"` // 关闭者
State int `json:"state"`
}</code></pre>
<h1>房间轮盘游戏全服广播[新增]</h1>
<p><strong>当胜利者收获大量金币时触发</strong></p>
<pre><code class="language-go">requestId:-326 结构如下:
struct {
RoomId int `json:"room_id"` //
UserId string `json:"user_id"`
Name string `json:"name"` // 昵称
HeadUrl string `json:"head,omitempty"` // 头像
Vip bool `json:"vip"` // vip
CoinLv int `json:"coinlv"` // 财富等级
CharmLv int `json:"charmlv"` // 魅力值
VipLvl int `json:"viplvl"` // vip等级
WinCoin int `json:"winCoin"` // 赢了多少金币
}</code></pre>
<h1>静态文件增加轮盘游戏系统分成比例配置[调整]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">增加一个字段: room字段中增加turn_fee_ratio</td>
<td style="text-align: left;">int</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">字段如下:
TurnFeeRatio int `json:"turn_fee_ratio"` // 大轮盘游戏系统分成比例(0-100)
</code></pre>
<h1>静态文件增加签到奖励配置[调整]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">增加一个字段: sign_days</td>
<td style="text-align: left;">array</td>
</tr>
</tbody>
</table>
<p><strong>注意: 由于金币物品在游戏中不存在,服务端处理麻烦,如果某奖励是金币类型的话, 客户端需要自己多语言化和icon处理.</strong></p>
<pre><code class="language-go">结构如下: []SignDay
type SignDay struct {
Items []*SignItem `json:"items"`
}
type SignItem struct {
Type int `json:"type"` // 1 金币; 2 商城里面的物品; 3 礼物
Name string `json:"name"` // 物品名称
Icon string `json:"icon"` // 图片url
Count int `json:"count"` // 物品数量
}</code></pre>
<h1>获取签到列表[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/account/signList</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求 无
Udid string `json:"udid"` // 设备唯一ID 服务端需要从cookie里面拿到此ID
// 应答
{
Days int `json:"days"` // 本周签到天数
Signed bool `json:"signed"` // 本日是否签到
}
</code></pre>
<h1>执行签到动作[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/account/signHand</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求 无
Udid string `json:"udid"` // 设备唯一ID 服务端需要从cookie里面拿到此ID
// 应答
int:bool // 本周签到天数
</code></pre>
<h1>后台操作缓存Get接口[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/sys/cache/get</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
key:string //指定哪个key
field:string // 如果此key是hash类型,则表示字段名称 [可选]
// 应答
result:string // 本周签到天数
</code></pre>
<h1>后台操作缓存Set接口[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/sys/cache/set</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
key:string //指定哪个key
field:string // 如果此key是hash类型,则表示字段名称 [可选]
val:string // 设置的值(如果是复合结构,请序列化为json串)
// 应答
ok:bool //
</code></pre>
<h1>后台管理抽奖数据[新增]</h1>
<pre><code class="language-go">需求1 : 当公池超过 x 金币后 从公池提取 y 金币 到盈利池 (由系统自动触发管理)
后台: 需要在菜单页面上管理 x 和 y 的值的配置;
x 和 y 存储在 key: app_plat_turnwheel 中:
x : app_plat_turnwheel.conf_x
y : app_plat_turnwheel.conf_y
通过调用 /v1/sys/cache/set 接口实现
需求2 : 运营可以在页面上 对公池进行补充. 同时保留操作成功的日志.
由服务器提供对应接口:
/v1/sys/wheel/fillPublic
# val:int 填充金币数
</code></pre>
<h1>后台清理用户抽奖状态[新增]</h1>
<table>
<thead>
<tr>
<th style="text-align: left;">接口名</th>
<th style="text-align: left;">备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">/v1/sys/wheel/clearStatus</td>
<td style="text-align: left;">无</td>
</tr>
</tbody>
</table>
<pre><code class="language-go">// 请求
user_id:int //指定哪个key
// 应答
ok:bool //</code></pre>
<h1>后台管理首冲送礼配置[新增]</h1>
<pre><code class="language-go">新增 redis key: "app_first_flush_gift_cfg"
值的内容格式(array):
[
{"cash":6,"itemIds":[1,2,3...],"giftIds":[1,2,3...]}
{"cash":30,"itemIds":[1,2,3...],"giftIds":[1,2,3...]}
]
更新使用接口: /v1/sys/cache/set
// Go的结构
type FirstBuyCfgGift struct {
Cash float32 `json:"cash"` // 价值N人民币
ItemIds []int `json:"itemIds"` // 赠礼(商城里面的物品)
GiftIds []int `json:"giftIds"` // 赠礼(礼物)
}
</code></pre>
<h1>礼物全服公告协议[调整]</h1>
<pre><code>requestId:-317 结构如下:
struct {
Format string `json:"format"` // 保持版本兼容,先不删
LangFormats []LangFormat `json:"lang_formats"` // 参见LangFormat结构 新增
Args []string `json:"args"`
Gift *proto.Gift `json:"gift"`
Roomid int `json:"roomid"` // 可用来区分room场景
FromUser string `json:"from_user"` // 送礼方id
}
struct LangFormat {
Lang string `json:"lang"`
Format string `json:"format"`
Args []string `json:"args"` // 增加 参数
}</code></pre>