Compare commits

...

636 Commits

Author SHA1 Message Date
by 97b5ba9f8a Merge branch 'develop' into machine
# Conflicts:
#	gamerule/clawdoll/constants.go
#	gamesrv/action/action_machine.go
#	gamesrv/clawdoll/player_clawdoll.go
#	gamesrv/clawdoll/scene_clawdoll.go
#	gamesrv/clawdoll/scenepolicy_clawdoll.go
#	protocol/clawdoll/clawdoll.pb.go
#	protocol/clawdoll/clawdoll.proto
#	public
2024-08-13 14:38:46 +08:00
by 6bbe98bd7e proto修改 2024-08-13 14:34:57 +08:00
by bf4ca7477c Merge branch 'machine' of https://git.pogorockgames.com/mango-games/server/game into machine 2024-08-13 14:13:06 +08:00
by 1795fdedfa 娃娃机状态 2024-08-13 14:13:01 +08:00
sk ed358edfce 娃娃机 2024-08-13 14:07:28 +08:00
sk 2568b66147 娃娃机 2024-08-13 14:06:00 +08:00
kxdd 149d896cc8 Merge branch 'machine' of https://git.pogorockgames.com/mango-games/server/game into machine 2024-08-13 11:58:29 +08:00
kxdd 8c743fb804 添加移动上分 2024-08-13 11:58:02 +08:00
by b8765251cc 获取娃娃机标识 2024-08-13 11:33:38 +08:00
by c665fd4816 gameserver sendToMachine 2024-08-13 10:34:20 +08:00
by a8f6039fe9 娃娃机连接 2024-08-13 09:52:39 +08:00
by af6114e69b 娃娃机 2024-08-13 09:39:23 +08:00
kxdd a4f739212c 修改娃娃机游戏ID 2024-08-13 09:30:50 +08:00
kxdd 028871d79a 添加娃娃机协议pb 2024-08-12 18:24:55 +08:00
kxdd 6afa58394e 娃娃机服务搭建 2024-08-12 18:14:32 +08:00
sk 81bf26ffc6 添加娃娃机配置 2024-08-12 17:39:33 +08:00
sk a2a70a130b 比赛场排名不在有并列的情况积 2024-08-12 17:36:04 +08:00
sk 5b399100e1 vip等级礼包获得奖励 2024-08-12 16:45:12 +08:00
sk ff086c3de3 兑换信息补充 2024-08-12 16:37:08 +08:00
sk dc631f4334 比赛场记录机器人皮肤 2024-08-12 16:30:03 +08:00
sk fd510661b7 兑换商品支持道具数量信息 2024-08-12 14:53:04 +08:00
sk 28826622c8 兑换商品支持道具数量信息 2024-08-12 14:25:26 +08:00
sk 53022f51d9 vip免费比赛次数 2024-08-12 11:52:31 +08:00
sk e4a43ee469 vip每日奖励 2024-08-12 10:36:45 +08:00
sk d16e49448f 解决冲突 2024-08-10 19:14:35 +08:00
sk 7f75f9a0a4 比赛场轮次淘汰允许不淘汰人员 2024-08-10 19:13:02 +08:00
by 4880d41aa3 娃娃机 2024-08-10 16:24:10 +08:00
by d232592524 娃娃机主机实现 2024-08-10 15:48:01 +08:00
sk cdc3b3d3da update excel 2024-08-10 09:10:44 +08:00
sk d46bbd65d0 update excel 2024-08-09 18:33:31 +08:00
sk b885612d1f public 2024-08-09 17:15:50 +08:00
sk 28622d6ffc vip等级礼包原价参数 2024-08-09 17:14:59 +08:00
sk 951b23f99d vip礼包领取 2024-08-09 16:43:48 +08:00
sk 16bcd9a858 支付返回参数扩展 2024-08-09 16:37:57 +08:00
sk 9dd4496b55 no message 2024-08-09 14:27:59 +08:00
sk 427098ee00 兑换礼包领取记录 2024-08-09 14:25:19 +08:00
sk e49ecbc1a1 vip等级礼包 2024-08-09 11:37:44 +08:00
sk 4cf1b00b4d update protocol 2024-08-08 18:30:05 +08:00
sk 239c93ea04 解决冲突 2024-08-08 18:27:31 +08:00
sk c8ba3b74ee vip特权1数据结构调整 2024-08-08 18:25:18 +08:00
sk 1c61b86681 新手引导启用时间 2024-08-08 17:37:57 +08:00
sk 61523b30d5 兑换礼包记录 2024-08-08 17:26:30 +08:00
sk 6ab8c5506e 兑换礼包记录 2024-08-08 16:57:31 +08:00
sk 33f0d7c8aa 添加娃娃机服务 2024-08-08 16:03:59 +08:00
sk a51037b1e7 新手引导 2024-08-08 14:59:42 +08:00
sk dd0794d0de no message 2024-08-07 08:24:28 +08:00
sk c988804222 皮肤红点通知 2024-08-06 16:24:07 +08:00
sk 731701832f update develop 2024-08-10 01:10:57 +08:00
sk 2e77085fe4 update excel 2024-08-10 01:10:42 +08:00
sk 95fcaa5977 vip升级检查皮肤红点 2024-08-10 01:05:28 +08:00
sk f0c42316f7 vip升级检查皮肤红点 2024-08-10 00:21:12 +08:00
sk 29c71a6efc fix:比赛场积分错误
周卡每日金币不能添加到比赛场
2024-08-10 00:20:47 +08:00
sk 7ceef9878c update excel 2024-08-06 10:27:08 +08:00
sk d6111cc733 update develop 2024-08-06 08:59:50 +08:00
sk e790746f53 比赛场随机发牌 2024-08-05 17:22:15 +08:00
sk fe1e66fec2 皮肤加成 2024-08-05 17:05:03 +08:00
sk d3c40dde03 update 2024-08-05 14:55:29 +08:00
sk 88e34954ad Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-08-05 14:17:05 +08:00
sk 3bc1019fd5 vip每日礼包加成 2024-08-05 14:16:53 +08:00
sk a227b67976 no message 2024-08-05 10:11:58 +08:00
sk 378b4cc681 update skin 2024-08-05 10:09:10 +08:00
sk c2a5d9b3b9 no message 2024-08-02 17:47:59 +08:00
by fa28e3233c 获奖记录修改 2024-08-02 15:26:36 +08:00
sk 8a56eb5776 道具分解 2024-08-01 18:34:17 +08:00
sk 0372450f1a fix:查询玩家信息 2024-08-01 14:39:24 +08:00
sk 95a258a1a2 fix:查询玩家信息 2024-08-01 14:29:06 +08:00
sk 55ed8da8fa update skin 2024-07-31 16:36:26 +08:00
sk 0bb1597aeb update skin 2024-07-31 15:47:28 +08:00
by 45a5dd6852 获奖记录 删除测试代码 2024-07-31 11:18:39 +08:00
by db01ddcb0d 获奖记录修改 2024-07-31 11:16:36 +08:00
by 36cce9df01 获奖记录修改 2024-07-31 11:15:08 +08:00
by 4d2a136eca 获奖记录修改 2024-07-31 10:09:49 +08:00
by 1136da298c 获奖记录修改 2024-07-31 09:42:41 +08:00
by 195ce9ff69 获奖记录修改 2024-07-31 09:36:57 +08:00
by ac1ee02c4d 获奖记录 2024-07-30 18:44:44 +08:00
sk a7a25ef028 解决冲突 2024-07-30 18:19:13 +08:00
sk 7b05295d67 获奖记录 2024-07-30 17:58:56 +08:00
by e318c85c26 获奖记录 2024-07-30 17:53:37 +08:00
by 107ac98d81 获奖记录 2024-07-30 17:04:41 +08:00
by 805c82bdd5 弹窗配置 2024-07-30 16:21:05 +08:00
by a5cd7beeeb 获奖记录 2024-07-30 15:47:35 +08:00
by 7d5085bf11 获奖记录 2024-07-30 15:16:44 +08:00
by eb3fefb9b8 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-30 14:40:11 +08:00
by fa3e48cd26 获奖记录 2024-07-30 14:40:06 +08:00
sk 86ba780a40 增加道具 2024-07-30 09:25:50 +08:00
sk e638f43619 fix:dbproxy异常 2024-07-29 18:15:42 +08:00
sk b6796cd8f6 解决冲突 2024-07-29 10:03:18 +08:00
sk 158aea0bf7 皮肤解锁类型新增vip等级解锁 2024-07-27 18:15:48 +08:00
by 7e04ceecee 获奖记录 2024-07-27 11:51:53 +08:00
by 6ef6bbe2cd 获奖记录 2024-07-27 11:44:37 +08:00
by a2501eefa4 排行榜代码(已屏蔽) + 获奖记录 2024-07-27 10:48:04 +08:00
sk 33c3e14e8b 随机机器人皮肤 2024-07-27 09:27:07 +08:00
sk 61b78ce88a update excel 2024-07-26 15:37:30 +08:00
sk fff05f7470 渠道活动开关 2024-07-25 16:01:09 +08:00
sk 25c7f68dac 道具空指针异常 2024-07-25 15:11:07 +08:00
sk 857f052728 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-25 14:49:36 +08:00
sk 9f6e9aa910 解决冲突 2024-07-25 14:49:25 +08:00
by 4bd50fa76a proto提交 2024-07-25 14:47:49 +08:00
sk 550e5eb690 fix:模型初始化 2024-07-25 14:46:47 +08:00
by 60709a140f Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop
# Conflicts:
#	protocol/webapi/common.proto
2024-07-25 14:39:03 +08:00
by b15fadfcc4 轮播图增加URL 2024-07-25 14:32:55 +08:00
sk 699a08f9bb update DB_Skin 2024-07-25 14:24:54 +08:00
sk ca9827db16 首充支持道具 2024-07-25 14:03:44 +08:00
sk 675a1cb078 update public 2024-07-25 11:43:57 +08:00
sk 22cc427ea5 皮肤技能加成 2024-07-25 11:26:32 +08:00
sk f1a6cd7389 Merge branch 'skin' into develop 2024-07-25 10:19:35 +08:00
sk 5eaa1e2016 皮肤技能加成 2024-07-25 09:57:31 +08:00
sk 6a3dae36e1 皮肤2期 2024-07-24 16:19:08 +08:00
by e60e272a9a 随机机器人宠物技能等级修改 2024-07-24 15:18:45 +08:00
sk ad116c9cd4 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-23 17:20:41 +08:00
sk 8c622c1d63 v卡掉落调整 2024-07-23 17:19:43 +08:00
by 77c2e5683c 随机机器人宠物技能等级 2024-07-23 15:11:49 +08:00
by 1322a09297 随机机器人宠物技能等级 2024-07-23 15:11:00 +08:00
by b6477c60ef 随机机器人宠物技能等级 2024-07-23 14:57:55 +08:00
by dcaf24653b Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-23 14:36:20 +08:00
by c024df9386 随机机器人宠物技能等级 2024-07-23 14:36:16 +08:00
sk e4afc80be9 修复赛季积分重置问题 2024-07-23 11:24:13 +08:00
sk a293b03b21 添加推广渠道 2024-07-22 14:49:10 +08:00
sk 8e880d65b1 道具兑换撤单 2024-07-19 10:21:12 +08:00
sk f637724a61 道具兑换撤单 2024-07-19 09:30:19 +08:00
sk 5e8c7f2ca0 update excel 2024-07-18 14:40:06 +08:00
sk 25618c0289 update excel 2024-07-18 14:32:51 +08:00
sk 152f41e317 update excel 2024-07-18 14:16:31 +08:00
by 49b10d0a99 钻石抽奖信息渠道修改 2024-07-18 11:44:49 +08:00
sk 99b25fa635 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-18 11:27:37 +08:00
sk 3a881657a2 活动开关 2024-07-18 11:15:12 +08:00
by da8a0f1a45 钻石抽奖权重计算修改 2024-07-17 15:17:15 +08:00
by 116d521789 钻石抽奖权重计算修改 2024-07-17 14:56:43 +08:00
by 84ffbd61c9 钻石抽奖权重计算修改 2024-07-17 14:56:20 +08:00
sk 7e28a059ae update excel 2024-07-17 11:27:30 +08:00
sk 39e84031ae 邮件红点 2024-07-16 11:29:52 +08:00
sk bf08bbbfbd 获得道具记录消耗 2024-07-15 17:12:05 +08:00
sk ea7e0a29b5 update develop 2024-07-15 15:55:46 +08:00
sk 45f1393600 update develop 2024-07-15 15:33:56 +08:00
sk ae2042bf4d 皮肤自动使用 2024-07-15 15:30:55 +08:00
sk 985c52ce0d update develop 2024-07-15 11:15:15 +08:00
sk 7f2f1eeedf update excel 2024-07-13 18:16:19 +08:00
sk 64577b5f2a 记录注册ip 2024-07-13 14:56:09 +08:00
sk 16fc31fbb0 同步皮肤修改 2024-07-13 09:30:38 +08:00
by 3fc151e340 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-12 18:11:03 +08:00
by 152ad64263 兑换商城判断是否显示判断 2024-07-12 18:10:17 +08:00
sk 23c1d1eaab 皮肤功能 2024-07-12 18:05:03 +08:00
sk 9ec909dd58 皮肤功能 2024-07-12 17:11:25 +08:00
sk 29a8319849 update excel 2024-07-11 18:35:30 +08:00
sk 1c502d603c Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-11 18:34:48 +08:00
sk 4fc7e30647 update excel 2024-07-11 18:33:02 +08:00
by a9b6d1a020 更新配置表 2024-07-11 18:31:51 +08:00
sk db8388c7bc update excel 2024-07-11 18:31:43 +08:00
sk 17b2cd0a64 update excel 2024-07-11 18:30:43 +08:00
sk 7e4be48aff update excel 2024-07-11 18:29:04 +08:00
by 81340b3787 更新配置表 2024-07-11 18:08:50 +08:00
by a8f44cdf47 更新配置表 2024-07-11 18:08:03 +08:00
by e53e94eb4c Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop
# Conflicts:
#	data/DB_GameItem.dat
#	data/DB_PropExchange.dat
#	data/DB_Task.dat
#	public
#	xlsx/DB_GameItem.xlsx
2024-07-11 18:04:54 +08:00
by e5a6ebfe76 更新配置表 2024-07-11 18:03:04 +08:00
by edf83e6e41 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-14 17:22:40 +08:00
by 34af2110e2 累计签到红点BUG修改 2024-07-14 17:22:29 +08:00
sk 56934264a3 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-11 17:24:06 +08:00
sk 1123fe94ab 赛季挑战任务 2024-07-11 17:23:56 +08:00
sk 7504a2dcdf Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-11 11:57:04 +08:00
sk 06343ab6fc 通行证活动统计数据 2024-07-11 11:56:34 +08:00
by e326ccdf81 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-11 10:20:25 +08:00
by 240711a0bd 兑换商城修改 2024-07-11 10:20:21 +08:00
sk a28d9163d8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-11 09:59:05 +08:00
sk b83be4028e update gameitem 2024-07-11 09:58:30 +08:00
by 8f55c7cb3d 删除测试代码 2024-07-10 17:53:15 +08:00
by f299b5ca13 钻石抽奖白名单权限 2024-07-10 17:49:46 +08:00
by 351d5979ba Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-10 16:34:40 +08:00
by 9636dccb99 钻石抽奖 2024-07-10 16:34:10 +08:00
sk d0f388e46b 充值金额统计 2024-07-10 16:23:23 +08:00
sk c21dd8e565 v卡兑换消耗统计 2024-07-10 16:17:51 +08:00
sk b5aba457a0 解决冲突 2024-07-10 15:58:45 +08:00
sk b3d95e3512 玩家信息添加v卡消耗和充值金额 2024-07-10 15:53:06 +08:00
by 1c6706d014 钻石抽奖 2024-07-10 15:26:03 +08:00
sk 3c910a4ad7 初始化充值金额 2024-07-10 15:16:09 +08:00
sk 8c843ecf0b 后台道具配置 2024-07-10 14:16:27 +08:00
sk 68ca6af923 增加日志 2024-07-10 14:05:30 +08:00
by 55e6142f60 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-10 11:41:47 +08:00
by 9481b8d1ab 兑换商城修改 2024-07-10 11:41:33 +08:00
sk f2c63ce427 v卡掉落 2024-07-10 11:18:49 +08:00
sk bc679f529e 解决冲突 2024-07-09 19:05:29 +08:00
sk 463117de96 修改protocol导入路径 2024-07-09 19:00:30 +08:00
by e19d9e29fe config还原 2024-07-09 17:48:17 +08:00
by e4f993fb8e proto编译文件 2024-07-09 17:46:04 +08:00
by c671da56e6 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop
# Conflicts:
#	etcd/keyconf.go
#	model/config.go
#	protocol/player/player.pb.go
#	protocol/player/player.proto
#	protocol/webapi/common.pb.go
#	protocol/webapi/common.proto
#	worldsrv/etcd.go
2024-07-09 17:43:14 +08:00
by 0484f1f47b 钻石抽奖实现 2024-07-09 17:35:55 +08:00
sk d29c485c87 记录注册ip和登录id 2024-07-09 15:49:51 +08:00
sk 7a0500c5eb 道具记录增加消耗道具数量 2024-07-09 15:20:44 +08:00
sk e9b80f805e 增加赠送奖励记录 2024-07-09 11:35:15 +08:00
sk 0d33bf9fb4 动态道具列表 2024-07-09 10:30:26 +08:00
sk 3d96c347d1 消耗钻石比赛开始再统计 2024-07-08 16:52:32 +08:00
sk b9fbedee9e update develop 2024-07-08 11:55:00 +08:00
sk 432de00d12 update deploy.bat 2024-07-08 11:54:23 +08:00
sk 1fcf9aa6d2 update develop 2024-07-08 11:51:13 +08:00
sk 4cf89236a8 update deploy.bat 2024-07-08 11:48:46 +08:00
sk 0bf6976352 任务变更通知 2024-07-08 11:46:19 +08:00
sk cdd855bfb2 修改构建脚本 2024-07-08 11:34:19 +08:00
sk 0f2404bf12 修改构建脚本 2024-07-05 18:42:51 +08:00
sk ea80d6e89c update game_item 2024-07-05 16:31:06 +08:00
sk d785e80622 update game_item 2024-07-05 16:27:00 +08:00
sk a9b8b5af02 update task 2024-07-05 15:51:07 +08:00
by fb3d73f61f 比赛场每日库存BUG修改 2024-07-05 15:43:12 +08:00
sk bc4c7c11aa update public 2024-07-05 15:03:13 +08:00
sk 78feeb2595 玩家信息初始化 2024-07-05 11:37:14 +08:00
sk ce2c857ff3 角色红点 2024-07-05 10:49:28 +08:00
sk 0ccfff81de 邮件红点问题 2024-07-05 10:05:55 +08:00
sk 42c1f5d79f 解决冲突 2024-07-05 09:29:03 +08:00
sk 7010f6215e 解决冲突 2024-07-05 09:28:41 +08:00
sk 19d8ed6cc5 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-18 00:20:51 +08:00
sk 090d8ba723 赛季通行证邮件翻译 2024-07-18 00:20:37 +08:00
sk 4f9e3b87ca Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-10 00:01:29 +08:00
sk c7992f9fc0 赛季通行证任务 2024-07-10 00:01:12 +08:00
by 538698be07 宠物技能红点提示 2024-07-04 17:10:31 +08:00
by 802f67cb7a Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-04 16:52:09 +08:00
by 1d99e5f794 宠物技能红点 补提 2024-07-04 16:51:57 +08:00
by b93901f765 宠物技能红点提示 2024-07-04 16:23:19 +08:00
sk 36d77da2fe 赛季通行证任务 2024-07-04 16:13:23 +08:00
sk 4d1e89cf91 赛季通行证兑换开关 2024-07-06 01:28:45 +08:00
sk 279b5b84cb Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-06 01:28:31 +08:00
sk aabf20da2c 赛季通行证兑换开关 2024-07-06 01:22:36 +08:00
by 76d95282ca Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-07-04 15:02:02 +08:00
by a5082f50e5 比赛场库存修改 2024-07-04 15:01:50 +08:00
sk 49bd65a05c 赛季通行证加成 2024-07-04 15:00:57 +08:00
sk cc656a5bbc 赛季通行证重置 2024-07-04 14:51:57 +08:00
sk 5eb468c7ff 邀请好友游戏任务 2024-07-04 11:20:00 +08:00
sk 9379613ae8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-04 11:12:23 +08:00
sk 938aa9d1dd 邀请好友游戏任务 2024-07-04 11:00:16 +08:00
by b28218b753 比赛场每日库存修改 2024-07-04 10:47:19 +08:00
sk 8de4b80458 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-04 10:24:01 +08:00
sk 2922689951 赛季通行证兑换记录 2024-07-04 10:23:41 +08:00
by bd3871aa10 比赛场数据 2024-07-04 10:22:00 +08:00
sk b5ce35eb68 赛季通行证兑换记录 2024-07-04 10:21:38 +08:00
sk 0b2fb94e69 赛季通行证兑换记录 2024-07-04 10:21:31 +08:00
by ee16983eaf 更新配置表 2024-07-04 10:12:41 +08:00
sk f25adaf3e9 赛季通行证兑换记录 2024-07-04 10:07:23 +08:00
by a757b4bbf9 比赛场数据保存 2024-07-04 09:55:54 +08:00
by 0e372fea74 屏蔽测试代码 2024-07-03 19:20:33 +08:00
by e68803b14a 同步宠物技能表 2024-07-03 19:15:18 +08:00
by 0972b85122 proto 2024-07-03 19:13:09 +08:00
by 1c14d96060 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop
# Conflicts:
#	protocol/webapi/common.pb.go
2024-07-03 19:12:22 +08:00
by 007b0c3a5b 比赛场库存 2024-07-03 19:11:49 +08:00
sk 182d4e9612 赛季通行证 2024-07-03 19:11:27 +08:00
sk 87a9186ae3 赛季通行证数据记录 2024-07-03 17:26:12 +08:00
sk e2d18f491b 赛季通行证排行榜 2024-07-03 15:25:33 +08:00
sk 0c45f9c44a update data 2024-07-03 15:12:55 +08:00
sk 1f8b7e1d70 打印rabbitmq日志 2024-07-03 14:47:07 +08:00
sk 8117f1af54 赛季通行证数据记录 2024-07-03 10:08:04 +08:00
sk 2e34c33768 赛季通行证账变记录 2024-07-02 20:51:10 +08:00
sk 83cfbe6381 赛季通行证排行榜奖励发放 2024-07-02 20:30:35 +08:00
sk aaf15d2b3d 龙币变化通知 2024-07-02 18:34:25 +08:00
sk 78d6a109fe 赛季通行证 2024-07-02 17:34:44 +08:00
by f68588eaa3 兑换修改 2024-07-02 15:26:54 +08:00
sk 972861ee83 update public 2024-07-02 14:36:08 +08:00
sk c75df5742e 赛季通行证活动 2024-07-02 14:30:49 +08:00
sk 4c7abf167e 赛季通行证 2024-07-02 14:21:24 +08:00
by 20b8fe91a0 兑换商城修改 2024-07-02 11:34:41 +08:00
by 2d7921897a 宠物技能游戏内展示 2024-07-02 11:29:41 +08:00
by 072c83c34c 广告任务 2024-07-02 09:02:59 +08:00
by b6aaf756e6 宠物技能 2024-07-01 11:47:42 +08:00
sk fde4187f5b Merge branch 'develop' into release 2024-06-29 18:58:24 +08:00
by 299c6502a6 解决钻石存钱罐发送数据自动补位问题 2024-06-29 18:56:51 +08:00
sk 74b868460b Merge branch 'develop' into release 2024-06-29 18:29:15 +08:00
by 6495a96f4e 钻石存钱罐需求更改只在tienlen中增加钻石 2024-06-29 18:28:33 +08:00
sk 7e80facc24 Merge branch 'develop' into release 2024-06-29 18:25:48 +08:00
by 8199231ac7 钻石存钱罐需求更改只在tienlen中增加钻石 2024-06-29 18:24:50 +08:00
by d11f7f75c2 钻石存钱罐 BUG修改只保留小数点后4位 2024-06-29 18:03:56 +08:00
sk 2805e4ca6c 通行证协议 2024-06-29 15:29:01 +08:00
sk 655fe2ff96 Merge branch 'develop' into release 2024-06-29 11:35:41 +08:00
sk 087bff7a13 邀请活动充值加积分 2024-06-29 11:33:03 +08:00
sk b4427a1459 Merge branch 'develop' into release 2024-06-28 18:58:09 +08:00
sk 1fcb3031ed 解决冲突 2024-06-28 18:57:13 +08:00
sk 446e696d7e 新邀请活动 2024-06-28 18:52:15 +08:00
sk f1ebe57d04 新邀请活动 2024-06-28 18:37:07 +08:00
sk a67c747a46 解决冲突 2024-06-28 16:58:58 +08:00
sk 3d80c1b9bb public 2024-06-28 16:56:02 +08:00
sk 57bc29a2d6 update data 2024-07-01 18:45:45 +08:00
sk 808a2458fe Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-07-01 18:43:26 +08:00
sk 9a6ced171b 跨周问题 2024-07-01 18:43:00 +08:00
by 5c9fec6e36 钻石存钱罐修改 2024-06-28 16:08:52 +08:00
sk b067f07b2c 新邀请活动 2024-06-28 15:33:09 +08:00
sk 303f0817ca mongodb事务 2024-06-28 15:07:57 +08:00
by 44ff58675d 钻石存储罐 领取次数达到上限 不增加钻石 2024-06-28 11:48:01 +08:00
by 7146df070c 增加背包兑换话费码操作返回结果 2024-06-28 10:53:55 +08:00
by 2b75df2e38 增加背包兑换话费码操作返回结果 2024-06-28 10:38:14 +08:00
by d4d8816a8b 钻石存钱罐修改 2024-06-28 09:52:47 +08:00
sk 70768089da 跨周根据所在时区计算日期 2024-06-28 09:14:11 +08:00
by d6a15311f7 钻石存钱罐修改 2024-06-27 18:55:51 +08:00
by 8d8031759d 钻石存储罐上线问题修改 2024-06-27 18:39:48 +08:00
sk 7688583735 邀请任务跨周积分重置 2024-06-27 18:25:12 +08:00
sk 291b1cee4f 邀请任务跨周积分重置 2024-06-27 18:23:39 +08:00
sk bdbf908e36 任务系统赠送金币记录 2024-06-27 17:53:53 +08:00
sk 235082c338 邀请活动渠道开关 2024-06-27 17:39:44 +08:00
sk 7786aeac9c Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-27 17:32:15 +08:00
by 606aff2240 金币存钱罐BUG修改 2024-06-27 17:12:48 +08:00
by ead0abf6b6 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-08-16 16:28:07 +08:00
by fa581628f3 七日签到修改 2024-08-16 16:27:37 +08:00
sk 0c0f270762 邀请活动开关 2024-06-27 16:23:22 +08:00
sk 32323aa1e8 新版邀请活动 2024-06-27 16:05:46 +08:00
sk 0eb4b826a5 新版邀请活动 2024-06-27 14:17:45 +08:00
sk c763d90325 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-27 11:43:35 +08:00
by b9ef093b18 宠物技能配置文件修改 2024-06-27 11:34:13 +08:00
by ae0ac2dbaf 钻石存储罐修改 2024-06-27 10:57:57 +08:00
sk bc3be9673d 新版邀请活动 2024-06-27 10:55:11 +08:00
by 0d11c2a79f Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-06-27 10:50:02 +08:00
by c2a7fa3834 修改钻石存储罐计算保留后4位小数 2024-06-27 10:49:51 +08:00
sk 79e207ebf9 新版邀请活动充值给自己加积分 2024-06-26 18:37:47 +08:00
sk 670726980e Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-26 17:50:16 +08:00
sk 9b50471d61 新版邀请活动充值给自己加积分 2024-06-26 17:50:08 +08:00
by c845dcad4e 配置表修改 2024-06-26 17:28:24 +08:00
by 20ebed0347 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-06-26 16:59:00 +08:00
by 3a60afc0d0 金币存钱罐修改 2024-06-26 16:58:50 +08:00
sk 1edaac6773 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-26 16:55:07 +08:00
sk 523ed5b296 新版邀请活动离线积分计算 2024-06-26 16:50:47 +08:00
by 09aa018fec 钻石存钱罐 +获取运营商数据 2024-06-26 16:46:17 +08:00
sk e0f2f76322 新版邀请活动 2024-06-26 14:30:06 +08:00
sk 5058d2aba1 新版邀请活动 2024-06-26 12:07:55 +08:00
sk 754f94abbd 添加日志 2024-06-26 11:50:55 +08:00
sk 96599507b8 添加日志 2024-06-26 11:46:16 +08:00
sk f771238b5e Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-26 11:26:02 +08:00
sk 77b8fdf0e9 新版邀请活动 2024-06-26 11:25:51 +08:00
by ac76712485 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-06-26 11:21:59 +08:00
by fdd5e3889e 背包使用兑换功能实现 2024-06-26 11:21:54 +08:00
sk 0c846595eb 解决冲突 2024-06-26 11:14:00 +08:00
sk 42efa82c2f update public 2024-06-26 11:05:44 +08:00
sk 7ae4392784 新版邀请活动 2024-06-26 11:04:51 +08:00
by 9ed4f708bc 备注信息修改 2024-06-26 09:38:59 +08:00
by 9ef37b0bce 备注信息修改 2024-06-26 09:29:12 +08:00
by 7d98b14f5b 钻石存钱罐更新 2024-06-25 18:42:42 +08:00
sk 8eb9a7c7a1 新版邀请活动 2024-06-25 18:06:32 +08:00
by f24d6c740b 删除测试代码 2024-06-25 17:52:12 +08:00
by 7e05717d2e 同步表 2024-06-25 17:48:10 +08:00
by da249ec436 同步表+钻石存储罐功能实现+七日签到进阶奖励修改 2024-06-25 17:31:41 +08:00
by 11d78d2386 累计签到进阶奖励修改增加google渠道区分 2024-06-30 18:10:52 +08:00
by c61c88266b 累计签到进阶奖励修改 2024-06-25 10:48:36 +08:00
by a6d76b3f94 累计签到进阶奖励更新 2024-06-24 09:42:37 +08:00
by 6985bc0437 累计签到进阶奖励实现 2024-06-24 09:29:56 +08:00
sk 56fb4612c7 比赛场开赛时间判断 2024-06-19 21:02:00 +08:00
sk 992ccb280e 比赛场开赛时间判断 2024-06-19 21:01:17 +08:00
sk 4f6222cdc5 比赛场开赛时间判断 2024-06-19 20:15:31 +08:00
sk 573a59045b Merge branch 'develop' into release 2024-06-19 19:43:35 +08:00
sk 168c2cc8c3 比赛场开赛时间判断 2024-06-19 19:04:51 +08:00
sk 2520ec2e7d 解决冲突 2024-06-19 15:26:25 +08:00
sk 9d246dcba3 排位赛赛季信息添加待领取奖励信息 2024-06-18 15:34:26 +08:00
sk a2584b22bc 钻石消耗记录 2024-06-15 18:24:39 +08:00
sk af7572f923 索引优化 2024-06-15 10:33:20 +08:00
sk 2a7ada450a 增加钻石消耗记录类型 2024-06-14 18:35:52 +08:00
by 5e212ae658 周卡续费BUG修改 2024-06-14 13:29:58 +08:00
by d57909b05a 删除无用代码 2024-06-14 11:41:18 +08:00
sk b24d97fe59 解散空闲房间 2024-06-14 11:40:51 +08:00
sk f1dee4a54a Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-06-14 09:31:37 +08:00
by feda7fd5c1 删除无用代码 2024-06-24 17:11:56 +08:00
sk c429d41900 比赛添加比赛区分 2024-06-13 13:55:00 +08:00
by a8500da1a7 周卡续费BUG修改 2024-06-12 16:44:59 +08:00
sk 3526ef069f 解散空闲房间
房间没有真人或观众,并且长时间没有真人进出房间就解散
2024-06-12 14:39:27 +08:00
sk 699596d022 update public 2024-06-11 11:35:22 +08:00
sk ceac412a25 比赛类型列表 2024-06-11 11:23:43 +08:00
sk 4ec8d6bc22 mongodb索引优化 2024-06-11 09:13:31 +08:00
sk c72b74824e 修改邀请绑定数量 2024-06-11 09:13:31 +08:00
sk 41361621ef 比赛日志用开始比赛时备份的配置不能用最新配置 2024-06-11 09:13:31 +08:00
sk d7b72cd6ea 对战场统计数据版本 2024-06-06 16:21:54 +08:00
sk 869a2c91d2 邀请积分排行榜 2024-06-06 16:09:14 +08:00
sk 604f7099ec 修改HOOK_AFTER_STOP 2024-06-06 16:04:03 +08:00
sk aee5f99d9d 重置个人水池调控数据 2024-06-06 14:22:18 +08:00
sk 8eea14794d Merge branch 'develop' into release 2024-06-05 15:25:03 +08:00
sk 14ee52a532 道具变化类型修改 2024-06-05 15:22:05 +08:00
sk 871c6ed72f Merge branch 'develop' into release 2024-06-05 09:18:49 +08:00
sk a13390909d 十三张调控记录 2024-06-05 09:14:53 +08:00
sk 5d113056c8 查询私人房列表 2024-06-04 15:41:10 +08:00
sk 3c3b6f7376 修复跨天检测错误 2024-06-04 15:39:38 +08:00
sk 46a4255273 Merge branch 'develop' into release 2024-06-04 09:27:19 +08:00
sk 776ba8a19c 进入好友房 2024-06-03 18:36:06 +08:00
sk 5e0b6139f9 tienlen记录调控信息 2024-06-03 16:54:54 +08:00
sk 39b71ea93f 比赛时间 2024-06-03 14:23:46 +08:00
sk 35c0e07004 发送邮件添加渠道筛选 2024-06-03 14:23:46 +08:00
sk e1812b5ecf vip添加比赛场免费次数 2024-05-31 09:58:00 +08:00
sk ef59d75ac5 vip添加比赛场免费次数 2024-05-30 17:33:31 +08:00
sk 7da2fd393b update DB_CollectBox 2024-05-29 17:29:19 +08:00
sk 9177d20d5e 修复空指针异常 2024-05-29 09:17:14 +08:00
sk b9c1b85193 玩家信息接口道具列表 2024-05-28 14:51:21 +08:00
sk bfbe02be66 道具变化添加后台操作类型 2024-05-28 14:49:20 +08:00
sk 3feb728527 update data 2024-05-28 11:16:34 +08:00
sk 60255489d5 预创建房间 2024-05-28 09:58:18 +08:00
sk 8b478a9f33 解决冲突 2024-05-28 09:26:18 +08:00
sk 516ab3f811 修复预创建房间问题 2024-05-28 09:24:14 +08:00
sk d3fb69d198 更新DB_CollectBox 2024-05-27 11:43:39 +08:00
sk 29745d23c2 渠道开关 2024-05-25 18:24:21 +08:00
sk d529ec2fed update 2024-05-25 17:56:03 +08:00
sk 97e03e2c22 游戏掉落 2024-05-25 16:32:17 +08:00
sk da5bb97469 review 2024-05-25 15:45:59 +08:00
sk 481860d9bc 修改注释 2024-05-25 15:03:17 +08:00
sk 0d252cebc5 添加道具类型 2024-05-25 14:47:23 +08:00
sk 63efa84183 update 2024-05-24 16:46:41 +08:00
sk a0050bd44d 离线加币问题 2024-05-24 15:23:29 +08:00
sk 7de9e8f939 rabbitmq 2024-05-24 15:13:16 +08:00
sk 6f0906c7c0 no message 2024-05-24 13:53:58 +08:00
sk d27c0270f8 no message 2024-05-24 12:00:32 +08:00
sk eddad2e788 解决冲突 2024-05-24 10:48:22 +08:00
sk bc77fe8749 保存玩家最后一次包渠道 2024-05-24 10:17:09 +08:00
sk 2cbd5d46a0 dbproxy读取配置文件 2024-05-24 10:00:15 +08:00
sk 5ffd4d849b dbproxy读取配置文件 2024-05-24 09:58:51 +08:00
sk 27dfedab18 etcd 2024-05-24 09:37:34 +08:00
sk 898f915542 dbproxy 2024-05-23 16:05:38 +08:00
sk a6c1b37e0c Merge branch 'match' into develop 2024-05-22 18:33:04 +08:00
sk 2f749646ab 解决冲突 2024-05-22 18:12:18 +08:00
sk eba76584ce update 2024-05-22 18:09:46 +08:00
sk 0fab663f61 update 2024-05-22 18:08:29 +08:00
sk e12bc1b03c Merge branch 'release' into develop 2024-05-22 18:02:07 +08:00
sk c8be1b9320 etcd,rabbitmq防止在init方法隐式调用 2024-05-22 17:57:42 +08:00
sk 489395ebb1 删除比赛场段位 2024-05-22 17:57:42 +08:00
sk c86e28383d 比赛场代码优化 2024-05-21 15:08:16 +08:00
sk b1c74ab992 update data 2024-05-21 09:38:27 +08:00
by 4254d08e38 兑换增加错误码返回 2024-05-20 14:50:11 +08:00
by e9c29f1442 背包修改 2024-05-20 10:36:48 +08:00
by 64bcbb896e 添加道具接口增加扣除道具检测 2024-05-20 10:09:48 +08:00
kxdd a9aeb01e99 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-17 17:09:22 +08:00
kxdd cb873bde49 配置表更新 2024-05-17 17:09:13 +08:00
sk a7b7d8f22d update DB_GameItem.xlsx 2024-05-17 15:59:38 +08:00
sk c8d380c587 update DB_GameItem.xlsx 2024-05-17 15:58:51 +08:00
sk ed1aa36815 拉霸奖池金额数据类型错误 2024-05-17 15:46:01 +08:00
sk 8fb59d54fc 拉霸奖池金额数据类型错误 2024-05-17 15:44:48 +08:00
sk 8bdd4f09dc 绑定人数统计问题 2024-05-17 14:16:56 +08:00
sk 1857c82cb8 no message 2024-05-17 11:36:27 +08:00
sk 393ef19b14 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-17 11:32:17 +08:00
sk fa34c9c8b2 绑定邀请人任务 2024-05-17 11:31:27 +08:00
kxdd 9b3a1b4d7c Merge branch 'dev_timeitem_n1' into develop 2024-05-17 11:08:08 +08:00
kxdd c43068db93 记牌器赠送修改 2024-05-17 11:07:45 +08:00
sk 11af348377 比赛配置添加手机卡类型 2024-05-17 09:30:03 +08:00
sk 0739d1eb12 优化游戏类型判断 2024-05-17 09:16:49 +08:00
sk 3828311520 邀请分享链接 2024-05-16 15:22:26 +08:00
sk d298ed97e8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-16 15:06:25 +08:00
sk 6dfe2301e0 修改游戏入口开关 2024-05-16 15:06:16 +08:00
by f1308bbb09 后台增加添加道具接口 2024-05-16 13:54:52 +08:00
by 5eb29259c1 后台增加添加道具接口 2024-05-16 11:59:52 +08:00
by 2ecbc2b1cb 后台增加添加道具接口 2024-05-16 09:59:18 +08:00
by 478ab9ea0a 兑换自提 添加道具走后台 2024-05-15 18:04:39 +08:00
kxdd f95eb75eb8 drop表格修改 2024-05-15 11:47:55 +08:00
by e58eb4d672 兑换创建订单增加telcharge字段 2024-05-15 10:12:41 +08:00
by 40263b3621 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-14 17:49:23 +08:00
by b0ba8e31ff 商城兑换修改 2024-05-14 17:49:18 +08:00
kxdd d6ce3816f4 Merge branch 'dev_pigbank_n1' into develop 2024-05-14 17:21:30 +08:00
kxdd 1f3133be78 存钱罐配置修改 2024-05-14 17:20:45 +08:00
sk 3e229a4bc9 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-14 11:45:46 +08:00
by 756ed06016 比赛log保存数据库修改 2024-05-14 11:44:31 +08:00
sk e2f1e997a0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-14 11:40:01 +08:00
sk d0637ca1ce 更新任务系统配置 2024-05-14 11:39:50 +08:00
by 06695defa6 比赛log保存数据库修改 2024-05-14 11:38:44 +08:00
sk d534e73613 道具日志 2024-05-14 10:26:40 +08:00
sk 0059b6d0c5 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-13 18:49:19 +08:00
sk 7cabdd4d14 tienlen记牌器问题 2024-05-13 18:48:44 +08:00
sk edd992aecd 兑换商城自提,优化道具使用日志 2024-05-13 18:48:44 +08:00
sk bc81c3c204 tienlen记牌器问题 2024-05-13 16:29:20 +08:00
kxdd e95d55ed10 Merge branch 'dev_timeitem_n1' into develop
# Conflicts:
#	model/player.go
2024-05-13 16:07:25 +08:00
kxdd 8a5752bf38 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011279 2024-05-13 16:01:49 +08:00
kxdd c4161a6b39 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011235 2024-05-13 15:18:13 +08:00
sk 1de1383383 tienlen排位加成 2024-05-13 12:02:16 +08:00
kxdd 075900766d Merge branch 'dev_newTimeitem' into dev_timeitem_n1 2024-05-13 11:39:21 +08:00
by fb4a82d26f 等级榜修改 2024-05-13 11:09:29 +08:00
by 469a8279fc 等级榜删除无用代码 2024-05-13 11:09:29 +08:00
by 528bccfe0b 玩家等级榜log输出error修改 2024-05-13 11:09:28 +08:00
kxdd 45b05b1fe5 记牌器时间计算bug 2024-05-13 11:07:04 +08:00
kxdd 052cfc1fe1 Merge branch 'dev_newTimeitem' into develop 2024-05-13 11:02:40 +08:00
kxdd a017518652 记牌器时间计算bug 2024-05-13 11:01:02 +08:00
kxdd 437ec223f7 --story=1000624 --user=李海亮 记牌器优化二版 https://www.tapd.cn/31044302/s/1011235 2024-05-13 10:52:53 +08:00
by 384f8b5b9c 删除打印log 2024-05-11 17:59:23 +08:00
by 355c6aae93 比赛场数据统计 2024-05-11 17:10:30 +08:00
sk 0e6487256a Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-11 17:06:58 +08:00
sk 5ac5c633a2 no message 2024-05-11 17:06:49 +08:00
sk 2eb19c9222 修改道具掉落功能 2024-05-11 17:00:47 +08:00
sk 7c02471d2c Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-11 16:54:25 +08:00
sk dcb54a2f58 修改道具掉落功能 2024-05-11 15:54:33 +08:00
sk f2d9d51dd6 好友申请列表 2024-05-11 15:17:02 +08:00
kxdd 579e27e17f --story=1000625 --user=李海亮 存钱罐购买限制补充 https://www.tapd.cn/31044302/s/1011001 2024-05-11 11:59:22 +08:00
sk ff78edf56b update 2024-05-11 11:02:24 +08:00
sk d7316c0ef2 review 2024-05-10 18:23:03 +08:00
sk 995cabbea6 update DB_GameItem.xlsx 2024-05-10 18:04:25 +08:00
sk 0d81105909 添加配置参数
CloseChannelSwitch 关闭渠道开关功能
2024-05-10 17:10:45 +08:00
sk 81f0d0fe43 update DB_GameItem.xlsx 2024-05-10 16:55:33 +08:00
sk 267c0492f6 解决冲突 2024-05-10 16:53:42 +08:00
sk f45708a8cc 道具掉落添加渠道开关 2024-05-10 16:38:10 +08:00
by 62bacfb0d2 兑换商城 自提功能实现 2024-05-10 16:24:09 +08:00
by b232f44a27 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-10 16:02:09 +08:00
by 16a41fff24 兑换商城 自提功能实现 2024-05-10 16:01:39 +08:00
sk 32fab5e0ca fix:游戏掉落道具 2024-05-10 15:30:14 +08:00
sk 5c90f2f0b7 fix:游戏掉落道具 2024-05-10 15:29:09 +08:00
sk 65258fe07e Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-10 15:15:08 +08:00
sk 085d1ef9b2 update DB_GameItem.xlsx 2024-05-10 15:14:53 +08:00
by 4553558144 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-10 15:13:31 +08:00
by 8c432f6f4e 好友申请记录 2024-05-10 15:13:25 +08:00
sk 9474b0dc30 修改游戏掉落物品配置规则 2024-05-10 14:47:38 +08:00
sk 061ee27ab7 update DB_GameItem.xlsx 2024-05-10 13:55:20 +08:00
sk 22dbae7f80 被邀请人充值任务 2024-05-10 11:44:58 +08:00
sk a943492d80 开启兑换渠道控制 2024-05-10 09:17:58 +08:00
sk 7dcd78d3ef 邀请分享链接简化
公告增加渠道参数
2024-05-09 17:18:16 +08:00
sk 5b758cdb80 update 2024-05-09 10:41:17 +08:00
sk 672881b9d2 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-08 18:49:23 +08:00
sk 6bd9d8f6c5 重置水池 2024-05-08 18:49:00 +08:00
sk c09c059b79 重置水池 2024-05-08 18:48:27 +08:00
sk 7219ddaed8 重置水池 2024-05-08 18:34:02 +08:00
sk 05f1e805b5 重置水池 2024-05-08 18:33:33 +08:00
sk 4753b4a71a 在线统计接口 2024-05-08 18:17:35 +08:00
by 666cbf64eb 等级榜修改 2024-05-08 18:07:07 +08:00
by 5eeec8469f 等级榜删除无用代码 2024-05-08 17:38:34 +08:00
by b000a8b05d 玩家等级榜log输出error修改 2024-05-08 17:36:14 +08:00
sk 64a1df39c5 代码优化 2024-05-08 16:36:07 +08:00
sk a822e21524 代码优化 2024-05-08 14:10:27 +08:00
sk 1c80a73741 Merge branch 'develop' into release 2024-05-07 18:09:20 +08:00
sk c1a15c59c3 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-07 18:09:07 +08:00
sk f3b757d0bc 比赛场优化 2024-05-07 18:09:01 +08:00
kxdd 2904be27f4 Merge branch 'dev_pigbank' into develop 2024-05-07 17:49:10 +08:00
kxdd 464f112038 存钱罐优化最大值 2024-05-07 17:48:35 +08:00
sk 48456483c7 tienlen牌库随机索引错误 2024-05-07 16:19:03 +08:00
sk e6240f1796 Merge branch 'develop' into release 2024-05-07 16:04:08 +08:00
kxdd 54eed8a7fc Merge branch 'dev_pigbank' into develop 2024-05-07 16:03:25 +08:00
kxdd 28bfd15336 存钱罐数据修改 2024-05-07 16:02:58 +08:00
sk 71b5e2599d Merge branch 'release' into 0507 2024-05-07 13:46:54 +08:00
sk cb1a157813 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-07 13:42:27 +08:00
kxdd 04cf926909 Merge branch 'dev_pigbank' into develop 2024-05-07 13:43:15 +08:00
kxdd 7b79b0defd 存钱罐 tienlen场景判断修改 2024-05-07 13:41:24 +08:00
sk 6aed244c8c update data
还原
DB_Createroom.xlsx
DB_Game_Drop.xlsx
2024-05-07 09:53:38 +08:00
kxdd ad4a424024 Merge branch 'dev_newTimeitem' into develop
# Conflicts:
#	gamesrv/tienlen/playerdata_tienlen.go
2024-05-06 18:34:37 +08:00
sk 6ffe1d5375 更新v卡掉落表 2024-05-06 17:55:32 +08:00
kxdd e6b3084bc5 Merge branch 'dev_pigbank' into develop 2024-05-06 17:15:37 +08:00
kxdd 161d215ffd --bug=1000247 --user=李海亮 存钱罐购买后相关问题 https://www.tapd.cn/31044302/s/1010551 2024-05-06 17:14:59 +08:00
kxdd 7113465765 记牌器优化 2024-05-06 16:37:09 +08:00
kxdd bbf2e11d8b 记牌器调整添加
--story=1000618 --user=李海亮 记牌器调整 https://www.tapd.cn/31044302/s/1010552
2024-05-06 16:18:11 +08:00
sk 1430e96752 update data 2024-05-06 16:09:25 +08:00
sk 9338164838 兼容以0开头的手机号登录 2024-05-06 15:45:06 +08:00
kxdd 7756f3ae19 还原本来的道具功能
--task=1000620 --user=李海亮 记牌器调整多道具修改逻辑 https://www.tapd.cn/31044302/s/1010514
2024-05-06 13:44:49 +08:00
sk 23b44237d8 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-05-06 11:32:29 +08:00
sk d6cb1f3266 兼容以0开头的手机号登录 2024-05-06 11:19:41 +08:00
sk 404017c33e no message 2024-05-06 11:19:41 +08:00
kxdd 83f571b543 Merge branch 'dev_pigbank' into develop 2024-05-06 10:31:22 +08:00
kxdd 84373d1297 【对局失败后存钱罐内没有存钱】https://www.tapd.cn/31044302/bugtrace/bugs/view?bug_id=1131044302001000241 2024-05-06 10:30:45 +08:00
kxdd 016ea68379 Merge branch 'dev_pigbank' into develop 2024-04-30 18:45:34 +08:00
kxdd 7c689dc6ec 存钱罐修改 2024-04-30 18:44:51 +08:00
sk 1979637197 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-30 17:45:51 +08:00
kxdd eaf8dd734f Merge branch 'dev_pigbank' into develop 2024-04-30 17:33:39 +08:00
kxdd 72b5f14b62 存钱罐修改 2024-04-30 17:32:57 +08:00
kxdd 909523ec3e Merge branch 'dev_pigbank' into develop
# Conflicts:
#	common/constant.go
#	data/DB_Pigbank_Prop.dat
#	data/DB_Pigbank_Prop.json
#	gamesrv/tienlen/playerdata_tienlen.go
#	protocol/server/pbdata.pb.go
#	xlsx/DB_Pigbank_Prop.xls
存钱罐功能
2024-04-30 14:22:18 +08:00
kxdd b10cf493b5 存钱罐添加日志 2024-04-30 14:05:36 +08:00
kxdd c2d7c1bfb5 存钱罐功能 2024-04-30 09:45:40 +08:00
sk f4205e72ac no message 2024-04-29 18:20:38 +08:00
sk bd92567666 解决冲突 2024-04-29 17:20:53 +08:00
sk 1231f711dc xlsx工具支持索引 2024-04-29 16:50:35 +08:00
sk c6c507ecb0 修复手机号登录问题 2024-04-29 16:47:05 +08:00
kxdd a01eba7242 Merge branch 'dev_timeitem' into develop 2024-04-29 11:40:17 +08:00
kxdd 2fbb9d0d0e 记牌器时效道具修改 2024-04-29 11:39:50 +08:00
lihailiang f7ae511332 存钱罐数据添加 2024-04-29 11:33:53 +08:00
lihailiang c65946aec0 Merge branch 'dev_timeitem' into develop 2024-04-29 10:10:06 +08:00
kxdd 4b04e554f8 记牌器配置修改 2024-04-29 09:54:43 +08:00
kxdd a2bfdd1d01 合并代码 2024-04-28 18:30:00 +08:00
lihailiang 03a67c3778 Merge branch 'dev_timeitem' into develop
# Conflicts:
#	common/constant.go
#	data/DB_GameItem.dat
#	protocol/server/pbdata.pb.go
#	protocol/server/server.pb.go
#	tools/xlsx2binary/agc.go
#	xlsx/DB_GameItem.xlsx
2024-04-28 18:23:13 +08:00
sk cad0f24bd8 机器人比赛场数量参数 2024-04-28 18:02:16 +08:00
kxdd a7ec02b38e 1.记牌器道具时限修改
2.存钱罐数据创建
2024-04-28 17:36:08 +08:00
kxdd a6a255f04b 1.记牌器时限修改
2.存钱罐配置数据
2024-04-28 17:34:49 +08:00
by 95701368a6 上传服务器脚本提交 2024-04-28 17:30:08 +08:00
sk 0cc96a5747 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-28 16:47:49 +08:00
sk 3bfcaaf110 修复钻石账变记录 2024-04-28 16:47:41 +08:00
by cfa469a02e log修改 2024-04-28 15:51:13 +08:00
sk 0da4aa2f09 evt_online临时删除 2024-04-28 15:28:55 +08:00
sk cc4125fee5 机器人互动表情 2024-04-28 14:59:13 +08:00
sk 2e6928f317 添加渠道信息 2024-04-28 11:45:43 +08:00
sk 4d9fee9b11 机器人互动表情 2024-04-28 11:34:37 +08:00
sk 864074490b 忽略xlsx2binary 2024-04-26 18:22:42 +08:00
kxdd ec0d303cb6 道具时限类道具修改 2024-04-26 17:46:21 +08:00
sk 23621acfbf 提交public仓库 2024-04-26 17:11:41 +08:00
sk 05844ea78d update 2024-04-26 16:36:56 +08:00
sk 4ac9879f72 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 16:32:49 +08:00
by 42302a32a5 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-05-06 00:00:47 +08:00
by 948c209a2c 周卡礼包 2024-05-06 00:00:35 +08:00
sk 853e7771f9 登录返回服务器时间戳 2024-04-26 16:32:40 +08:00
sk ebad03fce1 创建订单添加渠道 2024-04-26 15:25:19 +08:00
sk 40822ad4d0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 15:11:01 +08:00
by 0595d999f4 Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-26 14:58:36 +08:00
by 06d5ac5fad 周卡礼包需求修改 2024-04-26 14:58:31 +08:00
by 7fb33896de 周卡礼包需求修改 2024-04-26 14:57:26 +08:00
sk 2fe90f46a5 游戏牌局统计 2024-04-26 14:51:37 +08:00
sk fe0904c4fb 破产消息添加渠道 2024-04-26 13:51:36 +08:00
sk c40b779c39 成就任务 2024-04-26 13:40:47 +08:00
sk 7c11fc955b Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-26 11:42:03 +08:00
sk a6e65f236f 成就任务 2024-04-26 11:18:56 +08:00
by feeb04a7ed 周卡礼包 2024-04-26 10:21:36 +08:00
lihailiang e2e2a446bf tienlen时效类道具控制 2024-04-26 10:08:55 +08:00
sk b6aa7bec3c 任务系统优化 2024-04-26 09:44:25 +08:00
lihailiang 1efb19dce6 添加时效类道具功能 2024-04-25 17:41:53 +08:00
sk 2e0e6c72d0 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-25 16:44:11 +08:00
sk 77fbd7dfba 拉霸数据统计 2024-04-25 16:41:53 +08:00
by 60145c2325 log类型修改 2024-04-25 15:29:14 +08:00
sk ec635783c4 evt_online添加渠道信息 2024-04-25 13:34:23 +08:00
by f54082163b 周卡礼包 2024-04-25 11:45:32 +08:00
by d8e03cf53d 删除周卡测试代码 2024-04-25 11:40:17 +08:00
by aa79d36e9f Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-25 11:39:29 +08:00
by cc56a160af 周卡礼包 2024-04-25 11:39:24 +08:00
sk aa3a713699 evt_online添加渠道信息 2024-04-25 09:46:57 +08:00
sk 0cba0b0b25 Merge branch 'develop' into tongji 2024-04-24 17:22:25 +08:00
sk 5be9e98ae0 update_public.bat 2024-04-24 16:57:28 +08:00
sk 4e32e4861e no message 2024-04-24 16:49:54 +08:00
sk 88f9723217 update 2024-04-24 16:41:44 +08:00
sk 65d206eae0 水池添加调节赔率和新手池 2024-04-24 16:26:57 +08:00
sk 82b406cbcd 水池添加调节赔率和新手池 2024-04-24 16:26:35 +08:00
sk f81781f92d update 2024-04-24 16:02:23 +08:00
sk 456744f16a update data 2024-04-24 15:57:06 +08:00
sk b5c44ff2bb 复仇者联盟 2024-04-24 15:54:49 +08:00
sk 3a5039727b 优化账号表 2024-04-23 15:10:48 +08:00
WIN-20240218AEU\Administrator ebd1653b86 log修改 2024-04-23 15:08:43 +08:00
sk 7ecebe62e6 账号表补充渠道信息 2024-04-23 14:28:13 +08:00
by b15f3a250b git public 提交 2024-04-23 11:39:24 +08:00
by dc8b4a5baa proto编辑提交 2024-04-23 10:30:53 +08:00
by 9f4d1089cb Merge branch 'develop' of https://git.pogorockgames.com/mango-games/server/game into develop 2024-04-23 10:29:21 +08:00
by 91ec9259bb 玩家等级排行榜 2024-04-23 09:58:57 +08:00
sk df9ebec2e2 update data 2024-04-23 09:16:24 +08:00
sk 12383a1e20 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-23 09:05:26 +08:00
sk 0de01b7eaa 复仇者联盟 2024-04-22 18:39:27 +08:00
kxdd 5c37af3fe1 添加记牌器 2024-04-22 18:36:04 +08:00
sk a3b95947b0 添加注释 2024-04-22 14:19:16 +08:00
sk ac7492c2db no message 2024-04-22 11:06:22 +08:00
sk 663b93d52d update_deploy.bat 2024-04-22 10:45:10 +08:00
sk 9a9c62c1da etcd优化 2024-04-20 10:20:22 +08:00
sk 65aa4efebb fix:个人水池全局配置读取失败 2024-04-19 17:55:05 +08:00
sk 3d653d6413 道具使用优化 2024-04-19 14:55:10 +08:00
sk 33a087d1d7 开启拉霸游戏 2024-04-19 11:43:13 +08:00
sk aadfc98306 no message 2024-04-19 09:57:48 +08:00
sk 4fb1ec47b9 集卡活动 2024-04-18 15:01:43 +08:00
sk c45f5457ab no message 2024-04-17 18:32:32 +08:00
sk c8cf242a09 delete gen_web.bat 2024-04-17 18:10:06 +08:00
sk b0315b0e70 update_public.bat 2024-04-17 18:04:54 +08:00
sk 8418435068 fix:触发转盘签到事件 2024-04-17 17:59:35 +08:00
sk 8ac802e2a3 fix:道具数量同步错误 2024-04-17 17:49:34 +08:00
sk d632386936 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-04-17 17:02:23 +08:00
sk c1d2925933 update data 2024-04-17 16:59:14 +08:00
sk 71ad21de65 update_public.bat 2024-04-17 16:56:07 +08:00
sk b4765bf686 update_public.bat 2024-04-17 16:55:03 +08:00
sk 4745a067aa 集卡活动 2024-04-17 16:53:01 +08:00
sk 0e53147f13 proto生成优化 2024-04-17 16:52:35 +08:00
kxdd d792e0ceb1 【高棉象棋的每步时长优化】
https://www.tapd.cn/31044302/prong/stories/view/1131044302001000540
2024-04-17 14:48:40 +08:00
sk 79ace9a7bf update .gitignore 2024-04-17 11:07:58 +08:00
sk ad363f7d85 代码上传工具
tools/upload
2024-04-17 10:50:00 +08:00
598 changed files with 65649 additions and 41575 deletions

10
.gitignore vendored
View File

@ -6,6 +6,8 @@
# Folders
_obj
_test
/bin/*
**/backup
# Architecture specific extensions/prefixes
*.[568vq]
@ -18,6 +20,7 @@ _cgo_gotypes.go
_cgo_export.*
_testmain.go
tools/xlsx2binary/agc.go
*.exe
*.exe~
@ -35,11 +38,8 @@ _testmain.go
/dbproxy/dbproxy
/mgrsrv/mgrsrv
/gatesrv/gatesrv
/gamesrv/gamesrv
/worldsrv/worldsrv
/gamesrv/gamesrv
/robot/robot
/schedulesrv/schedulesrv
/ranksrv/ranksrv
/bin/*
**/backup
/schedulesrv/schedulesrv

View File

@ -29,9 +29,6 @@ update_public.sh
#### gen_go.bat
proto文件生成go文件
#### gen_web.bat
proto文件生成go文件
#### build.bat
生成可执行文件

View File

@ -1,13 +0,0 @@
@echo off
echo Build %1 task!
cd %1
go fmt
go vet
go build -v
echo errorlevel:%errorlevel%
if "%errorlevel%"=="0" exit
if not "%errorlevel%"=="0" echo %1 build failed!
pause
exit

View File

@ -1,30 +1,9 @@
go env -w GO111MODULE=off
@echo "go fmt common..."
cd common
go fmt
@echo "go fmt api3th..."
cd ../api3th
go fmt
@echo off
@echo "go fmt model..."
cd ../model
go fmt
call shell/build.bat
@echo "go fmt webapi..."
cd ../webapi
go fmt
@echo "go fmt lib complete!"
cd ..
start build-sub.bat dbproxy
start build-sub.bat mgrsrv
start build-sub.bat gatesrv
start build-sub.bat worldsrv
start build-sub.bat gamesrv
start build-sub.bat robot
start build-sub.bat ranksrv
@echo "Wait all build task complete!"
echo "Wait all build task complete!"
pause

View File

@ -1,10 +1,14 @@
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go env -w GO111MODULE=off
build.bat
@echo off
@echo "complete"
pause
call shell/build.bat
echo "Wait all build task complete!"
if %errorcode% neq 0 (
pause
)

View File

@ -1,10 +0,0 @@
set CGO_ENABLED=0
set GOOS=darwin
set GOARCH=amd64
go env -w GO111MODULE=off
build.bat
@echo "complete"
pause

View File

@ -19,10 +19,6 @@ var ActionMgrSington = &ActionMgr{
pool: make(map[int]ActionBase),
}
func init() {
}
type ActionMgr struct {
pool map[int]ActionBase
}

View File

@ -67,13 +67,13 @@ const (
GameID_ThirteenFree = 213 // 十三张(自由场经典场)
GameID_ThirteenFreeLaiZi = 214 // 十三张(自由场癞子场)
__GameId_Slot_Min__ = 300 //################拉霸类################
GameId_CaiShen = 301 //财神
GameId_Avengers = 302 //复仇者联盟
GameId_EasterIsland = 303 //复活岛
GameId_IceAge = 304 //冰河世纪
GameId_TamQuoc = 305 //百战成神
GameId_Fruits = 306 //水果拉霸
GameId_Richblessed = 307 //多福多财
GameId_CaiShen = 301 // 财神
GameId_Avengers = 302 // 复仇者联盟
GameId_EasterIsland = 303 // 复活岛
GameId_IceAge = 304 // 冰河世纪
GameId_TamQuoc = 305 // 百战成神
GameId_Fruits = 306 // 水果拉霸
GameId_Richblessed = 307 // 多福多财
__GameId_Fishing_Min__ = 400 //################捕鱼类################
GameId_HFishing = 401 //欢乐捕鱼
GameId_TFishing = 402 //天天捕鱼
@ -86,28 +86,27 @@ const (
GameId_CaoThap = 605 //CaoThap
GameId_AngerUncle = 606 // 愤怒大叔
GameId_SmallRoket = 607 // 小火箭
GameId_Clawdoll = 608 // 娃娃机
__GameId_ThrGame_Min__ = 700 //################三方类################
GameId_Thr_Dg = 701 //DG Game
GameId_Thr_XHJ = 901 //DG Game
)
// IsTienLen TienLen游戏
func IsTienLen(gameId int) bool {
return InSliceInt32(GetTienlenGameID(), int32(gameId))
}
func GetTienlenGameID() []int32 {
//todo 还要维护游戏id,好麻烦,还容易忘
return []int32{
GameId_TienLen, GameId_TienLen_yl,
GameId_TienLen_toend, GameId_TienLen_yl_toend,
GameId_TienLen_m, GameId_TienLen_m_toend,
GameId_TienLenSelect, GameId_TienLenSelect_toend,
GameId_TienLenSelect_yl, GameId_TienLenSelect_yl_toend,
GameId_TienLenRank, GameId_TienLenRank_toend,
GameId_TienLenRank_yl, GameId_TienLenRank_yl_toend,
}
}
const (
GameDifTienlen = "207" // tienlen
GameDifThirteen = "211" // 十三张
GameDifChess = "521" // 象棋
GameDifFish = "401" // 捕鱼
GameDifRocket = "607" // 小火箭
GameDifCaiShen = "301" // 财神
GameDifAvengers = "302" // 复仇者联盟
GameDifEaster = "303" // 复活节岛
GameDifIceAge = "304" // 冰河世纪
GameDifTamQuoc = "305" // 百战成神
GameDifFruits = "306" // 水果机
GameDifRichblessed = "307" // 多彩多福
GameDifClawdoll = "608" // 娃娃机
)
// IsTienLenYuLe TienLen娱乐
func IsTienLenYuLe(gameId int) bool {
@ -138,39 +137,6 @@ func IsTienLenToEnd(gameId int) bool {
return false
}
// IsChess 象棋游戏
func IsChess(gameId int) bool {
switch gameId {
case GameId_Chesstitians,
GameId_ChesstitiansMakruk,
GameId_ChesstitiansCambodian,
GameId_ChesstitiansCambodianRobot:
return true
}
return false
}
// IsThirteen 十三张游戏
func IsThirteen(gameId int) bool {
switch gameId {
case GameID_Thirteen4,
GameID_Thirteen8,
GameID_ThirteenFree,
GameID_ThirteenFreeLaiZi:
return true
}
return false
}
// IsThirteen 十三张游戏
func IsSmallRocket(gameId int) bool {
switch gameId {
case GameId_SmallRoket:
return true
}
return false
}
// IsLocalGame 自动分场模式的游戏
// 根据 DB_Createroom.xlsx 给玩家分场或创建房间
func IsLocalGame(gameId int) bool {
@ -185,9 +151,11 @@ func IsLocalGame(gameId int) bool {
return false
}
// IsPlayerPool 需要统计在个人水池的游戏
func IsPlayerPool(gameId int) bool {
if IsTienLen(gameId) || IsThirteen(gameId) {
func IsDaZhong(gameId int) bool {
switch gameId {
case GameId_TienLenSelect,
GameId_TienLenSelect_yl, GameId_TienLenSelect_toend,
GameId_TienLenSelect_yl_toend:
return true
}
return false
@ -212,30 +180,12 @@ const (
// 房间模式
const (
SceneMode_Public = iota //公共房间
SceneMode_Club //俱乐部房间
SceneMode_Private //私人房间
SceneMode_Match //赛事房间
SceneMode_Thr //三方房间
SceneMode_Public = 0 //公共房间
SceneMode_Private = 2 //私人房间
SceneMode_Match = 3 //赛事房间
SceneMode_Thr = 4 //三方房间
)
// 场景级别
//const (
// SceneLvl_Test = -1 // 试玩场(不要钱)
// SceneLvl_Experience = 0 // 体验场(花小钱)
// SceneLvl_Primary = 1 // 初级场
// SceneLvl_Middle = 2 // 中级场
// SceneLvl_Senior = 3 // 高级场
// SceneLvl_Professor = 4 // 专家场
//)
// 房费选项
//const (
// RoomFee_Owner int32 = iota //房主
// RoomFee_AA //AA
// RoomFee_Max
//)
const (
Platform_Rob = "__$G_P$__"
Platform_Sys = "0"
@ -248,71 +198,109 @@ const (
)
const (
GainWay_NewPlayer int32 = 0 //0.新建角色
GainWay_Pay = 1 //1.后台增加(主要是充值)
GainWay_ByPMCmd = 2 //2.pm命令
GainWay_MatchBreakBack = 3 //3.退赛退还
GainWay_MatchSystemSupply = 4 //4.比赛奖励
GainWay_Exchange = 5 //5.兑换
GainWay_ServiceFee = 6 //6.桌费
GainWay_CoinSceneWin = 7 //7.金豆场赢取
GainWay_CoinSceneLost = 8 //8.金豆场输
GainWay_CoinSceneEnter = 9 //9.进入金币场预扣
GainWay_ShopBuy = 10 //10.商城购买或者兑换
GainWay_CoinSceneLeave = 11 //11.金豆场回兑
GainWay_HundredSceneWin = 12 //12.万人场赢取
GainWay_HundredSceneLost = 13 //13.万人场输
GainWay_MessageAttach = 14 //14.邮件
GainWay_SafeBoxSave = 15 //15.保险箱存入
GainWay_SafeBoxTakeOut = 16 //16.保险箱取出
GainWay_Fishing = 17 //17.捕鱼
GainWay_CoinSceneExchange = 18 //18.金豆场兑换
GainWay_UpgradeAccount = 19 //19.升级账号
GainWay_API_AddCoin = 20 //20.API操作钱包
GainWay_GoldCome = 21 //21.财神降临
GainWay_Transfer_System2Thrid = 22 //22.系统平台转入到第三方平台的金币
GainWay_Transfer_Thrid2System = 23 //23.第三方平台转入到系统平台的金币
GainWay_RebateTask = 24 //24.返利获取
GainWay_IOSINSTALLSTABLE = 25 //25.ios安装奖励
GainWay_VirtualChange = 26 //26.德州虚拟账变
GainWay_CreatePrivateScene = 27 //27.创建私有房间
GainWay_PrivateSceneReturn = 28 //28.解散私有房间返还
GainWay_OnlineRandCoin = 29 //29.红包雨
GainWay_Expire = 30 //30.到期清理
GainWay_PromoterBind = 31 //31.手动绑定推广员
GainWay_GradeShopReturn = 32 //32.积分商城撤单退还积分
GainWay_Api_In = 33 //33.转移金币
GainWay_Api_Out = 34 //34.转移金币
GainWay_Shop_Buy = 35 //35.购买记录
GainWay_MAIL_MTEM = 36 //36.邮件领取道具
GainWay_Item_Sale = 37 //37.道具出售
GainWay_ReliefFund = 38 //38.领取救济金
GainWay_Shop_Revoke = 39 //39.撤单
GainWay_ActSign = 40 //40.签到
GainWay_MatchSignup = 41 //比赛报名费用
GainWay_MatchSeason = 42 //比赛赛季奖励
GainWay_ActSignNew = 43 //43.新签到
GainWay_ActTurnplate = 44 //44.轮盘
GainWay_ActBlindBox = 45 //45.盲盒
GainWay_ActFirstPay = 46 //46.首充
GainWay_VIPGift = 47 //47.vip礼包
GainWay_ActContinuousPay = 48 //48.连续充值
GainWay_ActJybAward = 49 //49.礼包码兑换
GainWay_LeaveDeduct = 50 //50.离开扣分
GainWay_LeaveCombat = 51 //51.离开补偿
GainWay_RankMatch = 52 //52.排位赛段位奖励
GainWay_AddBag = 53 //53 增加背包接口调用
GainWay_SmallRocket = 54 //54.小火箭收入
GainWay_BindTel = 55 //55.绑定手机号
GainWay_ReliefFund2 = 56 //56.救济金看视频双倍领取
GainWay_ActTurnplate2 = 57 //57.轮盘看视频双倍领取
GainWay_ActSignNew2 = 58 //58.签到看视频双倍领取
GainWay_ItemUse = 59 //59.道具使用
GainWay_PhoneScore = 60 //60.积分抽奖活动
GainWay_RankReward = 61 //61.段位奖励
GainWay_TaskReward = 62 //62.任务奖励
GainWay_Interact = 63 //63.房间内互动效果
GainWay_Collect = 64 //64.集卡活动
GainWay_NewPlayer int32 = 0 //新建角色
GainWay_Pay = 1 //后台增加(主要是充值)
GainWay_ByPMCmd = 2 //pm命令
GainWay_MatchBreakBack = 3 //退赛退还
GainWay_MatchSystemSupply = 4 //比赛奖励
GainWay_Exchange = 5 //兑换
GainWay_ServiceFee = 6 //桌费
GainWay_CoinSceneWin = 7 //金豆场赢取
GainWay_CoinSceneLost = 8 //金豆场输
GainWay_CoinSceneEnter = 9 //进入金币场预扣
GainWay_ShopBuy = 10 //商城购买或者兑换
GainWay_CoinSceneLeave = 11 //金豆场回兑
GainWay_HundredSceneWin = 12 //万人场赢取
GainWay_HundredSceneLost = 13 //万人场输
GainWay_MessageAttach = 14 //邮件
GainWay_SafeBoxSave = 15 //保险箱存入
GainWay_SafeBoxTakeOut = 16 //保险箱取出
GainWay_Fishing = 17 //捕鱼
GainWay_CoinSceneExchange = 18 //金豆场兑换
GainWay_UpgradeAccount = 19 //升级账号
GainWay_API_AddCoin = 20 //API操作钱包
GainWay_GoldCome = 21 //财神降临
GainWay_Transfer_System2Thrid = 22 //系统平台转入到第三方平台的金币
GainWay_Transfer_Thrid2System = 23 //第三方平台转入到系统平台的金币
GainWay_RebateTask = 24 //返利获取
GainWay_IOSINSTALLSTABLE = 25 //ios安装奖励
GainWay_VirtualChange = 26 //德州虚拟账变
GainWay_CreatePrivateScene = 27 //创建私有房间
GainWay_PrivateSceneReturn = 28 //解散私有房间返还
GainWay_OnlineRandCoin = 29 //红包雨
GainWay_Expire = 30 //到期清理
GainWay_PromoterBind = 31 //手动绑定推广员
GainWay_GradeShopReturn = 32 //积分商城撤单退还积分
GainWay_Api_In = 33 //转移金币
GainWay_Api_Out = 34 //转移金币
GainWay_Shop_Buy = 35 //购买记录
GainWay_MAIL_MTEM = 36 //邮件领取道具
GainWay_Item_Sale = 37 //道具出售
GainWay_ReliefFund = 38 //领取救济金
GainWay_Shop_Revoke = 39 //撤单
GainWay_ActSign = 40 //
GainWay_MatchSignup = 41 //比赛报名费用
GainWay_MatchSeason = 42 //比赛赛季奖励
GainWay_ActSignNew = 43 //新签到
GainWay_ActTurnplate = 44 //轮盘
GainWay_ActBlindBox = 45 //盲盒
GainWay_ActFirstPay = 46 //首充
GainWay_VIPGift = 47 //vip礼包
GainWay_ActContinuousPay = 48 //连续充值
GainWay_ActJybAward = 49 //礼包码兑换
GainWay_LeaveDeduct = 50 //离开扣分
GainWay_LeaveCombat = 51 //离开补偿
GainWay_RankMatch = 52 //排位赛段位奖励
GainWay_AddBag = 53 //增加背包接口调用
GainWay_SmallRocket = 54 //小火箭收入
GainWay_BindTel = 55 //绑定手机号
GainWay_ReliefFund2 = 56 //救济金看视频双倍领取
GainWay_ActTurnplate2 = 57 //轮盘看视频双倍领取
GainWay_ActSignNew2 = 58 //签到看视频双倍领取
GainWay_ItemUse = 59 //道具使用
GainWay_PhoneScore = 60 //手机积分活动
GainWay_RankReward = 61 //排位奖励
GainWay_TaskReward = 62 //任务奖励
GainWay_Interact = 63 //房间内互动效果
GainWayItemCollectExchange = 64 //集卡活动兑换
GainWay_WeekCardAward = 65 //周卡奖励
GainWay_PigrankTakeCoin = 66 //存钱罐领取耗费钻石
GainWay_PigrankGainCoin = 67 //存钱罐打开获取金币
GainWay_ItemMove = 68 //道具赠送
GainWay_RoleUpgrade = 69 //角色升级
GainWay_PetUpgrade = 70 //宠物升级
GainWay_Game = 71 //游戏掉落
GainWayItemCollectLogin = 73 //集卡活动登录
GainWay_Collect = 74 //集卡活动
GainWayItemPhoneScoreExchange = 75 //抽手机活动兑换
GainWayItemTaskInvite = 78 //邀请任务
GainWayItemTaskNewPlayer = 79 //新手任务
GainWayItemTaskAchievement = 80 //成就任务
GainWayItemTaskEveryDay = 81 //每日任务
GainWayItemWeekActive = 82 //周活跃奖励
GainWayContinueSign = 83 //累计签到
GainWayBackend = 84 // 后台操作
GainWayBuyCoin = 85 // 商城购买金币
GainWayBuyItem = 86 // 商城购买道具
GainWayBuyWeekCard = 87 // 商城购买周卡
GainWayVipBuyCoin = 88 // vip商城购买金币
GainWaySign7Con = 89 // 累计签到进阶奖励消耗
GainWay_PigrankGainDiamond = 90 //存钱罐打开获取钻石
GainWaySign7Add = 91 // 累计签到进阶奖励获得
GainWayItemChange = 92 //背包内使用道具兑换话费
GainWayPetSkillLevelUp = 93 //宠物技能升级
GainWayPermitAward = 94 // 赛季通行证等级奖励
GainWayItemPermitRank = 95 // 赛季通行证排行奖励
GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗
GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得
GainWayItemTaskPermit = 98 // 赛季通行证任务
GainWayDiamondLottery = 99 //钻石抽奖
GainWaySkinUnLock = 100 // 皮肤解锁消耗
GainWaySkinUpGrade = 101 // 皮肤升级消耗
GainWayItemFen = 102 // 道具分解消耗
GainWayItemFenGain = 103 // 道具分解获得
GainWayGuide = 104 //新手引导奖励
GainWayVipGift9 = 105 //vip等级礼包
)
// 后台选择 金币变化类型 的充值 类型id号起始
@ -612,6 +600,16 @@ const (
ItemIDWeekScore = 100004 // 周活跃积分
ItemIDGiftBox = 50001 // 碎片礼盒
ItemIDCollectBox = 50002 // 集卡礼盒
ItemIDLike = 100007 // 点赞
ItemIDCoffee = 100008 // 咖啡
ItemIDBucket = 100009 // 水桶
ItemIDSlippers = 100010 // 拖鞋
ItemIDPermit = 100011 // 赛季通行证积分
ItemIDLong = 50013 // 龙币
ItemIDPetSkill = 11001 //宠物技能升级道具
ItemIDVCard = 30001 // v卡
ItemIDJCard = 30002 // 金券
ItemDiamondScore = 100012 //钻石积分
)
func ToItemId(id int32) int32 {
@ -638,6 +636,10 @@ const (
ItemTypeVipExp = 10 //VIP经验
ItemTypeShopScore = 11 //积分
ItemTypeInteract = 12 // 互动表情
ItemTypeExpireTime = 15 // 时效类道具
ItemTypeObjective = 16 // 目标类道具
ItemTypeChange = 17 // 兑换话费
ItemTypeSkinChip = 22 // 皮肤碎片
)
func GetKeyNoviceGameId(gameId int) string {
@ -687,23 +689,37 @@ const (
// 活动,任务类型
const (
TaskTypeAdv = 1 // 看广告次数
TaskTypeBuyCoin = 2 // 买金币次数
TaskTypeLogin = 3 // 登录次数
TaskTypeWinTimes = 4 // 赢游戏次数
TaskTypePlayTimes = 5 // 玩游戏次数
TaskTypeRankMatchTimes = 6 // 排位赛次数
TaskTypePay = 7 // 充值金额
TaskTypeWinOrLose = 8 // 游戏输赢金币数量
TaskTypeTienlenCount = 9 // tienlen游戏场次
TaskTypeBindInviter = 10 // 绑定邀请人数量
TaskTypeWinCoin = 11 // 赢取金币数量
TaskTypeTienlenWinTimes = 12 // tienlen游戏赢取次数
TaskTypeInviteScore = 13 // 邀请积分
TaskTypeActivityScore = 14 // 周活跃积分数量
TaskTypeFirstLogin = 15 // 每日首次登录
TaskTypeInviteNum = 16 // 邀请绑定数量
TaskTypeTurnplate = 17 // 转盘抽奖次数
TaskTypeAdv = 1 // 看广告次数
TaskTypeBuyCoin = 2 // 买金币次数
TaskTypeLogin = 3 // 登录次数
TaskTypeWinTimes = 4 // 赢游戏次数
TaskTypePlayTimes = 5 // 玩游戏次数
TaskTypeRankMatchTimes = 6 // 排位赛次数
TaskTypePay = 7 // 充值金额
TaskTypeWinOrLose = 8 // 游戏输赢金币数量
TaskTypeTienlenCount = 9 // tienlen游戏场次
TaskTypeBindInviter = 10 // 绑定邀请人数量*
TaskTypeWinCoin = 11 // 赢取金币数量
TaskTypeTienlenWinTimes = 12 // tienlen游戏赢取次数
TaskTypeInviteScore = 13 // 邀请积分*
TaskTypeActivityScore = 14 // 周活跃积分数量
TaskTypeFirstLogin = 15 // 每日首次登录
TaskTypeInviteNum = 16 // 邀请绑定数量*
TaskTypeTurnplate = 17 // 转盘抽奖次数
TaskTypeInviteRecharge = 18 // 被邀请人充值金额*
TaskTypeLoseCoin = 19 // 输的金币数量
TaskType20 = 20 // 未使用
TaskTypeOnlineTs = 21 // 在线时长,秒
TaskTypeBuyPig = 22 // 购买任意存钱罐
TaskTypeDaZhong = 23 // 大众场胜利
TaskTypeInvitePlay = 24 // 邀请好友私人桌对局
TaskTypeJoinMatch = 25 // 参与比赛场
TaskTypeMatchRank10 = 26 // 比赛场前10名
TaskTypeCostDiamond = 27 // 消耗钻石数量
TaskTypeTienlenLoseCoin = 28 // Tienlen输的金币数量
TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量
TaskTypeRankMatchWinTimes = 30 // 排位胜利次数
TaskTypeBuyPermit = 31 // 购买典藏通行证
)
const (
@ -714,26 +730,25 @@ const (
)
const (
TaskActivityTypeEveryDay = 1 // 每日任务
TaskActivityTypeWeek = 2 // 每周任务
TaskActivityTypeNovice = 3 // 新手任务
TaskActivityTypeInvite = 4 // 邀请任务
TaskActivityTypeEveryDay = 1 // 每日任务
TaskActivityTypeWeek = 2 // 每周任务
TaskActivityTypeNovice = 3 // 新手任务
TaskActivityTypeInvite = 4 // 邀请任务
TaskActivityTypeAchieve = 5 // 成就任务
TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务
TaskActivityTypePermit = 7 // 赛季通行证任务
)
const HeadRange = 3 // 机器人头像id范围
const (
InviteScoreTypeBind = 1 // 绑定邀请码
InviteScoreTypeLogin = 2 // 每日登录
InviteScoreTypePlayTimes = 3 // 每日参与任意游戏
InviteScoreTypeRecharge = 4 // 充值
InviteScoreTypeGameTimes = 5 // 每局游戏
InviteScoreCheckWeek = -1 // 跨周
InviteScoreTypeBind = 1 // 绑定邀请码
InviteScoreTypePay = 2 // 充值
InviteScoreTypeRecharge = 3 // 充值完成
InviteScoreTypePayMe = 4 // 充值(给自己)
)
const TaskIDInvitePlayGame = 1000001
const TaskIDInviteRecharge = 1000002
const TaskIDInviteFirstLogin = 1000003
func InMatchChannel(ls []string, n string) bool {
if n == "" || len(ls) == 0 {
return false
@ -782,3 +797,59 @@ const (
)
var PetIDs = []int32{PetIDChicken}
const (
ChannelSwitchExchange = 1 // 兑换商城开关
ChannelSwitchDropItem = 2 // v卡掉落开关
ChannelSwitchInvite = 3 // 邀请开关
ChannelSwitchPermit = 4 // 典藏通行证开关
ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关
)
// 特殊商品id
const (
ShopIdWeekCard = 970001 // 周卡
ShopIdPermit = 990001 // 典藏通行证
)
const PermitStartTsKey = "permit_start_ts"
const PermitAdd = 0.2 // 典藏通行证赛季积分多加,百分比
const (
SkinGetAuto = 1
SkinGetItem = 2
SkinGetVip = 3
)
const (
SkillIdRankScore = 30002 // 排位积分加成百分比
SkillIdVipTimes = 30003 // VIP赛每日免费报名次数
SkillIdVipGift = 30004 // VIP每日礼包金币奖励提升百分比
SkillIdTask = 30005 // 每日任务金币奖励提升百分比
SkillIdDiamondLottery = 30007 // 每次钻石抽奖幸运值提升百分比
)
var (
SkinRandom = []int32{300001, 300002, 300007, 300006, 300005, 300004, 300003}
SkinWeightMap = map[int32]int{
300001: 20,
300002: 40,
300007: 40,
300006: 50,
300005: 40,
300004: 60,
300003: 70,
}
)
const (
AttributeGuideStep = 1 // 引导步骤
AttributeGuideSkip = 2 // 跳过引导
AttributeGuideTest = 3 // 测试引导
)
const (
On = 1 // 开启
Off = 2 // 关闭
)

View File

@ -95,17 +95,9 @@ func GetIntegerBit(num int32, index int32) bool {
}
// 校验身份证是否合法
var IDReg, _ = regexp.Compile(`(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)`)
var REGEXP_IPRule, _ = regexp.Compile(`^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$`)
var REGEXP_IPRule, _ = regexp.Compile(`^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$|^:((:[\da-fA-F]{1,4}){1,6}|:)$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?$|^([\da-fA-F]{1,4}:){6}:$`)
var ClubNameRule, _ = regexp.Compile("^[\u4e00-\u9fa5a-zA-Z-z0-9]+$")
func IsValidID(id string) bool {
if IDReg != nil {
return IDReg.Match([]byte(id))
}
return false
}
func IsValidIP(Ip string) bool {
const UNKNOWIP = "0.0.0.0"
if Ip == "" || Ip == UNKNOWIP {

View File

@ -19,6 +19,8 @@ func (hw HandlerWrapper) Process(s *netlib.Session, packetid int, data interface
return hw(s, packetid, data, sid)
}
// RegisterHandler 消息注册
// Deprecated: use [common.Register] instead
func RegisterHandler(packetId int, h Handler) {
if _, ok := handlers[packetId]; ok {
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", packetId, reflect.TypeOf(h)))
@ -36,7 +38,11 @@ func GetHandler(packetId int) Handler {
}
func Register(mainId int, msgType interface{}, h func(s *netlib.Session, packetId int, data interface{}, sid int64) error) {
RegisterHandler(mainId, HandlerWrapper(h))
if _, ok := handlers[mainId]; ok {
panic(fmt.Sprintf("repeate register handler: %v Handler type=%v", mainId, reflect.TypeOf(h)))
}
handlers[mainId] = HandlerWrapper(h)
f := func() interface{} {
tp := reflect.TypeOf(msgType)
if tp.Kind() == reflect.Ptr {

View File

@ -5,13 +5,12 @@ import (
"path/filepath"
"github.com/howeyc/fsnotify"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
)
var LastModifyConfig int64
func init() {
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
var err error
@ -62,7 +61,7 @@ type loggerParamModifiedCommand struct {
}
func (lmc *loggerParamModifiedCommand) Done(o *basic.Object) error {
logger.Logger.Info("===reload ", lmc.fileName)
logger.Logger.Info("reload logger.xml:", lmc.fileName)
data, err := os.ReadFile(lmc.fileName)
if err != nil {
return err
@ -70,7 +69,7 @@ func (lmc *loggerParamModifiedCommand) Done(o *basic.Object) error {
if len(data) != 0 {
err = logger.Reload(lmc.fileName)
if err != nil {
logger.Logger.Warn("===reload ", lmc.fileName, err)
logger.Logger.Warnf("reload logger.xml %v err: %v", lmc.fileName, err)
}
}
return err

View File

@ -40,6 +40,18 @@ func CopySliceIntToInt32(s []int) []int32 {
return nil
}
func CopySliceInt64ToInt32(s []int64) []int32 {
n := len(s)
if n != 0 {
temp := make([]int32, n)
for i := 0; i < n; i++ {
temp[i] = int32(s[i])
}
return temp
}
return nil
}
func CopySliceInt32ToInt(s []int32) []int {
n := len(s)
if n != 0 {

View File

@ -76,17 +76,15 @@ func InSameWeek(tNow, tPre time.Time) bool {
return true
}
preYear, preWeek := tPre.ISOWeek()
nowYear, nowWeek := tNow.ISOWeek()
if preYear == nowYear && preWeek == nowWeek {
if GetWeekStartTs(tNow.Unix()) == GetWeekStartTs(tPre.Unix()) {
return true
}
return false
}
func TsInSameWeek(tsNow, tsPre int64) bool {
tNow := time.Unix(tsNow, 0)
tPre := time.Unix(tsPre, 0)
tNow := time.Unix(tsNow, 0).Local()
tPre := time.Unix(tsPre, 0).Local()
return InSameWeek(tNow, tPre)
}
@ -143,3 +141,44 @@ func InTimeRange(beginHour, beginMinute, endHour, endMinute, checkHour, checkMin
checkTime := checkHour*100 + checkMinute
return beginTime <= checkTime && checkTime <= endTime
}
// GetWeekStartTs 获取本周开始的时间戳,周一为周的开始
func GetWeekStartTs(ts int64) int64 {
now := time.Unix(ts, 0).Local()
year, month, day := now.Date()
today := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
n := today.Weekday()
if today.Weekday() == 0 {
n = 7
}
st := today.AddDate(0, 0, -int(n-1)).Unix()
return st
}
func GetDayStartTs(ts int64) int64 {
now := time.Unix(ts, 0).Local()
year, month, day := now.Date()
today := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
return today.Unix()
}
func GetDayNextStartTs(ts int64) int64 {
return GetDayStartTs(ts) + 86400
}
func GetMonthTimestamp() []int64 {
now := time.Now().Local()
year, month, _ := now.Date()
// 本月起始日期
st := time.Date(year, month, 1, 0, 0, 0, 0, time.Local).Unix()
// 计算下个月的年和月
if month == time.December {
year = year + 1
month = time.January
} else {
month = month + 1
}
// 构建下个月的第一天的时间
et := time.Date(year, month, 1, 0, 0, 0, 0, now.Location()).Unix()
return []int64{st, et}
}

View File

@ -1,16 +1,15 @@
ъУ†
ъФ†
ъХ†
ъЦ†
ъЧ†
ИШ†
ИЩ†
ИЪ†
 ИЫ†
иУ†
иФ†
иХ†
иЦ†
ЮЧ†
2Ш†
2Щ†
2Ъ†
 2Ы†


Ь†
 2ЎЌђN
 ¬ЎЌР†
 2ЎЌ Ќ
Ь†
 фЎЌђN
 dЎЌР†
 ЎЌ Ќ

View File

@ -2,91 +2,91 @@
"Arr": [
{
"Id": 1,
"Rate": 250,
"Rate": 1000,
"ItemID": {
"50003": 1
}
},
{
"Id": 2,
"Rate": 250,
"Rate": 1000,
"ItemID": {
"50004": 1
}
},
{
"Id": 3,
"Rate": 250,
"Rate": 1000,
"ItemID": {
"50005": 1
}
},
{
"Id": 4,
"Rate": 250,
"Rate": 1000,
"ItemID": {
"50006": 1
}
},
{
"Id": 5,
"Rate": 250,
"Rate": 350,
"ItemID": {
"50007": 1
}
},
{
"Id": 6,
"Rate": 200,
"Rate": 50,
"ItemID": {
"50008": 1
}
},
{
"Id": 7,
"Rate": 200,
"Rate": 50,
"ItemID": {
"50009": 1
}
},
{
"Id": 8,
"Rate": 200,
"Rate": 50,
"ItemID": {
"50010": 1
}
},
{
"Id": 9,
"Rate": 200,
"Rate": 50,
"ItemID": {
"50011": 1
}
},
{
"Id": 10,
"Rate": 10,
"Rate": 1,
"ItemID": {
"50012": 1
}
},
{
"Id": 11,
"Rate": 50,
"Rate": 500,
"ItemID": {
"100001": 10000
}
},
{
"Id": 12,
"Rate": 300,
"Rate": 100,
"ItemID": {
"100001": 50000
}
},
{
"Id": 13,
"Rate": 50,
"Rate": 20,
"ItemID": {
"100001": 100000
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
 红米手机 æÑ(
é‡å¸<C3A5> ¡<>( Â
 酷帕碎片 ¡œ(
积分 ¬<>(20Þ
!2å…ƒè¯<C3A8>è´¹ç´å…券 ¹ê(0,
é‡å¸<C3A5> ¡<>(€­â0X
魔法师碎片 £œ(
哈奴曼啤酒 ©º(0
 积分 ¬<>(d0ï

 è<>¶å¥³ç¢Žç‰‡ ¢œ(
 钻石 ¢<>(
! 5å…ƒè¯<C3A8>è´¹ç´å…券 ºê(0
 钻石 ¢<>(0¸
积分 ¬<>0¸
1å…ƒè¯<C3A8>è´¹ç´å…券 ¸ê(

122
data/DB_DiamondLottery.json Normal file
View File

@ -0,0 +1,122 @@
{
"Arr": [
{
"Id": 1,
"Type": 1,
"Name": "红米手机",
"Item_Id": 76006,
"Grade": 1
},
{
"Id": 2,
"Type": 1,
"Name": "金币",
"Item_Id": 100001,
"Grade": 500000,
"Oddrate": 1758
},
{
"Id": 3,
"Type": 1,
"Name": "酷帕碎片",
"Item_Id": 20001,
"Grade": 1,
"Oddrate": 879
},
{
"Id": 4,
"Type": 1,
"Name": "积分",
"Item_Id": 100012,
"Grade": 50,
"Oddrate": 1758
},
{
"Id": 5,
"Type": 1,
"Name": "2元话费直兑券",
"Item_Id": 30009,
"Grade": 1,
"Oddrate": 44
},
{
"Id": 6,
"Type": 1,
"Name": "金币",
"Item_Id": 100001,
"Grade": 10000000,
"Oddrate": 88
},
{
"Id": 7,
"Type": 1,
"Name": "魔法师碎片",
"Item_Id": 20003,
"Grade": 1,
"Oddrate": 176
},
{
"Id": 8,
"Type": 1,
"Name": "哈奴曼啤酒",
"Item_Id": 73001,
"Grade": 1,
"Oddrate": 5
},
{
"Id": 9,
"Type": 1,
"Name": "积分",
"Item_Id": 100012,
"Grade": 100,
"Oddrate": 879
},
{
"Id": 10,
"Type": 1,
"Name": "蝶女碎片",
"Item_Id": 20002,
"Grade": 1,
"Oddrate": 1758
},
{
"Id": 11,
"Type": 1,
"Name": "钻石",
"Item_Id": 100002,
"Grade": 5,
"Oddrate": 1758
},
{
"Id": 12,
"Type": 1,
"Name": "5元话费直兑券",
"Item_Id": 30010,
"Grade": 1,
"Oddrate": 17
},
{
"Id": 13,
"Type": 1,
"Name": "钻石",
"Item_Id": 100002,
"Grade": 20,
"Oddrate": 440
},
{
"Id": 14,
"Type": 1,
"Name": "积分",
"Item_Id": 100012,
"Grade": 200,
"Oddrate": 440
},
{
"Id": 15,
"Type": 2,
"Name": "1元话费直兑券",
"Item_Id": 30008,
"Grade": 1
}
]
}

View File

@ -76,4 +76,30 @@
9ѓр<D193><18> ПЕџџџџ <20><>пРJ(<28>ЈжЙ0d8 @<40>џџџџџџџџHрљџџџџџџџP
:єр<D194><18>АЄМ<D084>§џџџ <20>алУє(<28>ШЏ %0d8 @<40>џџџџџџџџHрљџџџџџџџP
;ѕр<D195><18>Е­Йёџџџ <20><>ЪвЦ(<28>шэЁК0d8 @<40>џџџџџџџџHрљџџџџџџџP
;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP
;öà–€À×µåÅÿÿÿ €À¨Êš:(€ ·‡é0d8 @œÿÿÿÿÿÿÿÿHàùÿÿÿÿÿÿÿP
ÑÛ·€ŽÎ€áë €„¯_XÈ`À¤ÿ
ÒÛ·€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
ÓÛ·€¼Á– €ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
ÔÛ·€ø‚­€ä—Ð<>ßÀJXÈ`€Â¸›
᩸€ŽÎ€áë €„¯_XÈ`À¤ÿ
⩸€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
㩸€¼Á– €ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
䩸€ø‚­€ä—Ð<>ßÀJXÈ`€Â¸›
ñ÷¸€ŽÎ€áë €„¯_XÈ`À¤ÿ
ò÷¸€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
ó÷¸€¼Á– €ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
ô÷¸€ø‚­€ä—Ð<>ßÀJXÈ`€Â¸›
<08>ƹ€ŽÎ€áë €¨Ö¹`À¤ÿ
‚ƹ€¼Á– €ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
ƒÆ¹€ø‚­€ä—Ð<>ßÀJXÈ`€Â¸›
‘”º€ŽÎ€áë €¨Ö¹`À¤ÿ
’”º€¼Á– €ò‹¨ €È¯ %XÈ`€¡Ü<C2A1>
“”º€ø‚­€ä—Ð<>ßÀJXÈ`€Â¸›
¡âº€›îÀ–± €ÚÄ XÈ` ÝŒ
¢âº€ŽÎ€áë €„¯_XÈ`À¤ÿ
£âº€Æ†<C386>€åšw €”ëÜ`À¶üš
¤âº€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ
±°»€›îÀ–± €ÚÄ XÈ` ÝŒ
²°»€ŽÎ€áë €„¯_XÈ`À¤ÿ
³°»€Æ†<C386>€åšw €”ëÜ`À¶üš
´°»€Œ<E282AC>ž€Êµî €¨Ö¹`€íøµ

View File

@ -857,6 +857,214 @@
"LowerOdds": -100,
"LowerOddsMax": -800,
"ProfitRate": 20
},
{
"Id": 3010001,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3010002,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3010003,
"InitValue": 3000000000,
"LowerLimit": 2500000000,
"UpperLimit": 10000000000,
"CtrlRate": 200,
"InitNovicValue": 3250000000
},
{
"Id": 3010004,
"InitValue": 6000000000,
"LowerLimit": 5000000000,
"UpperLimit": 20000000000,
"CtrlRate": 200,
"InitNovicValue": 6500000000
},
{
"Id": 3020001,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3020002,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3020003,
"InitValue": 3000000000,
"LowerLimit": 2500000000,
"UpperLimit": 10000000000,
"CtrlRate": 200,
"InitNovicValue": 3250000000
},
{
"Id": 3020004,
"InitValue": 6000000000,
"LowerLimit": 5000000000,
"UpperLimit": 20000000000,
"CtrlRate": 200,
"InitNovicValue": 6500000000
},
{
"Id": 3030001,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3030002,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3030003,
"InitValue": 3000000000,
"LowerLimit": 2500000000,
"UpperLimit": 10000000000,
"CtrlRate": 200,
"InitNovicValue": 3250000000
},
{
"Id": 3030004,
"InitValue": 6000000000,
"LowerLimit": 5000000000,
"UpperLimit": 20000000000,
"CtrlRate": 200,
"InitNovicValue": 6500000000
},
{
"Id": 3040001,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3040002,
"InitValue": 3000000000,
"LowerLimit": 2500000000,
"UpperLimit": 10000000000,
"CtrlRate": 200,
"InitNovicValue": 3250000000
},
{
"Id": 3040003,
"InitValue": 6000000000,
"LowerLimit": 5000000000,
"UpperLimit": 20000000000,
"CtrlRate": 200,
"InitNovicValue": 6500000000
},
{
"Id": 3050001,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3050002,
"InitValue": 3000000000,
"LowerLimit": 2500000000,
"UpperLimit": 10000000000,
"CtrlRate": 200,
"InitNovicValue": 3250000000
},
{
"Id": 3050003,
"InitValue": 6000000000,
"LowerLimit": 5000000000,
"UpperLimit": 20000000000,
"CtrlRate": 200,
"InitNovicValue": 6500000000
},
{
"Id": 3060001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3060002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3060003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3060004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
},
{
"Id": 3070001,
"InitValue": 6000000,
"LowerLimit": 5000000,
"UpperLimit": 20000000,
"CtrlRate": 200,
"InitNovicValue": 6500000
},
{
"Id": 3070002,
"InitValue": 60000000,
"LowerLimit": 50000000,
"UpperLimit": 200000000,
"CtrlRate": 200,
"InitNovicValue": 65000000
},
{
"Id": 3070003,
"InitValue": 300000000,
"LowerLimit": 250000000,
"UpperLimit": 1000000000,
"CtrlRate": 200,
"InitNovicValue": 325000000
},
{
"Id": 3070004,
"InitValue": 600000000,
"LowerLimit": 500000000,
"UpperLimit": 2000000000,
"CtrlRate": 200,
"InitNovicValue": 650000000
}
]
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -54,18 +54,6 @@
"GameId": 401,
"GameDif": "401"
},
{
"Id": 30600,
"Name": "水果拉霸",
"GameId": 306,
"GameDif": "306"
},
{
"Id": 30400,
"Name": "冰河世纪",
"GameId": 304,
"GameDif": "304"
},
{
"Id": 52100,
"Name": "ChessCambodian",
@ -165,6 +153,54 @@
"Name": "小火箭",
"GameId": 607,
"GameDif": "607"
},
{
"Id": 60800,
"Name": "娃娃机",
"GameId": 608,
"GameDif": "608"
},
{
"Id": 30100,
"Name": "财运神",
"GameId": 301,
"GameDif": "301"
},
{
"Id": 30200,
"Name": "复仇者联盟",
"GameId": 302,
"GameDif": "302"
},
{
"Id": 30300,
"Name": "复活节岛",
"GameId": 303,
"GameDif": "303"
},
{
"Id": 30400,
"Name": "冰河世纪",
"GameId": 304,
"GameDif": "304"
},
{
"Id": 30500,
"Name": "百战成神",
"GameId": 305,
"GameDif": "305"
},
{
"Id": 30600,
"Name": "水果拉霸",
"GameId": 306,
"GameDif": "306"
},
{
"Id": 30700,
"Name": "多财多福",
"GameId": 307,
"GameDif": "307"
}
]
}

View File

@ -1,210 +1,55 @@
Яа(Бъ:
Я<18>'(Бъ:
Я<18>N(Бъ:
Я<18>u(Бъ:
Я <>(Бъ:
ЯЈУ(Бъ:
ЯАъ(Бъ:
ЯИ<>(Бъ:
 ЯРИ(Бъ:
Ð ±ê(2
ˆ' ±ê(12
<10>N ±ê(c2
˜u ±ê(•2
 œ ±ê2
¨Ã ±ê2
°ê ±ê2
¸ ±ê2
 À¸ ±ê2

ЯШп(Бъ:
 Яа<>(Бъ:
 Яи­(Бъ:
 Ярд(Бъ:
Яшћ(Бъ:
Я№Ђ(Бъ:
ЯјЩ(Бъ:
Я<18>ё(Бъ:
Я<18><>(Бъ:
Я<18>П(Бъ:
Я<18>ц(Бъ:
Я <>(Бъ:
Я<> (Бъ:
ЯР<> (Бъ:
Я<18>Ё(Бъ:
ЯрЇ(Бъ:
ЯАЎ(Бъ:
Я<18>Е(Бъ:
ЯаЛ(Бъ:
Я Т(Бъ:
Я№Ш!(Бъ:
ЯРЯ$(Бъ:
 Я<18>ж'(Бъ:
!Ярм*(Бъ:
"ЯАу-(Бъ:
#Я<18>ъ0(Бъ:
$Яа№3(Бъ:
%Я ї6(Бъ:
&Я№§9(Бъ:
'ЯР<>=(Бъ:
(Я<18><>z(Бъ:
)ЯР<>Б(Бъ:

*Я<18>­т(Бъ:2
+ЯРУ<D0A0>(Бъ:2K
,Я<18>кФ (Бъ:Kd
-ЯР№ѕ (Бъ:d}
.Я<18><>Ї(Бъ:}<7D>
/ЯР<>и(Бъ:<04>Џ
0Я<18>Д<EFBFBD>(Бъ:ЏШ
1ЯРЪК(Бъ:Шс
2Я<18>сы(Бъ:сњ
3аа(Бъ:
4а<18>'(Бъ:
5а<18>N(Бъ:
6а<18>u(Бъ:
7а <>(Бъ:
8аЈУ(Бъ:
9аАъ(Бъ:
:аИ<>(Бъ:
;аРИ(Бъ:
<аШп(Бъ:
=аа<>(Бъ:
>аи­(Бъ:
?ард(Бъ:
@ашћ(Бъ:
Aа№Ђ(Бъ:
BајЩ(Бъ:
Cа<18>ё(Бъ:
Dа<18><>(Бъ:
Eа<18>П(Бъ:
Fа<18>ц(Бъ:
Gа <>(Бъ:
Hа<> (Бъ:
IаР<> (Бъ:
Jа<18>Ё(Бъ:
KарЇ(Бъ:
LаАЎ(Бъ:
Mа<18>Е(Бъ:
NааЛ(Бъ:
Oа Т(Бъ:
Pа№Ш!(Бъ:
QаРЯ$(Бъ:
Rа<18>ж'(Бъ:
Sарм*(Бъ:
TаАу-(Бъ:
Uа<18>ъ0(Бъ:
Vаа№3(Бъ:
Wа ї6(Бъ:
Xа№§9(Бъ:
YаР<>=(Бъ:
Zа<18><>z(Бъ:
[аР<>Б(Бъ:

\а<18>­т(Бъ:2
]аРУ<D0A0>(Бъ:2K
^а<18>кФ (Бъ:Kd
_аР№ѕ (Бъ:d}
`а<18><>Ї(Бъ:}<7D>
aаР<>и(Бъ:<04>Џ
bа<18>Д<EFBFBD>(Бъ:ЏШ
cаРЪК(Бъ:Шс
dа<18>сы(Бъ:сњ
eба(Бъ:
fб<18>'(Бъ:
gб<18>N(Бъ:
hб<18>u(Бъ:
iб <>(Бъ:
jбЈУ(Бъ:
kбАъ(Бъ:
lбИ<>(Бъ:
mбРИ(Бъ:
nбШп(Бъ:
oба<>(Бъ:
pби­(Бъ:
qбрд(Бъ:
rбшћ(Бъ:
sб№Ђ(Бъ:
tбјЩ(Бъ:
uб<18>ё(Бъ:
vб<18><>(Бъ:
wб<18>П(Бъ:
xб<18>ц(Бъ:
yб <>(Бъ:
zб<> (Бъ:
{бР<> (Бъ:
|б<18>Ё(Бъ:
}брЇ(Бъ:
~бАЎ(Бъ:
б<18>Е(Бъ:
<08>баЛ(Бъ:
<08>б Т(Бъ:
<08>б№Ш!(Бъ:
<08>бРЯ$(Бъ:
<08>б<18>ж'(Бъ:
<08>брм*(Бъ:
<08>бАу-(Бъ:
<08>б<18>ъ0(Бъ:
<08>ба№3(Бъ:
<08>б ї6(Бъ:
<08>б№§9(Бъ:
<08>бР<>=(Бъ:
<08>б<18><>z(Бъ:
<08>бР<>Б(Бъ:

<08>б<18>­т(Бъ:2
<08>бРУ<D0A0>(Бъ:2K
<08>б<18>кФ (Бъ:Kd
<08>бР№ѕ (Бъ:d}
<08>б<18><>Ї(Бъ:}<7D>
<08>бР<>и(Бъ:<04>Џ
<08>б<18>Д<EFBFBD>(Бъ:ЏШ
<08>бРЪК(Бъ:Шс
<08>б<18>сы(Бъ:сњ
<08>ва(Бъ:
<08>в<18>'(Бъ:
<08>в<18>N(Бъ:
<08>в<18>u(Бъ:
<08>в <>(Бъ:
<08>вЈУ(Бъ:
<08>вАъ(Бъ:
<08>вИ<>(Бъ:
<08>вРИ(Бъ:
 вШп(Бъ:
Ёва<>(Бъ:
Ђви­(Бъ:
Ѓврд(Бъ:
Євшћ(Бъ:
Ѕв№Ђ(Бъ:
ІвјЩ(Бъ:
Їв<18>ё(Бъ:
Јв<18><>(Бъ:
Љв<18>П(Бъ:
Њв<18>ц(Бъ:
Ћв <>(Бъ:
Ќв<> (Бъ:
­вР<> (Бъ:
Ўв<18>Ё(Бъ:
ЏврЇ(Бъ:
АвАЎ(Бъ:
Бв<18>Е(Бъ:
ВваЛ(Бъ:
Гв Т(Бъ:
Дв№Ш!(Бъ:
ЕвРЯ$(Бъ:
Жв<18>ж'(Бъ:
Зврм*(Бъ:
ИвАу-(Бъ:
Йв<18>ъ0(Бъ:
Ква№3(Бъ:
Лв ї6(Бъ:
Мв№§9(Бъ:
НвР<>=(Бъ:
Ов<18><>z(Бъ:
ПвР<>Б(Бъ:

Рв<18>­т(Бъ:2
СвРУ<D0A0>(Бъ:2K
Тв<18>кФ (Бъ:Kd
УвР№ѕ (Бъ:d}
Фв<18><>Ї(Бъ:}<7D>
ХвР<>и(Бъ:<04>Џ
Цв<18>Д<EFBFBD>(Бъ:ЏШ
ЧвРЪК(Бъ:Шс
Шв<18>сы(Бъ:сњ
Èß ±ê2
 І ±ê2
 Ø­ ±ê2
 àÔ ±ê2
èû ±ê2
𢠱ê2
øÉ ±ê2
€ñ ±ê(˜2
ˆ˜ ±ê2
<10>¿ ±ê2
˜æ ±ê(­2
 <> ±ê2
ð“ ±ê 2
Àš ±ê2
<10>¡ ±ê2
à§ ±ê2
°® ±ê(‰2
€µ ±ê2
л ±ê(ç"2
 Â ±ê(Ö&2
ðÈ! ±ê(Å*2
ÀÏ$ ±ê(´.2
 <10>Ö' ±ê(£22
!àÜ* ±ê(ë32
"°ã- ±ê(³52
#€ê0 ±ê(û62
$Ðð3 ±ê(Ã82
% ÷6 ±ê(:2
&ðý9 ±ê(Ó;2
'À„= ±ê(=2
(€‰z ±ê(ã>2
)À–± ±ê(«@2
*€­â ±ê(<28>N2
+ÀÓ ±ê(<28>N2
,€ÚÄ ±ê(<28>N2
-Àðõ ±ê(<28>N2
.€‡§ ±ê(<28>N2$
/À<>Ø ±ê(<28>N2$*
0€´‰ ±ê(<28>N2)0
1Àʺ ±ê(<28>N2.6
2€áë ±ê(<28>N23<
3€Â×/ ±ê(<28>N2e{
4€£ÃG ±ê(<28>N2¤
5€„¯_ ±ê(<28>N2Çö

File diff suppressed because it is too large Load Diff

BIN
data/DB_GiftCard.dat Normal file

Binary file not shown.

20
data/DB_GiftCard.json Normal file
View File

@ -0,0 +1,20 @@
{
"Arr": [
{
"Id": 1,
"ShopID": 970001,
"Name": "7日礼品卡",
"Rewards": {
"100001": 5000000,
"50001": 10
},
"DayRewards": {
"100001": 1000000
},
"Time": 7,
"Equity": [
0
]
}
]
}

5
data/DB_PassShow.dat Normal file
View File

@ -0,0 +1,5 @@
<18>‰z Łś
N N
â§

21
data/DB_PassShow.json Normal file
View File

@ -0,0 +1,21 @@
{
"Arr": [
{
"Id": 1,
"ShowType": 1,
"ShowVolume": 2000003,
"Location": 20003
},
{
"Id": 2,
"ShowType": 2,
"ShowVolume": 10001,
"Location": 10001
},
{
"Id": 3,
"ShowType": 3,
"ShowVolume": 300002
}
]
}

14
data/DB_PetSkill.dat Normal file
View File

@ -0,0 +1,14 @@
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>"
W<>=(2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@J<08>7
W <>=( 2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@ J<08>Y
X
<>=(
2 驥鷹ク。螳亥梱:1蝨ィ陲ォ轤ク蠑ケ譏守。ョ謾サ蜃サ譌カ{0}%讎ら紫螳悟<E89EB3>蜈咲稔@
J<08><10>

134
data/DB_PetSkill.json Normal file
View File

@ -0,0 +1,134 @@
{
"Arr": [
{
"Id": 1,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 1,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 1,
"ItemConsum": {
"11001": 20
}
},
{
"Id": 2,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 2,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 2,
"ItemConsum": {
"11001": 3
}
},
{
"Id": 3,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 3,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 3,
"ItemConsum": {
"11001": 5
}
},
{
"Id": 4,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 4,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 4,
"ItemConsum": {
"11001": 8
}
},
{
"Id": 5,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 5,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 5,
"ItemConsum": {
"11001": 13
}
},
{
"Id": 6,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 6,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 6,
"ItemConsum": {
"11001": 21
}
},
{
"Id": 7,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 7,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 7,
"ItemConsum": {
"11001": 34
}
},
{
"Id": 8,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 8,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 8,
"ItemConsum": {
"11001": 55
}
},
{
"Id": 9,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 9,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 9,
"ItemConsum": {
"11001": 89
}
},
{
"Id": 10,
"SkillId": 10001,
"SkillType": 1,
"PetId": 1000001,
"SkillLevel": 10,
"SkillName": "金鸡守卫",
"SkillDes": "在被炸弹明确攻击时{0}%概率完全免疫",
"SKillValue": 10,
"ItemConsum": {
"11001": 144
}
}
]
}

View File

@ -0,0 +1,4 @@
 (Ђ­в08Ўи;@dHPc
 ((Ђ­в8ўи;@dH¬PЗ
яБЧ/ 2(Ђ­в0о8Ји;@dHоPу

View File

@ -0,0 +1,40 @@
{
"Arr": [
{
"Id": 1,
"BuyCountMin": 1,
"BuyCountMax": 1,
"CostDiamond": 30,
"MaxGold": 10000000,
"MaxDiamond": 150,
"DiamondId": 980001,
"CoinPrice": 100,
"DiamondPrice": 150,
"DiamondNowPrice": 99
},
{
"Id": 2,
"BuyCountMin": 2,
"BuyCountMax": 2,
"CostDiamond": 40,
"MaxGold": 10000000,
"MaxDiamond": 300,
"DiamondId": 980002,
"CoinPrice": 100,
"DiamondPrice": 300,
"DiamondNowPrice": 199
},
{
"Id": 3,
"BuyCountMin": 3,
"BuyCountMax": 99999999,
"CostDiamond": 50,
"MaxGold": 10000000,
"MaxDiamond": 750,
"DiamondId": 980003,
"CoinPrice": 100,
"DiamondPrice": 750,
"DiamondNowPrice": 499
}
]
}

9
data/DB_Pigbank_Prop.dat Normal file
View File

@ -0,0 +1,9 @@
 WinCoinRate
 LoseCoinRate
 DayBuyMaxCnt
WinCoinRateDiamond
LoseCoinRateDiamond
DayBuyMaxCntDiamond

34
data/DB_Pigbank_Prop.json Normal file
View File

@ -0,0 +1,34 @@
{
"Arr": [
{
"Id": 1,
"PorpName": "WinCoinRate",
"PropValue": 5
},
{
"Id": 2,
"PorpName": "LoseCoinRate",
"PropValue": 10
},
{
"Id": 3,
"PorpName": "DayBuyMaxCnt",
"PropValue": 3
},
{
"Id": 4,
"PorpName": "WinCoinRateDiamond",
"PropValue": 5
},
{
"Id": 5,
"PorpName": "LoseCoinRateDiamond",
"PropValue": 10
},
{
"Id": 6,
"PorpName": "DayBuyMaxCntDiamond",
"PropValue": 3
}
]
}

Binary file not shown.

View File

@ -63,6 +63,54 @@
"Gain": {
"100002": 500
}
}
},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
]
}

BIN
data/DB_Skin.dat Normal file

Binary file not shown.

147
data/DB_Skin.json Normal file
View File

@ -0,0 +1,147 @@
{
"Arr": [
{
"Id": 300001,
"SkinClass": 4,
"Model": "juese",
"SkinPic": "icon_300001",
"SkinName": "活力-黄",
"SkinType": "mg_01",
"SkinSkillName": "0",
"SkinSkillIcon": "0",
"SkinSkillDes": "0",
"Turn": [
0
],
"TurnKey": [
"0"
]
},
{
"Id": 300002,
"SkinClass": 2,
"Model": "juese",
"SkinPic": "icon_300002",
"SkinName": "财神送福",
"SkinType": "mg_06",
"UnlockType": 2,
"UnlockItem": {
"310002": 20
},
"SkinSkillName": "福气东来",
"SkinSkillIcon": "SkillIcon-30002",
"SkinSkillDes": "排位赛积分提升",
"Turn": [
1
],
"TurnKey": [
"DBSkinUnlock_300002_t1"
]
},
{
"Id": 300003,
"SkinClass": 2,
"Model": "juese",
"SkinPic": "icon_300003",
"SkinName": "活力-粉",
"SkinType": "mg_02",
"UnlockType": 3,
"UnlockItem": {
"5": 0
},
"SkinSkillName": "活力满满",
"SkinSkillIcon": "SkillIcon-30003",
"SkinSkillDes": "VIP赛每日免费报名次数提升",
"Turn": [
2
],
"TurnKey": [
"DBSkinUnlock_300003_t1"
]
},
{
"Id": 300004,
"SkinClass": 2,
"Model": "juese",
"SkinPic": "icon_300004",
"SkinName": "活力-青",
"SkinType": "mg_03",
"UnlockType": 3,
"UnlockItem": {
"2": 0
},
"SkinSkillName": "金币满满",
"SkinSkillIcon": "SkillIcon-30004",
"SkinSkillDes": "每日礼包金币奖励提升",
"Turn": [
2
],
"TurnKey": [
"DBSkinUnlock_300004_t1"
]
},
{
"Id": 300005,
"SkinClass": 2,
"Model": "juese",
"SkinPic": "icon_300005",
"SkinName": "摇滚小子",
"SkinType": "mg_04",
"UnlockType": 2,
"UnlockItem": {
"310005": 20
},
"SkinSkillName": "金币加成",
"SkinSkillIcon": "SkillIcon-30005",
"SkinSkillDes": "每日任务金币奖励加成",
"Turn": [
3
],
"TurnKey": [
"DBSkinUnlock_300005_t1"
]
},
{
"Id": 300006,
"SkinClass": 4,
"Model": "juese",
"SkinPic": "icon_300006",
"SkinName": "潜水员",
"SkinType": "mg_05",
"UnlockType": 2,
"UnlockItem": {
"310006": 20
},
"SkinSkillName": "0",
"SkinSkillIcon": "0",
"SkinSkillDes": "0",
"Turn": [
4
],
"TurnKey": [
"DBSkinUnlock_300006_t1"
]
},
{
"Id": 300007,
"SkinClass": 2,
"Model": "juese",
"SkinPic": "icon_300007",
"SkinName": "冲浪健将",
"SkinType": "mg_07",
"UnlockType": 2,
"UnlockItem": {
"310007": 20
},
"SkinSkillName": "好运加成",
"SkinSkillIcon": "SkillIcon-30007",
"SkinSkillDes": "每次钻石抽奖幸运值提升",
"Turn": [
5
],
"TurnKey": [
"DBSkinUnlock_300007_t1"
]
}
]
}

89
data/DB_SkinLevel.dat Normal file
View File

@ -0,0 +1,89 @@
á§B0
á§"ñõB0
á§"ñõB0
á§"ñõB0
á§"ñõ B0
á§"ñõB0
á§"ñõ"B0
á§"ñõ7B0
 á§ "ñõYB0

á§
"ñõ<10>B0
+ â§(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3 â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3 â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ (²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ"(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§"òõ7(²ê08BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
3â§ "òõY(²ê0 8 BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
4â§
"òõ<10>(²ê0
8
BæŽä½<C3A4>èµç§¯åˆ†æ<E280A0><C3A6>å<EFBFBD>‡{0}%
9ã§(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ (³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ"(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§"óõ7(³ê08B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Aã§ "óõY(³ê0 8 B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
Bã§
"óõ<10>(³ê0
8
B'VIPèµæ¯<C3A6>æ—¥å…<C3A5>费报å<C2A5><C3A5>次数æ<C2B0><C3A6>å<EFBFBD>‡{0}
4ä§(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
< ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<!ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<"ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<#ä§"ôõ (´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<$ä§"ôõ(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<%ä§"ôõ"(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<&ä§"ôõ7(´ê08B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<'ä§ "ôõY(´ê0 8 B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
=(ä§
"ôõ<10>(´ê0
8
B"æ¯<C3A6>日礼包é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
4)å§(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<*å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<+å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<,å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<-å§"õõ (µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<.å§"õõ(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
</å§"õõ"(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<0å§"õõ7(µê08B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
<1å§ "õõY(µê0 8 B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
=2å§
"õõ<10>(µê0
8
B"æ¯<C3A6>日任务é‡å¸<C3A5>å¥åбæ<C2B1><C3A6>å<EFBFBD>‡{0}%
3æ§B0
4æ§"öõB0
5æ§"öõB0
6æ§"öõB0
7æ§"öõ B0
8æ§"öõB0
9æ§"öõ"B0
:æ§"öõ7B0
;æ§ "öõYB0
<æ§
"öõ<10>B0
7=ç§(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?>ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
??ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?@ç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Aç§"÷õ (·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Bç§"÷õ(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Cç§"÷õ"(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Dç§"÷õ7(·ê08B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
?Eç§ "÷õY(·ê0 8 B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%
@Fç§
"÷õ<10>(·ê0
8
B%æ¯<C3A6>次é»çŸ³æŠ½å¥å¹¸è¿<C3A8>值æ<C2BC><C3A6>å<EFBFBD>‡{0}%

763
data/DB_SkinLevel.json Normal file
View File

@ -0,0 +1,763 @@
{
"Arr": [
{
"Id": 1,
"SkinId": 300001,
"Level": 1,
"SkinSkillDes": "0"
},
{
"Id": 2,
"SkinId": 300001,
"Level": 2,
"UpItem": {
"310001": 3
},
"SkinSkillDes": "0"
},
{
"Id": 3,
"SkinId": 300001,
"Level": 3,
"UpItem": {
"310001": 5
},
"SkinSkillDes": "0"
},
{
"Id": 4,
"SkinId": 300001,
"Level": 4,
"UpItem": {
"310001": 8
},
"SkinSkillDes": "0"
},
{
"Id": 5,
"SkinId": 300001,
"Level": 5,
"UpItem": {
"310001": 13
},
"SkinSkillDes": "0"
},
{
"Id": 6,
"SkinId": 300001,
"Level": 6,
"UpItem": {
"310001": 21
},
"SkinSkillDes": "0"
},
{
"Id": 7,
"SkinId": 300001,
"Level": 7,
"UpItem": {
"310001": 34
},
"SkinSkillDes": "0"
},
{
"Id": 8,
"SkinId": 300001,
"Level": 8,
"UpItem": {
"310001": 55
},
"SkinSkillDes": "0"
},
{
"Id": 9,
"SkinId": 300001,
"Level": 9,
"UpItem": {
"310001": 89
},
"SkinSkillDes": "0"
},
{
"Id": 10,
"SkinId": 300001,
"Level": 10,
"UpItem": {
"310001": 144
},
"SkinSkillDes": "0"
},
{
"Id": 11,
"SkinId": 300002,
"Level": 1,
"SkinSkillId": 30002,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 12,
"SkinId": 300002,
"Level": 2,
"UpItem": {
"310002": 3
},
"SkinSkillId": 30002,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 13,
"SkinId": 300002,
"Level": 3,
"UpItem": {
"310002": 5
},
"SkinSkillId": 30002,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 14,
"SkinId": 300002,
"Level": 4,
"UpItem": {
"310002": 8
},
"SkinSkillId": 30002,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 15,
"SkinId": 300002,
"Level": 5,
"UpItem": {
"310002": 13
},
"SkinSkillId": 30002,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 16,
"SkinId": 300002,
"Level": 6,
"UpItem": {
"310002": 21
},
"SkinSkillId": 30002,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 17,
"SkinId": 300002,
"Level": 7,
"UpItem": {
"310002": 34
},
"SkinSkillId": 30002,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 18,
"SkinId": 300002,
"Level": 8,
"UpItem": {
"310002": 55
},
"SkinSkillId": 30002,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 19,
"SkinId": 300002,
"Level": 9,
"UpItem": {
"310002": 89
},
"SkinSkillId": 30002,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 20,
"SkinId": 300002,
"Level": 10,
"UpItem": {
"310002": 144
},
"SkinSkillId": 30002,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "排位赛积分提升{0}%"
},
{
"Id": 21,
"SkinId": 300003,
"Level": 1,
"SkinSkillId": 30003,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 22,
"SkinId": 300003,
"Level": 2,
"UpItem": {
"310003": 3
},
"SkinSkillId": 30003,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 23,
"SkinId": 300003,
"Level": 3,
"UpItem": {
"310003": 5
},
"SkinSkillId": 30003,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 24,
"SkinId": 300003,
"Level": 4,
"UpItem": {
"310003": 8
},
"SkinSkillId": 30003,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 25,
"SkinId": 300003,
"Level": 5,
"UpItem": {
"310003": 13
},
"SkinSkillId": 30003,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 26,
"SkinId": 300003,
"Level": 6,
"UpItem": {
"310003": 21
},
"SkinSkillId": 30003,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 27,
"SkinId": 300003,
"Level": 7,
"UpItem": {
"310003": 34
},
"SkinSkillId": 30003,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 28,
"SkinId": 300003,
"Level": 8,
"UpItem": {
"310003": 55
},
"SkinSkillId": 30003,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 29,
"SkinId": 300003,
"Level": 9,
"UpItem": {
"310003": 89
},
"SkinSkillId": 30003,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 30,
"SkinId": 300003,
"Level": 10,
"UpItem": {
"310003": 144
},
"SkinSkillId": 30003,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "VIP赛每日免费报名次数提升{0}"
},
{
"Id": 31,
"SkinId": 300004,
"Level": 1,
"SkinSkillId": 30004,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 32,
"SkinId": 300004,
"Level": 2,
"UpItem": {
"310004": 3
},
"SkinSkillId": 30004,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 33,
"SkinId": 300004,
"Level": 3,
"UpItem": {
"310004": 5
},
"SkinSkillId": 30004,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 34,
"SkinId": 300004,
"Level": 4,
"UpItem": {
"310004": 8
},
"SkinSkillId": 30004,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 35,
"SkinId": 300004,
"Level": 5,
"UpItem": {
"310004": 13
},
"SkinSkillId": 30004,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 36,
"SkinId": 300004,
"Level": 6,
"UpItem": {
"310004": 21
},
"SkinSkillId": 30004,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 37,
"SkinId": 300004,
"Level": 7,
"UpItem": {
"310004": 34
},
"SkinSkillId": 30004,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 38,
"SkinId": 300004,
"Level": 8,
"UpItem": {
"310004": 55
},
"SkinSkillId": 30004,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 39,
"SkinId": 300004,
"Level": 9,
"UpItem": {
"310004": 89
},
"SkinSkillId": 30004,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 40,
"SkinId": 300004,
"Level": 10,
"UpItem": {
"310004": 144
},
"SkinSkillId": 30004,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每日礼包金币奖励提升{0}%"
},
{
"Id": 41,
"SkinId": 300005,
"Level": 1,
"SkinSkillId": 30005,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 42,
"SkinId": 300005,
"Level": 2,
"UpItem": {
"310005": 3
},
"SkinSkillId": 30005,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 43,
"SkinId": 300005,
"Level": 3,
"UpItem": {
"310005": 5
},
"SkinSkillId": 30005,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 44,
"SkinId": 300005,
"Level": 4,
"UpItem": {
"310005": 8
},
"SkinSkillId": 30005,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 45,
"SkinId": 300005,
"Level": 5,
"UpItem": {
"310005": 13
},
"SkinSkillId": 30005,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 46,
"SkinId": 300005,
"Level": 6,
"UpItem": {
"310005": 21
},
"SkinSkillId": 30005,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 47,
"SkinId": 300005,
"Level": 7,
"UpItem": {
"310005": 34
},
"SkinSkillId": 30005,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 48,
"SkinId": 300005,
"Level": 8,
"UpItem": {
"310005": 55
},
"SkinSkillId": 30005,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 49,
"SkinId": 300005,
"Level": 9,
"UpItem": {
"310005": 89
},
"SkinSkillId": 30005,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 50,
"SkinId": 300005,
"Level": 10,
"UpItem": {
"310005": 144
},
"SkinSkillId": 30005,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每日任务金币奖励提升{0}%"
},
{
"Id": 51,
"SkinId": 300006,
"Level": 1,
"SkinSkillDes": "0"
},
{
"Id": 52,
"SkinId": 300006,
"Level": 2,
"UpItem": {
"310006": 3
},
"SkinSkillDes": "0"
},
{
"Id": 53,
"SkinId": 300006,
"Level": 3,
"UpItem": {
"310006": 5
},
"SkinSkillDes": "0"
},
{
"Id": 54,
"SkinId": 300006,
"Level": 4,
"UpItem": {
"310006": 8
},
"SkinSkillDes": "0"
},
{
"Id": 55,
"SkinId": 300006,
"Level": 5,
"UpItem": {
"310006": 13
},
"SkinSkillDes": "0"
},
{
"Id": 56,
"SkinId": 300006,
"Level": 6,
"UpItem": {
"310006": 21
},
"SkinSkillDes": "0"
},
{
"Id": 57,
"SkinId": 300006,
"Level": 7,
"UpItem": {
"310006": 34
},
"SkinSkillDes": "0"
},
{
"Id": 58,
"SkinId": 300006,
"Level": 8,
"UpItem": {
"310006": 55
},
"SkinSkillDes": "0"
},
{
"Id": 59,
"SkinId": 300006,
"Level": 9,
"UpItem": {
"310006": 89
},
"SkinSkillDes": "0"
},
{
"Id": 60,
"SkinId": 300006,
"Level": 10,
"UpItem": {
"310006": 144
},
"SkinSkillDes": "0"
},
{
"Id": 61,
"SkinId": 300007,
"Level": 1,
"SkinSkillId": 30007,
"SkinSkillLevel": 1,
"SkinSkillValue": 1,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 62,
"SkinId": 300007,
"Level": 2,
"UpItem": {
"310007": 3
},
"SkinSkillId": 30007,
"SkinSkillLevel": 2,
"SkinSkillValue": 2,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 63,
"SkinId": 300007,
"Level": 3,
"UpItem": {
"310007": 5
},
"SkinSkillId": 30007,
"SkinSkillLevel": 3,
"SkinSkillValue": 3,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 64,
"SkinId": 300007,
"Level": 4,
"UpItem": {
"310007": 8
},
"SkinSkillId": 30007,
"SkinSkillLevel": 4,
"SkinSkillValue": 4,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 65,
"SkinId": 300007,
"Level": 5,
"UpItem": {
"310007": 13
},
"SkinSkillId": 30007,
"SkinSkillLevel": 5,
"SkinSkillValue": 5,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 66,
"SkinId": 300007,
"Level": 6,
"UpItem": {
"310007": 21
},
"SkinSkillId": 30007,
"SkinSkillLevel": 6,
"SkinSkillValue": 6,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 67,
"SkinId": 300007,
"Level": 7,
"UpItem": {
"310007": 34
},
"SkinSkillId": 30007,
"SkinSkillLevel": 7,
"SkinSkillValue": 7,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 68,
"SkinId": 300007,
"Level": 8,
"UpItem": {
"310007": 55
},
"SkinSkillId": 30007,
"SkinSkillLevel": 8,
"SkinSkillValue": 8,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 69,
"SkinId": 300007,
"Level": 9,
"UpItem": {
"310007": 89
},
"SkinSkillId": 30007,
"SkinSkillLevel": 9,
"SkinSkillValue": 9,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
},
{
"Id": 70,
"SkinId": 300007,
"Level": 10,
"UpItem": {
"310007": 144
},
"SkinSkillId": 30007,
"SkinSkillLevel": 10,
"SkinSkillValue": 10,
"SkinSkillDes": "每次钻石抽奖幸运值提升{0}%"
}
]
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -3,8 +3,8 @@
{
"Name": "不是VIP",
"Privilege1": [
100000,
2
0,
0
],
"Privilege2": [
0,
@ -28,7 +28,12 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"Privilege9": [
0,
0
],
"PrivilegeShow": 1000
},
{
"Id": 1,
@ -36,8 +41,8 @@
"Count": 1000,
"VipExp": 1000,
"Privilege1": [
100000,
100
0,
0
],
"Privilege2": [
0,
@ -62,7 +67,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 1,
"Privilege9": [
0,
0
],
"PrivilegeShow": 2000
},
{
"Id": 2,
@ -70,8 +81,8 @@
"Count": 2000,
"VipExp": 2000,
"Privilege1": [
150000,
150
0,
0
],
"Privilege2": [
0,
@ -96,7 +107,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 2,
"Privilege9": [
0,
0
],
"PrivilegeShow": 3000
},
{
"Id": 3,
@ -104,8 +121,8 @@
"Count": 5000,
"VipExp": 5000,
"Privilege1": [
200000,
200
0,
0
],
"Privilege2": [
0,
@ -130,7 +147,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 3,
"Privilege9": [
0,
0
],
"PrivilegeShow": 4000
},
{
"Id": 4,
@ -138,8 +161,8 @@
"Count": 10000,
"VipExp": 10000,
"Privilege1": [
300000,
250
0,
0
],
"Privilege2": [
0,
@ -164,7 +187,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 4,
"Privilege9": [
0,
0
],
"PrivilegeShow": 5000
},
{
"Id": 5,
@ -172,8 +201,8 @@
"Count": 20000,
"VipExp": 20000,
"Privilege1": [
400000,
300
0,
0
],
"Privilege2": [
0,
@ -198,7 +227,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 5,
"Privilege9": [
0,
0
],
"PrivilegeShow": 6000
},
{
"Id": 6,
@ -206,8 +241,8 @@
"Count": 50000,
"VipExp": 50000,
"Privilege1": [
500000,
350
0,
0
],
"Privilege2": [
0,
@ -232,7 +267,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 6,
"Privilege9": [
0,
0
],
"PrivilegeShow": 7000
},
{
"Id": 7,
@ -240,8 +281,8 @@
"Count": 100000,
"VipExp": 100000,
"Privilege1": [
600000,
400
0,
0
],
"Privilege2": [
0,
@ -266,7 +307,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 7,
"Privilege9": [
0,
0
],
"PrivilegeShow": 8000
},
{
"Id": 8,
@ -274,8 +321,8 @@
"Count": 200000,
"VipExp": 200000,
"Privilege1": [
700000,
450
0,
0
],
"Privilege2": [
0,
@ -300,7 +347,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 8,
"Privilege9": [
0,
0
],
"PrivilegeShow": 9000
},
{
"Id": 9,
@ -308,8 +361,8 @@
"Count": 500000,
"VipExp": 500000,
"Privilege1": [
800000,
500
0,
0
],
"Privilege2": [
0,
@ -334,7 +387,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 9,
"Privilege9": [
0,
0
],
"PrivilegeShow": 10000
},
{
"Id": 10,
@ -342,8 +401,8 @@
"Count": 1000000,
"VipExp": 1000000,
"Privilege1": [
900000,
550
0,
0
],
"Privilege2": [
0,
@ -368,7 +427,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 10,
"Privilege9": [
0,
0
],
"PrivilegeShow": 11000
},
{
"Id": 11,
@ -376,8 +441,8 @@
"Count": 2000000,
"VipExp": 2000000,
"Privilege1": [
1000000,
600
0,
0
],
"Privilege2": [
0,
@ -402,7 +467,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 11,
"Privilege9": [
0,
0
],
"PrivilegeShow": 12000
},
{
"Id": 12,
@ -410,8 +481,8 @@
"Count": 5000000,
"VipExp": 5000000,
"Privilege1": [
2000000,
650
0,
0
],
"Privilege2": [
0,
@ -436,7 +507,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 12,
"Privilege9": [
0,
0
],
"PrivilegeShow": 13000
},
{
"Id": 13,
@ -444,8 +521,8 @@
"Count": 10000000,
"VipExp": 10000000,
"Privilege1": [
3000000,
700
0,
0
],
"Privilege2": [
0,
@ -470,7 +547,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 13,
"Privilege9": [
0,
0
],
"PrivilegeShow": 14000
},
{
"Id": 14,
@ -478,8 +561,8 @@
"Count": 20000000,
"VipExp": 20000000,
"Privilege1": [
4000000,
750
0,
0
],
"Privilege2": [
0,
@ -504,7 +587,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 14,
"Privilege9": [
0,
0
],
"PrivilegeShow": 15000
},
{
"Id": 15,
@ -512,8 +601,8 @@
"Count": 50000000,
"VipExp": 50000000,
"Privilege1": [
5000000,
800
0,
0
],
"Privilege2": [
0,
@ -538,7 +627,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
],
"MatchFreeTimes": 15,
"Privilege9": [
0,
0
],
"PrivilegeShow": 16000
},
{
"Id": 16,
@ -546,8 +641,8 @@
"Count": 100000000,
"VipExp": 100000000,
"Privilege1": [
6000000,
850
0,
0
],
"Privilege2": [
0,
@ -572,8 +667,13 @@
"获得专属头像框",
"获得专属炮台",
"更多VIP功能正待开发"
]
},
{}
],
"MatchFreeTimes": 16,
"Privilege9": [
0,
0
],
"PrivilegeShow": 17000
}
]
}

3
data/DB_VIPShow.dat Normal file
View File

@ -0,0 +1,3 @@



13
data/DB_VIPShow.json Normal file
View File

@ -0,0 +1,13 @@
{
"Arr": [
{
"Id": 1,
"SkinId": 300003
},
{
"Id": 2,
"SkinId": 300004,
"VIPLevel": 3
}
]
}

View File

@ -0,0 +1,19 @@
{
"GameName":"娃娃机",
"GameId":608,
"GameMode":[0],
"SceneType":[1],
"CanForceStart":false,
"MinPlayerCnt":1,
"DefaultPlayerCnt":1,
"MaxIndex":0,
"TimeFreeStart":0,
"TimeFreeEnd":0,
"DependentPlayerCnt":true,
"EnterAfterStart":false,
"PerGameTakeCard":100,
"ViewLogCnt":-1,
"BetState":0,
"Params":[
]
}

View File

@ -1,5 +1,5 @@
{
"NewPlayerCoin":1000000,
"NewPlayerCoin":100000000,
"UpgradeAccountGiveCoin":0,
"LogBatchWriteCount":1024,
"LogBatchWriteInterval":1,
@ -22,5 +22,7 @@
"RobotInviteIntervalMax": 1,
"ClosePreCreateRoom": true,
"AgoraAddress": "http://47.105.78.29:8081",
"InviteUrl": "http://47.105.78.29:8000/"
"InviteUrl": "http://47.105.78.29:8000/",
"RankTimeout": 2,
"PermitInitScore": 0
}

View File

@ -7,5 +7,7 @@
"RankAwardTitle": "{\"zh\":\"赛季奖励-%v\",\"vi\":\"Hạng bạc-%v\",\"en\":\"Season rewards-%v\",\"kh\":\"រង្វាន់រដូវកាល-%v\"}",
"RankAward": "{\"zh\":\"您上赛季有未领取的奖励\",\"vi\":\"Bạn có phần thưởng chưa được nhận từ mùa giải trước\",\"en\":\"You have unclaimed rewards from last season\",\"kh\":\"អ្នកមិនទាន់បានយករង្វាន់តាំងពីរដូវកាលមុន\"}",
"MatchAwardTitle": "{\"zh\":\"话费充值兑换码\",\"vi\":\"Mã nạp tiền ĐT\",\"en\":\"Phone recharge code\",\"kh\":\"កូដបញ្ចូលទូរស័ព្ទ\"}",
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}"
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}",
"PermitAwardTitle": "{\"zh\":\"通行证排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}",
"PermitAward": "{\"zh\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}"
}

View File

@ -44,6 +44,15 @@
"AppId": "5c56d1644966f078bfb90c71",
"IsDevMode": true
},
"data":{
"RootPath":"../data"
},
"etcd": {
"Url": ["127.0.0.1:2379"],
"UserName": "",
"Password": "",
"DialTimeout": 60
},
"costum": {
"MgoRpcCliNet": "tcp",
"MgoRpcCliAddr": "127.0.0.1:8999",
@ -51,11 +60,6 @@
"RMQExchange": "win88",
"RMQQosPrefetchCount": 2,
"RMQQosPrefetchSize": 0,
"RMQQosGlobal": true,
"etcdurl": [
"127.0.0.1:2379"
],
"etcduser": "",
"etcdpwd": ""
"RMQQosGlobal": true
}
}

View File

@ -1,10 +1,10 @@
package main
import (
"context"
"strings"
"go.etcd.io/etcd/client/v3"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/mongo"
@ -13,7 +13,7 @@ import (
)
func init() {
etcd.Register(etcd.ETCDKEY_SYS_PLT_DBCFG_PREFIX, webapi.PlatformDbConfig{}, func(completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
etcd.Register(etcd.ETCDKEY_SYS_PLT_DBCFG_PREFIX, webapi.PlatformDbConfig{}, func(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
if event.Type == clientv3.EventTypeDelete {
return
}

View File

@ -7,53 +7,44 @@ import (
"net/rpc"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/goserver/core/etcd"
"mongo.games.com/goserver/core/module"
_ "mongo.games.com/game"
_ "mongo.games.com/game/dbproxy/mq"
"mongo.games.com/game/common"
_ "mongo.games.com/game/dbproxy/mq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
_ "mongo.games.com/game/srvdata"
)
var rabbitMqConsumer *mq.RabbitMQConsumer
func init() {
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
model.InitGameParam()
rabbitMqConsumer = mq.NewRabbitMQConsumer(common.CustomConfig.GetString("RabbitMQURL"), rabbitmq.Exchange{Name: common.CustomConfig.GetString("RMQExchange"), Durable: true})
if rabbitMqConsumer != nil {
rabbitMqConsumer.Start()
}
//尝试初始化
svc.GetOnePlayerIdFromBucket()
return nil
})
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
if rabbitMqConsumer != nil {
rabbitMqConsumer.Stop()
}
model.ShutdownRPClient()
return nil
})
}
func main() {
// 自定义配置文件
model.InitGameParam()
// package模块
defer core.ClosePackages()
core.LoadPackages("config.json")
rpc.HandleHTTP() // 采用http协议作为rpc载体
lis, err := net.Listen(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"))
if err != nil {
log.Fatalln("fatal error: ", err)
}
go http.Serve(lis, nil)
waitor := module.Start()
waitor.Wait("main()")
// core hook
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
etcd.Start()
mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true)
mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog"))
// 尝试初始化玩家id
svc.GetOnePlayerIdFromBucket()
// rpc 服务
rpc.HandleHTTP() // 采用http协议作为rpc载体
lis, err := net.Listen(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"))
if err != nil {
log.Fatalln("rpc start fatal error: ", err)
}
go http.Serve(lis, nil)
return nil
})
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
return nil
})
// module模块
w := module.Start()
w.Wait("main()")
}

53
dbproxy/mongo/newmongo.go Normal file
View File

@ -0,0 +1,53 @@
package mongo
import (
"context"
"errors"
"fmt"
"time"
newMongo "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"mongo.games.com/goserver/core/logger"
)
var globalMongoSession *newMongo.Client
func mongoURI(user, password, host string, port int32, options string) string {
login := ""
if user != "" {
login = user + ":" + password + "@"
}
if host == "" {
host = "localhost"
}
if port == 0 {
port = 27017
}
if options != "" {
options = "?" + options
}
url := fmt.Sprintf("mongodb://%s%s:%d/admin%s", login, host, port, options)
return url
}
func NewMongoClient() (*newMongo.Client, error) {
if globalMongoSession != nil {
return globalMongoSession, nil
}
cfg, b := MgoSessionMgrSington.GetCfg(G_P, "user")
if !b {
return nil, errors.New("not db")
}
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
client, err := newMongo.Connect(ctx, options.Client().ApplyURI(mongoURI(cfg.Username, cfg.Password, cfg.HostName, cfg.HostPort, cfg.Options)))
if err != nil {
logger.Logger.Errorf("NewMongoClient error:%v", err)
return nil, err
}
if client == nil {
return nil, errors.New("not db client")
}
globalMongoSession = client
return client, nil
}

View File

@ -143,8 +143,10 @@ func newMgoSession(user, password, host string, port int32, options string) (s *
// [mongodb://][user:pass@]host1[:port1][,host2[:port2],...][/database][?options]
url := fmt.Sprintf("mongodb://%s%s:%d/admin%s", login, host, port, options)
//fmt.Println(url)
logger.Logger.Tracef("newMgoSession url:%s", url)
session, err := mgo.Dial(url)
if err != nil {
logger.Logger.Errorf("newMgoSession err:%v", err)
return nil, err
}
session.SetSafe(&mgo.Safe{})
@ -240,7 +242,7 @@ func (msm *MgoSessionMgr) GetPltMgoSession(plt, key string) *Session {
if c, ok := msm.GetCfg(plt, key); ok {
s, err := newMgoSession(c.Username, c.Password, c.HostName, c.HostPort, c.Options)
if s == nil || err != nil {
logger.Logger.Error("GetPltMgoSession(%s,%s) err:%v", plt, key, err)
logger.Logger.Errorf("GetPltMgoSession(%s,%s) err:%v config:%+v", plt, key, err, *c)
return nil
}
ss := &Session{Session: s, cfg: c}

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.APILog

View File

@ -1,56 +0,0 @@
package mq
func init() {
//mq.RegisteSubscriber(model.ClientLogCollName, func(e broker.Event) (err error) {
// msg := e.Message()
// if msg != nil {
// defer func() {
// if err != nil {
// mq.BackUp(e, err)
// }
//
// e.Ack()
//
// recover()
// }()
//
// var log model.ClientLog
// err = json.Unmarshal(msg.Body, &log)
// if err != nil {
// logger.Logger.Errorf("[mq] %s %v", model.ClientLogCollName, err)
// return
// }
//
// logger.Logger.Tracef("[mq] %s %v", model.ClientLogCollName, string(msg.Body))
//
// data := map[string]interface{}{}
// err = json.Unmarshal([]byte(log.Data), &data)
// if err != nil {
// logger.Logger.Errorf("[mq] %s %v", model.ClientLogCollName, err)
// return
// }
//
// // 获取平台id
// platform := log.Platform
// if log.Platform == "" {
// id, ok := data["platform"]
// if ok {
// platform = string(id.([]byte))
// }
// }
//
// data["ts"] = log.Ts
// if log.Snid > 0 {
// data["snid"] = log.Snid
// }
//
// c := svc.ClientLogStartCollection(platform)
// if c != nil {
// err = c.Insert(data)
// }
//
// return
// }
// return nil
//}, broker.Queue(model.ClientLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.CoinGiveLog

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.CoinLog
@ -30,7 +26,7 @@ func init() {
}
if log.Count == 0 { //玩家冲账探针
RabbitMQPublisher.Send(model.TopicProbeCoinLogAck, log)
mq.Send(model.TopicProbeCoinLogAck, log)
} else {
c := svc.CoinLogsCollection(log.Platform)
if c != nil {

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.FriendRecord

View File

@ -2,12 +2,14 @@ package mq
import (
"encoding/json"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
func init() {
@ -15,13 +17,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.GameDetailedLog

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.GamePlayerListLog

View File

@ -1,71 +1,310 @@
package mq
import (
"context"
"encoding/json"
"fmt"
"errors"
"time"
"github.com/astaxie/beego/cache"
"go.mongodb.org/mongo-driver/bson"
newMongo "go.mongodb.org/mongo-driver/mongo"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
var InviteNumCache = cache.NewMemoryCache()
func init() {
mq.RegisterSubscriber(model.EvtBindInvite, func(e broker.Event) (err error) {
mq.RegisterSubscriber(model.EvtInvite, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.BindInvite
var log model.EvtInviteMsg
err = json.Unmarshal(msg.Body, &log)
if err != nil {
logger.Logger.Errorf("EvtInvite json.Unmarshal error:%v msg:%v", err, string(msg.Body))
return
}
logger.Logger.Tracef("EvtInvite log:%+v", log)
// 绑定
err = svc.BindInviteSnId(log.Platform, log.SnId, log.InviteSnId, log.Ts)
if err != nil {
logger.Logger.Errorf("BindInviteSnId error:%v", err)
return err
}
name := fmt.Sprintf("%v", log.InviteSnId)
b := InviteNumCache.Get(name)
n, _ := b.(int32)
if n > 0 {
n++
} else {
n, err = svc.GetInviteNum(log.Platform, log.InviteSnId)
var addRechargeScore bool
if log.Tp != common.InviteScoreCheckWeek {
addRechargeScore, err = svc.CheckInviteScore(&log.InviteScore)
if err != nil {
logger.Logger.Errorf("BindInviteSnId error:%v", err)
logger.Logger.Errorf("EvtInvite SaveInviteScore error:%v msg:%+v %+v", err, log.InviteScore, log)
return err
}
}
InviteNumCache.Put(name, n, int64(time.Hour.Seconds()))
// 更新绑定数量
RabbitMQPublisher.Send(model.AckBindNum, &model.BindNum{
SnId: log.InviteSnId,
Num: n,
now := time.Unix(log.Ts, 0).Local() // 数据创建时间
get := func(snid int32) (*model.EvtInviteAckMsg, error) {
if snid == 0 {
return nil, errors.New("not found")
}
n := new(model.EvtInviteAckMsg)
n.Platform = log.Platform
n.Snid = snid
n.Score, n.Num, n.Money, _, err = svc.GetInviteData(log.Platform, snid)
return n, err
}
// 重置积分
reset := func(snid int32) error {
if snid == 0 {
return nil
}
_, _, _, ts, err := svc.GetInviteData(log.Platform, snid) // 上次更新时间
if err != nil {
logger.Logger.Errorf("EvtInvite GetInviteData error:%v snid:%v", err, snid)
return err
}
inSameWeek := common.InSameWeek(ts, now)
if !inSameWeek {
err = svc.ClearInviteScore(log.Platform, snid, now)
if err != nil {
logger.Logger.Errorf("EvtInvite ClearInviteScore error:%v snid:%v", err, snid)
return err
}
msg, err := get(snid)
if err != nil {
logger.Logger.Errorf("EvtInvite get error:%v snid:%v", err, snid)
return err
}
msg.Score = 0
mq.Send(model.EvtInviteAck, msg)
}
return nil
}
// 当前玩家积分是否跨周重置
tmpSnid := log.SnId
for i := 0; i < 6; i++ {
if tmpSnid > 0 {
err = reset(tmpSnid)
if err != nil {
logger.Logger.Errorf("EvtInvite reset %v error:%v snid:%v", i, err, tmpSnid)
return err
}
}
if tmpSnid > 0 {
tmpSnid, err = svc.GetPSnId(log.Platform, tmpSnid)
if err != nil {
logger.Logger.Errorf("EvtInvite GetPSnId %v error:%v snid:%v", i, err, tmpSnid)
return err
}
}
}
mongoClient, err := mongo.NewMongoClient()
if err != nil {
logger.Logger.Errorf("EvtInvite NewMongoClient error:%v", err)
return err
}
session, err := mongoClient.StartSession()
if err != nil {
logger.Logger.Errorf("EvtInvite StartSession error:%v", err)
return err
}
defer session.EndSession(context.Background())
// 事务不支持创建集合和索引,需要提前创建
svc.InviteScoreCollection(log.Platform)
svc.RankInviteCollection(log.Platform)
var notifySnId []int32
// 修改积分
err = newMongo.WithSession(context.Background(), session, func(sc newMongo.SessionContext) error {
err := session.StartTransaction()
if err != nil {
return err
}
// 增加积分
add := func(psnid, snid, level, tp int32, score, money, rate int64, addMoney bool) error {
if psnid <= 0 {
return nil
}
notifySnId = append(notifySnId, psnid)
err = svc.AddInviteScore(mongoClient, sc, log.Platform, psnid, snid, level, tp, score*rate/10000, rate, money, now, addMoney)
if err != nil {
logger.Logger.Errorf("EvtInvite add error:%v psnid:%v score:%v rate:%v", err, psnid, score, rate)
return err
}
return nil
}
getPSnId := func(platform string, snid int32) (int32, error) {
cfg, b := mongo.MgoSessionMgrSington.GetCfg(platform, svc.PlayerDBName)
if !b {
return 0, errors.New("not db")
}
playerDB := mongoClient.Database(cfg.Database)
type M struct {
PSnId int32
}
res := &M{}
c := playerDB.Collection(svc.PlayerCollName)
err = c.FindOne(context.TODO(), bson.D{{"snid", snid}}).Decode(res)
if err != nil && !errors.Is(err, newMongo.ErrNoDocuments) {
return 0, err
}
return res.PSnId, nil
}
switch log.Tp {
case common.InviteScoreTypeBind:
// 更新绑定数量
// 更新邀请积分
// 1.邀请人增加积分
err = add(log.InviteSnId, log.SnId, 0, log.Tp, log.Score, log.Money, 10000, false)
if err != nil {
session.AbortTransaction(sc)
return err
}
// 2.上级增加积分
var psnid int32
if len(log.Rate) > 0 {
psnid, err = getPSnId(log.Platform, log.InviteSnId)
if err != nil {
session.AbortTransaction(sc)
logger.Logger.Errorf("EvtInvite GetPSnId 2 error:%v snid:%v", err, log.InviteSnId)
return err
}
if psnid > 0 {
err = add(psnid, log.InviteSnId, 1, log.Tp, log.Score, log.Money, log.Rate[0], false)
if err != nil {
session.AbortTransaction(sc)
return err
}
}
}
if len(log.Rate) > 1 && psnid > 0 {
psnid, err = getPSnId(log.Platform, psnid)
if err != nil {
session.AbortTransaction(sc)
logger.Logger.Errorf("EvtInvite GetPSnId 2 error:%v snid:%v", err, log.InviteSnId)
return err
}
if psnid > 0 {
err = add(psnid, log.InviteSnId, 2, log.Tp, log.Score, log.Money, log.Rate[1], false)
if err != nil {
session.AbortTransaction(sc)
return err
}
}
}
if len(log.Rate) > 2 && psnid > 0 {
psnid, err = getPSnId(log.Platform, psnid)
if err != nil {
session.AbortTransaction(sc)
logger.Logger.Errorf("EvtInvite GetPSnId 3 error:%v snid:%v", err, log.InviteSnId)
return err
}
if psnid > 0 {
err = add(psnid, log.InviteSnId, 3, log.Tp, log.Score, log.Money, log.Rate[2], false)
if err != nil {
session.AbortTransaction(sc)
return err
}
}
}
case common.InviteScoreTypePay:
// 更新充值积分,上级积分增加
add(log.SnId, 0, 0, common.InviteScoreTypePayMe, log.Score, log.Money, 10000, false)
var psnid int32
if len(log.Rate) > 0 {
err = add(log.InviteSnId, log.SnId, 1, log.Tp, log.Score, log.Money, log.Rate[0], true)
if err != nil {
session.AbortTransaction(sc)
return err
}
psnid, err = getPSnId(log.Platform, log.InviteSnId)
if err != nil {
session.AbortTransaction(sc)
logger.Logger.Errorf("EvtInvite GetPSnId 3 error:%v snid:%v", err, log.InviteSnId)
return err
}
}
if len(log.Rate) > 1 && psnid > 0 {
err = add(psnid, log.SnId, 2, log.Tp, log.Score, log.Money, log.Rate[1], false)
if err != nil {
session.AbortTransaction(sc)
return err
}
psnid, err = getPSnId(log.Platform, psnid)
if err != nil {
session.AbortTransaction(sc)
logger.Logger.Errorf("EvtInvite GetPSnId 4 error:%v snid:%v", err, psnid)
return err
}
}
if len(log.Rate) > 2 && psnid > 0 {
err = add(psnid, log.SnId, 3, log.Tp, log.Score, log.Money, log.Rate[2], false)
if err != nil {
session.AbortTransaction(sc)
return err
}
}
if addRechargeScore {
err = add(log.InviteSnId, log.SnId, 1, common.InviteScoreTypeRecharge, log.RechargeScore, log.Money, 10000, true)
if err != nil {
session.AbortTransaction(sc)
return err
}
}
case common.InviteScoreTypeRecharge:
// 更新自己的积分
if addRechargeScore {
err = add(log.InviteSnId, log.SnId, 1, log.Tp, log.RechargeScore, log.Money, 10000, true)
} else {
// 只增加充值金额
err = add(log.InviteSnId, log.SnId, 0, log.Tp, 0, log.Money, 10000, true)
}
if err != nil {
session.AbortTransaction(sc)
return err
}
case common.InviteScoreCheckWeek:
default:
logger.Logger.Errorf("EvtInvite tp error, %v", log.Tp)
return err
}
// 提交事务
err = session.CommitTransaction(sc)
if err != nil {
logger.Logger.Errorf("EvtInvite CommitTransaction error:%v", err)
return err
}
return nil
})
if err != nil {
logger.Logger.Errorf("EvtInvite WithSession error:%v", err)
return err
}
// 通知变更
for _, v := range notifySnId {
msg, err := get(v)
if err != nil {
logger.Logger.Errorf("EvtInvite add find error:%v psnid:%v score:%v rate:%v", err, v, log.Score, log.Rate)
return err
}
mq.Send(model.EvtInviteAck, msg)
}
return
}
return nil
}, broker.Queue(model.EvtBindInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}, broker.Queue(model.EvtInvite), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.ItemLog

View File

@ -1,31 +0,0 @@
package mq
//func init() {
// mq.RegisteSubscriber(model.JackPotLogCollName, func(e broker.Event) (err error) {
// msg := e.Message()
// if msg != nil {
// defer func() {
// if err != nil {
// mq.BackUp(e, err)
// }
//
// e.Ack()
//
// recover()
// }()
//
// var log model.JackPotLog
// err = json.Unmarshal(msg.Body, &log)
// if err != nil {
// return
// }
//
// c := svc.JackPotLogsCollection(log.Platform)
// if c != nil {
// _, err = c.Upsert(bson.M{"_id": log.LogId}, log)
// }
// return
// }
// return nil
// }, broker.Queue(model.JackPotLogCollName), broker.DisableAutoAck(), rabbitmq.DurableQueue())
//}

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.LoginLog

View File

@ -16,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.OnlineLog

View File

@ -2,14 +2,16 @@ package mq
import (
"encoding/json"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
func init() {
@ -18,13 +20,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.PlayerRankScore
@ -53,13 +49,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.RankPlayerCoin
@ -82,4 +72,61 @@ func init() {
}
return nil
}, broker.Queue(model.MQRankPlayerCoin), broker.DisableAutoAck(), rabbitmq.DurableQueue())
//等级榜
mq.RegisterSubscriber(model.MQRankPlayerLevel, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
e.Ack()
}()
var log model.PlayerLevelInfo
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
logger.Logger.Tracef("SubscriberRankPlayerLevel: %+v", log)
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
err := svc.RankPlayerLevelUpsert(&log)
if err != nil {
logger.Logger.Errorf("RankPlayerCoinUpsert err: %v", err)
}
return nil
}), true)
return
}
return nil
}, broker.Queue(model.MQRankPlayerLevel), broker.DisableAutoAck(), rabbitmq.DurableQueue())
// 赛季通行证积分
mq.RegisterSubscriber(model.MQRankPlayerPermit, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
e.Ack()
}()
var log model.PermitScore
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
logger.Logger.Tracef("SubscriberRankPlayerPermit: %+v", log)
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
err := svc.RankPlayerPermitUpsert(&log)
if err != nil {
logger.Logger.Errorf("RankPlayerPermitUpsert err: %v", err)
}
return nil
}), true)
return
}
return nil
}, broker.Queue(model.MQRankPlayerPermit), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}

View File

@ -2,11 +2,13 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -14,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.SceneCoinLog

View File

@ -0,0 +1,36 @@
package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
func init() {
mq.RegisterSubscriber(mq.DBVipGiftLog, func(e broker.Event) (err error) {
msg := e.Message()
if msg != nil {
defer func() {
e.Ack()
}()
var log model.DbVip
err = json.Unmarshal(msg.Body, &log)
if err != nil {
return
}
c := svc.DbVipLogCollection(log.Platform)
if c != nil {
err = c.Insert(log)
}
return
}
return nil
}, broker.Queue(mq.DBVipGiftLog), broker.DisableAutoAck(), rabbitmq.DurableQueue())
}

View File

@ -3,11 +3,12 @@ package mq
import (
"encoding/json"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core/broker"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
func init() {
@ -15,13 +16,7 @@ func init() {
msg := e.Message()
if msg != nil {
defer func() {
if err != nil {
mq.BackUp(e, err)
}
e.Ack()
recover()
}()
var log model.WelfareLog

View File

@ -1,33 +0,0 @@
package mq
import (
"mongo.games.com/game/common"
"mongo.games.com/game/mq"
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/broker/rabbitmq"
)
var RabbitMQPublisher *mq.RabbitMQPublisher
func init() {
////首先加载游戏配置
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
//rabbitmq打开链接
RabbitMQPublisher = mq.NewRabbitMQPublisher(common.CustomConfig.GetString("RabbitMQURL"), rabbitmq.Exchange{Name: common.CustomConfig.GetString("RMQExchange"), Durable: true}, common.CustomConfig.GetInt("RMQPublishBacklog"))
if RabbitMQPublisher != nil {
err := RabbitMQPublisher.Start()
if err != nil {
panic(err)
}
}
return nil
})
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
//关闭rabbitmq连接
if RabbitMQPublisher != nil {
RabbitMQPublisher.Stop()
}
return nil
})
}

View File

@ -0,0 +1,90 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
AnnouncerLogDBErr = errors.New("log_announcerlog db open failed.")
)
func AnnouncerLogCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AnnouncerLogDBName)
if s != nil {
c, first := s.DB().C(model.AnnouncerLogCollName)
if first {
}
return c
}
return nil
}
func InsertAnnouncerLog(logs ...*model.AnnouncerLog) (err error) {
clog := AnnouncerLogCollection(logs[0].Platform)
if clog == nil {
return
}
switch len(logs) {
case 0:
return errors.New("no data")
case 1:
err = clog.Insert(logs[0])
default:
docs := make([]interface{}, 0, len(logs))
for _, log := range logs {
docs = append(docs, log)
}
err = clog.Insert(docs...)
}
if err != nil {
logger.Logger.Warn("InsertAnnouncerLog error:", err)
return
}
return
}
// 取最新100条数据
func FetchAnnouncerLog(plt string) (recs []model.AnnouncerLog, err error) {
query := bson.M{}
err = AnnouncerLogCollection(plt).Find(query).Sort("-_id").Limit(100).All(&recs)
return
}
type AnnouncerLogSvc struct {
}
func (svc *AnnouncerLogSvc) InsertAnnouncerLog(args []*model.AnnouncerLog, ret *bool) (err error) {
err = InsertAnnouncerLog(args...)
if err == nil {
*ret = true
}
return
}
func (svc *AnnouncerLogSvc) FetchAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *[]model.AnnouncerLog) (err error) {
*ret, err = FetchAnnouncerLog(args.Plt)
return
}
func (svc *AwardLogSvc) UpsertAnnouncerLog(args *model.FetchAnnouncerLogArgs, ret *model.AnnouncerLog) error {
cc := AnnouncerLogCollection(args.Plt)
if cc == nil {
return nil
}
_, err := cc.Upsert(bson.M{"platform": args.Plt}, args.Data)
if err != nil && err != mgo.ErrNotFound {
logger.Logger.Error("UpsertAnnouncerLog is err: ", err)
return err
}
ret = args.Data
return nil
}
func init() {
rpc.Register(new(AnnouncerLogSvc))
}

56
dbproxy/svc/l_awardlog.go Normal file
View File

@ -0,0 +1,56 @@
package svc
import (
"errors"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
AwardLogDBErr = errors.New("log_awardlog db open failed.")
)
func AwardLogCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.AwardLogDBName)
if s != nil {
c, first := s.DB().C(model.AwardLogCollName)
if first {
}
return c
}
return nil
}
func FetchAwardLog(plt string) (recs model.AwardLog, err error) {
err = AwardLogCollection(plt).Find(bson.M{}).One(&recs)
return
}
type AwardLogSvc struct {
}
func (svc *AwardLogSvc) FetchAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) (err error) {
*ret, err = FetchAwardLog(args.Plt)
return
}
func (svc *AwardLogSvc) UpsertAwardLog(args *model.FetchAwardLogArgs, ret *model.AwardLog) error {
cc := AwardLogCollection(args.Plt)
if cc == nil {
return AwardLogDBErr
}
_, err := cc.Upsert(bson.M{}, args.Data)
if err != nil {
logger.Logger.Error("UpsertAwardLog is err: ", err)
return err
}
ret = args.Data
return nil
}
func init() {
rpc.Register(new(AwardLogSvc))
}

View File

@ -31,6 +31,8 @@ func CoinLogsCollection(plt string) *mongo.Collection {
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"cointype"}, Background: true, Sparse: true})
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"channel"}, Background: true, Sparse: true})
c_coinlogrec.EnsureIndex(mgo.Index{Key: []string{"-ts", "logtype", "cointype", "channel"}, Background: true, Sparse: true})
}
return c_coinlogrec
}

View File

@ -1,6 +1,7 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
@ -18,6 +19,8 @@ func DbShopLogCollection(plt string) *mongo.Collection {
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"pageid"}, Background: true, Sparse: true})
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"state"}, Background: true, Sparse: true})
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"shopid"}, Background: true, Sparse: true})
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
dbShopRec.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true})
}
return dbShopRec
}
@ -98,6 +101,29 @@ func (svc *DbShopLogSvc) GetDbShopLogsByState(args *model.DbShopLogArgs, dbShops
}
return
}
func GetMoneyTotal(platform string, snid int32) int64 {
c := DbShopLogCollection(platform)
if c == nil {
logger.Logger.Error("UpdateDbShopState == nil")
return 0
}
var err error
type m struct {
Total int64 `bson:"total"`
}
tc := new(m)
err = c.Pipe([]bson.M{
{"$match": bson.M{"snid": snid, "state": 1, "consumetypenum": bson.M{"$gt": 0}}},
{"$group": bson.M{"_id": nil, "total": bson.M{"$sum": "$consumetypenum"}}},
}).AllowDiskUse().One(tc)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("GetMoneyTotal error:", err)
return 0
}
return tc.Total
}
func init() {
rpc.Register(new(DbShopLogSvc))
}

View File

@ -2,12 +2,14 @@ package svc
import (
"errors"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
@ -16,6 +18,12 @@ var (
FriendApplyColError = errors.New("friendapply collection open failed")
)
var (
FriendApplyListDBName = "log"
FriendApplyListCollName = "log_friendapplylist"
FriendApplyListColError = errors.New("friendapplylist collection open failed")
)
func FriendApplyCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, FriendApplyDBName)
if s != nil {
@ -28,6 +36,18 @@ func FriendApplyCollection(plt string) *mongo.Collection {
return nil
}
func FriendApplyListCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, FriendApplyListDBName)
if s != nil {
c, first := s.DB().C(FriendApplyListCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
}
return c
}
return nil
}
type FriendApplySvc struct {
}
@ -71,6 +91,49 @@ func (svc *FriendApplySvc) DelFriendApply(args *model.FriendApplyByKey, ret *boo
return nil
}
func (svc *FriendApplySvc) UpsertApplyList(args *model.ApplyListReq, ret *model.ApplyListRes) error {
cc := FriendApplyListCollection(args.Platform)
if cc == nil {
return FriendApplyListColError
}
if args.Data == nil || args.Data.SnId <= 0 {
return nil
}
_, err := cc.Upsert(bson.M{"snid": args.Data.SnId}, args.Data)
if err != nil && err != mgo.ErrNotFound {
logger.Logger.Error("UpsertApplyList is err: ", err)
return err
}
ret.Data = args.Data
return nil
}
func (svc *FriendApplySvc) QueryFriendApplyListBySnid(args *model.FriendApplyByKey, ret *model.ApplyListRes) error {
fc := FriendApplyListCollection(args.Platform)
if fc == nil {
return FriendApplyListColError
}
err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.Data)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryFriendApplyListBySnid is err: ", err)
return err
}
return nil
}
func (svc *FriendApplySvc) DelFriendApplyList(args *model.FriendApplyByKey, ret *bool) error {
cc := FriendApplyListCollection(args.Platform)
if cc == nil {
return FriendApplyListColError
}
err := cc.Remove(bson.M{"snid": args.SnId})
if err != nil {
logger.Logger.Error("DelFriendApplyList is err: ", err)
return err
}
return nil
}
var _FriendApplySvc = &FriendApplySvc{}
func init() {

View File

@ -18,11 +18,16 @@ func GameDetailedLogsCollection(plt string) *mongo.Collection {
if s != nil {
c_gamedetailed, first := s.DB().C(model.GameDetailedLogCollName)
if first {
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"platform"}, Background: true, Sparse: true}) // 兼容老代码
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"gameid"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"logid"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-time"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"matchid"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-ts", "gameid"}, Background: true, Sparse: true})
c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-ts", "gamefreeid"}, Background: true, Sparse: true})
}
return c_gamedetailed
}

View File

@ -8,9 +8,11 @@ import (
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/logger"
)
@ -19,6 +21,7 @@ func GamePlayerListLogsCollection(plt string) *mongo.Collection {
if s != nil {
c_gameplayerlistlog, first := s.DB().C(model.GamePlayerListLogCollName)
if first {
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"platform"}, Background: true, Sparse: true}) // 兼容老代码
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"channel"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"promoter"}, Background: true, Sparse: true})
@ -30,7 +33,14 @@ func GamePlayerListLogsCollection(plt string) *mongo.Collection {
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"gamedetailedlogid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-time"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"name"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"matchid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"matchtype"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "gameid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "gamefreeid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "snid", "gameid"}, Background: true, Sparse: true})
c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "snid", "gamefreeid"}, Background: true, Sparse: true})
}
return c_gameplayerlistlog
}
@ -454,7 +464,7 @@ func (svc *GamePlayerListSvc) GetWinCoinListTienlen(args *model.FindWinCoinListA
var tc []*M
err := c.Pipe([]bson.M{
{"$match": bson.M{
"gameid": bson.M{"$in": common.GetTienlenGameID()},
"gameid": bson.M{"$in": srvdata.GameFreeMgr.GetGameId(common.GameDifTienlen)},
"ts": bson.M{"$gte": args.StartTs, "$lte": args.EndTs},
}},
{"$group": bson.M{
@ -517,7 +527,7 @@ func (svc *GamePlayerListSvc) GetWinCoinTienlen(args *model.FindWinCoinArgs, ret
err := c.Pipe([]bson.M{
{"$match": bson.M{
"snid": args.SnId,
"gameid": bson.M{"$in": common.GetTienlenGameID()},
"gameid": bson.M{"$in": srvdata.GameFreeMgr.GetGameId(common.GameDifTienlen)},
"ts": bson.M{"$gte": args.StartTs, "$lte": args.EndTs},
}},
{"$group": bson.M{

View File

@ -0,0 +1,291 @@
package svc
import (
"errors"
"net/rpc"
"sort"
"time"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
)
var (
InviteScoreDBName = "log"
InviteScoreCollName = "log_invitescore"
InviteScoreColError = errors.New("InviteScore collection open failed")
)
func InviteScoreCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, InviteScoreDBName)
if s != nil {
c, first := s.DB().C(InviteScoreCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"upsnid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"downsnid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"level"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"tp"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"money"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"score"}, Background: true, Sparse: true})
}
return c
}
return nil
}
type BindScoreSvc struct {
}
func CheckInviteScore(req *model.InviteScore) (b bool, err error) {
logger.Logger.Tracef("SaveInviteScore req:%+v", *req)
if req.SnId == 0 {
return false, nil
}
u := PlayerDataCollection(req.Platform)
if u == nil {
return false, PlayerColError
}
// 不能重复绑定
//if req.Tp == common.InviteScoreTypeBind {
// psnid, err := GetPSnId(req.Platform, req.SnId)
// if err == nil && psnid > 0 {
// // 已经绑定
// return false, errors.New("already bind")
// }
//}
// 必须已经绑定
if req.Tp != common.InviteScoreTypeBind {
psnid, err := GetPSnId(req.Platform, req.SnId)
if err != nil || psnid == 0 {
// 还没有绑定上级
logger.Logger.Errorf("not bind error:%v", err)
return false, err
}
}
// 充值成功记录
if (req.Tp == common.InviteScoreTypePay || req.Tp == common.InviteScoreTypeRecharge) && req.InviteSnId > 0 {
// 是否已经记录过
c := InviteScoreCollection(req.Platform)
if c == nil {
return false, InviteScoreColError
}
a := &model.LogInviteScore{}
err = c.Find(bson.M{"downsnid": req.SnId, "upsnid": req.InviteSnId, "tp": common.InviteScoreTypeRecharge}).One(a)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return false, errors.New("find error")
}
if err == nil && a.UpSnid > 0 {
} else {
b = true
}
}
return b, nil
}
// GetInviteRankList 获取周榜
func (b *BindScoreSvc) GetInviteRankList(req *model.FindPlayerRankInviteListArgs, ret *model.FindPlayerRankInviteListReply) error {
c := RankInviteCollection(req.Platform)
if c == nil {
return RankInviteColError
}
ret.RankType = req.RankType
var st int64
switch req.RankType {
case 1: //todo 总榜
return nil
case 2: // 本周榜
st = common.GetWeekStartTs(time.Now().Unix())
case 3: //todo 月榜
return nil
case 4: // 上周榜
st = common.GetWeekStartTs(time.Now().Unix())
st -= 7 * 24 * 3600
}
var list []*model.RankInvite
err := c.Find(bson.M{"week": st}).Sort("-score").Limit(int(model.GameParamData.RankInviteMaxNum)).All(&list)
if err != nil {
logger.Logger.Errorf("GetInviteRankList error: %v", err)
return err
}
var conds []int32
if len(list) > 0 {
type PInfo struct {
SnId int32
Name string // 昵称
Roles *model.ModInfo
}
var retPlayerList []PInfo
cplayerdata := PlayerDataCollection(req.Platform)
if cplayerdata == nil {
return err
}
for i := 0; i < len(list); i++ {
conds = append(conds, list[i].SnId)
}
selecter := bson.M{"snid": bson.M{"$in": conds}}
err = cplayerdata.Find(selecter).Select(bson.M{"snid": 1, "name": 1, "roles": 1}).All(&retPlayerList)
if err != nil {
logger.Logger.Error("GetInviteRankList find player is error", err)
return err
}
for _, inviteInfo := range list {
for _, playerData := range retPlayerList {
if inviteInfo.SnId == playerData.SnId {
var RankInvite model.PlayerRankInvite
RankInvite.Name = playerData.Name
RankInvite.Score = inviteInfo.Score
RankInvite.SnId = inviteInfo.SnId
// 头像模型ID
roleId := common.DefaultRoleId
if playerData.Roles != nil {
roleId = int(playerData.Roles.ModId)
}
RankInvite.ModId = int32(roleId)
RankInvite.InviteNum = int32(inviteInfo.Num)
ret.List = append(ret.List, &RankInvite)
break
}
}
}
}
return nil
}
// GetInviteScoreByType 获取玩家排行信息
func (b *BindScoreSvc) GetInviteScoreByType(req *model.FindPlayerRankInviteScoreArgs, ret *model.FindPlayerRankInviteScoreReply) error {
c := RankInviteCollection(req.Platform)
if c == nil {
return RankInviteColError
}
ret.RankType = req.RankType
var st int64
switch req.RankType {
case 1: //todo 总榜
return nil
case 2: // 本周榜
st = common.GetWeekStartTs(time.Now().Unix())
case 3: //todo 月榜
return nil
case 4: // 上周榜
st = common.GetWeekStartTs(time.Now().Unix())
st -= 7 * 24 * 3600
}
res := new(model.RankInvite)
err := c.Find(bson.M{"week": st, "snid": req.SnId}).One(res)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Warnf("GetInviteScoreByType error: %v", err)
return err
}
type PInfo struct {
SnId int32
Name string // 昵称
Roles *model.ModInfo
}
var retPlayer PInfo
u := PlayerDataCollection(req.Platform)
if u == nil {
return PlayerColError
}
err = u.Find(bson.M{"snid": req.SnId}).Select(bson.M{"snid": 1, "name": 1, "roles": 1}).One(&retPlayer)
if err != nil {
logger.Logger.Error("GetInviteScoreByType find player is error", err)
return err
}
// 头像模型ID
roleId := common.DefaultRoleId
if retPlayer.Roles != nil {
roleId = int(retPlayer.Roles.ModId)
}
ret.Data = model.PlayerRankInvite{
SnId: req.SnId,
Score: res.Score,
InviteNum: int32(res.Num),
Name: retPlayer.Name,
ModId: int32(roleId),
}
return nil
}
// GetInviteList 获取邀请列表
func (b *BindScoreSvc) GetInviteList(req *model.InviteLisArgs, ret *model.InviteListRet) error {
c := PlayerDataCollection(req.Platform)
if c == nil {
return InviteScoreColError
}
type M struct {
Name string
Roles *model.ModInfo
CreateTime time.Time
SnId int32
IScore int64
IScoreTs time.Time
}
var res []*M
err := c.Find(bson.M{"psnid": req.SnId}).Select(bson.M{"snid": 1, "iscore": 1, "iscorets": 1, "name": 1, "createtime": 1, "roles": 1}).All(&res)
if err != nil {
logger.Logger.Errorf("GetInviteList error:%v", err)
return err
}
now := time.Now().Local()
for _, v := range res {
if !common.InSameWeek(now, v.IScoreTs.Local()) {
v.IScore = 0
}
roleId := common.DefaultRoleId
if v.Roles != nil && v.Roles.ModId != 0 {
roleId = int(v.Roles.ModId)
}
ret.List = append(ret.List, &model.InviteInfo{
Name: v.Name,
SnId: v.SnId,
CreateTs: v.CreateTime.Unix(),
Score: v.IScore,
ModId: int32(roleId),
})
}
sort.Slice(ret.List, func(i, j int) bool {
return ret.List[i].Score > ret.List[j].Score
})
return nil
}
//todo 每周清理数据,绑定关系不能删除
var GlobalBindScoreSvc = new(BindScoreSvc)
func init() {
rpc.Register(GlobalBindScoreSvc)
}

View File

@ -1,11 +1,16 @@
package svc
import (
"errors"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
func ItemLogsCollection(plt string) *mongo.Collection {
@ -13,8 +18,14 @@ func ItemLogsCollection(plt string) *mongo.Collection {
if s != nil {
c_itemlog, first := s.DB().C(model.ItemLogCollName)
if first {
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"platform"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"logtype"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"itemid"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"createts"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"-createts"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"typeid"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"gameid"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"snid", "logtype", "itemid", "typeid"}, Background: true, Sparse: true})
}
return c_itemlog
}
@ -38,6 +49,68 @@ func (svc *ItemLogSvc) InsertItemLog(log *model.ItemLog, ret *bool) (err error)
return
}
// GetItemCount 获取v卡兑换消耗数量
func GetItemCount(platform string, snid, id int32, tp int) (count int64) {
c := ItemLogsCollection(platform)
if c == nil {
return 0
}
var err error
var swapN int64
var costN int64
type m struct {
Count int64 `bson:"count"`
}
tc := new(m)
// 兑换返还
err = c.Pipe([]bson.M{
{"$match": bson.M{"snid": snid, "logtype": 0, "itemid": id, "typeid": common.GainWay_Exchange}},
{"$group": bson.M{"_id": nil, "count": bson.M{"$sum": "$count"}}},
}).AllowDiskUse().One(tc)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Warn("GetItemCount swapN error:", err)
return 0
}
swapN = tc.Count
// 消耗总数量
tc = new(m)
err = c.Pipe([]bson.M{
{"$match": bson.M{"snid": snid, "logtype": 1, "itemid": id, "typeid": common.GainWay_Exchange}},
{"$group": bson.M{"_id": nil, "count": bson.M{"$sum": "$count"}}},
}).AllowDiskUse().One(tc)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Warn("GetItemCount costN error:", err)
return 0
}
costN = tc.Count
if tp == 0 {
// 获得数量 = 获得总数量 - 兑换返还 - 比赛返回
} else {
// 消耗数量 = 消耗总数量 - 兑换返还
count = costN - swapN
}
if count < 0 {
count = 0
}
return count
}
func (svc *ItemLogSvc) GetItemCount(req *model.ItemCountParam, count *int64) error {
*count = GetItemCount(req.Platform, req.Snid, req.Id, req.Tp)
return nil
}
func (svc *ItemLogSvc) UpdateState(req *model.UpdateParam, res *model.UpdateRes) error {
c := ItemLogsCollection(req.Platform)
if c == nil {
return nil
}
err := c.UpdateId(req.LogId, bson.M{"$set": bson.M{"status": req.State}})
return err
}
func init() {
rpc.Register(new(ItemLogSvc))
}

View File

@ -0,0 +1,67 @@
package svc
import (
"errors"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"net/rpc"
)
var (
MatchAwardLogDBErr = errors.New("log_matchawardlog db open failed.")
)
func MatchAwardLogCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.MatchAwardLogDBName)
if s != nil {
c, _ := s.DB().C(model.MatchAwardLogCollName)
return c
}
return nil
}
func InsertOrUpdateMatchAwardLog(logs ...*model.MatchAwardLog) (err error) {
for _, log := range logs {
clog := MatchAwardLogCollection(log.Platform)
if clog == nil {
return
}
_, err = clog.Upsert(nil, log)
if err != nil {
// 处理错误
return err
}
}
return
}
type MatchAwardLogSvc struct {
}
func (svc *MatchAwardLogSvc) InsertOrUpdateMatchAwardLog(args []*model.MatchAwardLog, ret *bool) (err error) {
err = InsertOrUpdateMatchAwardLog(args...)
if err == nil {
*ret = true
}
return
}
func GetMatchAward(plt string, ret *model.MatchAwardLog) (err error) {
clog := MatchAwardLogCollection(plt)
if clog == nil {
return nil
}
selecter := bson.M{"platform": plt}
err = clog.Find(selecter).One(&ret)
if err != nil {
return nil
}
return
}
func (svc *MatchAwardLogSvc) GetMatchAward(Plt string, ret *model.MatchAwardLog) (err error) {
err = GetMatchAward(Plt, ret)
return err
}
func init() {
rpc.Register(new(MatchAwardLogSvc))
}

View File

@ -22,6 +22,12 @@ func MatchLogCollection(plt string) *mongo.Collection {
c, first := s.DB().C(model.MatchLogCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"matchid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"starttime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-starttime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"endtime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-endtime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"sortid"}, Background: true, Sparse: true})
}
return c
}

View File

@ -0,0 +1,55 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
)
var (
RankInviteDBName = "log"
RankInviteCollName = "log_rankinvite"
RankInviteColError = errors.New("RankInvite collection open failed")
)
func RankInviteCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankInviteDBName)
if s != nil {
c, first := s.DB().C(RankInviteCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"num"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-score"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"score"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"week", "-score"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func SaveRankInvite(data *model.RankInvite) error {
c := RankInviteCollection(data.Platform)
if c == nil {
return RankInviteColError
}
data.Week = common.GetWeekStartTs(data.Ts)
_, err := c.Upsert(bson.M{"snid": data.SnId, "week": data.Week}, data)
if err != nil {
logger.Logger.Tracef("SaveRankInvite error:%v", err)
return err
}
return nil
}
//todo 每周清理数据

View File

@ -23,7 +23,7 @@ func RankPlayerCoinCollection(plt string) *mongo.Collection {
c, first := s.DB().C(RankPlayerCoinCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"coin"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-coin"}, Background: true, Sparse: true})
}
return c
}

View File

@ -0,0 +1,72 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
RankPlayerLevelDBName = "log"
RankPlayerLevelCollName = "log_rankplayerlevel"
RankPlayerLevelColError = errors.New("RankPlayerLevel collection open failed")
)
func RankPlayerLevelCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankPlayerLevelDBName)
if s != nil {
c, first := s.DB().C(RankPlayerLevelCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-exp"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func RankPlayerLevelUpsert(args *model.PlayerLevelInfo) error {
cc := RankPlayerLevelCollection(args.Platform)
if cc == nil {
return RankPlayerLevelColError
}
_, err := cc.Upsert(bson.M{"snid": args.SnId}, args)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("RankPlayerCoinSvc.Upsert is err: ", err)
return err
}
return nil
}
type RankPlayerLevelSvc struct {
}
func (svc *RankPlayerLevelSvc) Upsert(args *model.PlayerLevelInfo, ret *bool) error {
err := RankPlayerLevelUpsert(args)
if err != nil {
return err
}
*ret = true
return nil
}
func (svc *RankPlayerLevelSvc) Find(args *model.FindPlayerLevelListArgs, ret *model.FindPlayerLevelListReply) error {
fc := RankPlayerLevelCollection(args.Platform)
if fc == nil {
return RankPlayerCoinColError
}
err := fc.Find(bson.M{}).Sort("-exp").Limit(model.GameParamData.RankPlayerLevelMaxNum).All(&ret.List)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryMatchSeason is err: ", err)
return err
}
return nil
}
func init() {
rpc.Register(new(RankPlayerLevelSvc))
}

View File

@ -0,0 +1,72 @@
package svc
import (
"errors"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
RankPlayerPermitDBName = "log"
RankPlayerPermitCollName = "log_rankplayerpermit"
RankPlayerPermitColError = errors.New("RankPlayerPermit collection open failed")
)
func RankPlayerPermitCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankPlayerPermitDBName)
if s != nil {
c, first := s.DB().C(RankPlayerPermitCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"startts", "-exp", "-ts"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func RankPlayerPermitUpsert(args *model.PermitScore) error {
cc := RankPlayerPermitCollection(args.Platform)
if cc == nil {
return RankPlayerPermitColError
}
_, err := cc.Upsert(bson.M{"startts": args.StartTs, "snid": args.SnId}, args)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("RankPlayerPermitSvc.Upsert is err: ", err)
return err
}
return nil
}
type RankPlayerPermitSvc struct {
}
func (svc *RankPlayerPermitSvc) Upsert(args *model.PermitScore, ret *bool) error {
err := RankPlayerPermitUpsert(args)
if err != nil {
return err
}
*ret = true
return nil
}
func (svc *RankPlayerPermitSvc) Find(args *model.FindPlayerPermitListArgs, ret *model.FindPlayerPermitListReply) error {
fc := RankPlayerPermitCollection(args.Platform)
if fc == nil {
return RankPlayerPermitColError
}
err := fc.Find(bson.M{"startts": args.StartTs}).Sort("-exp", "-ts").Limit(int(model.GameParamData.RankPlayerPermitMaxNum)).All(&ret.List)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryPermit is err: ", err)
return err
}
return nil
}
func init() {
rpc.Register(new(RankPlayerPermitSvc))
}

View File

@ -26,7 +26,7 @@ func RankSeasonCollection(plt string, rankType int32) *mongo.Collection {
c, first := s.DB().C(fmt.Sprintf("%s_%d", RankSeasonCollName, rankType))
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"isrobot", "seasonid", "score"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"isrobot", "seasonid", "-score"}, Background: true, Sparse: true})
}
return c
}

View File

@ -7,6 +7,7 @@ import (
"fmt"
"io"
"net/rpc"
"strings"
"time"
"github.com/globalsign/mgo"
@ -59,6 +60,11 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
}
acc := &model.Account{}
defer func() {
// 修改旧数据
// 补充渠道信息
svc.setParam(acc)
}()
switch args.LoginType {
case common.LoginTypeGuest:
@ -103,10 +109,30 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
err := caccounts.Find(bson.M{"tel": args.Tel, "tagkey": args.TagKey}).One(acc)
if err != nil {
if errors.Is(err, mgo.ErrNotFound) {
ret.Tag = common.LoginNew
return nil
// 兼容8550开头的手机号,8550和855算同一个区号
if strings.HasPrefix(args.Tel, "855") {
tel := make([]byte, len(args.Tel)+1)
copy(tel, "8550")
copy(tel[4:], args.Tel[3:])
err = caccounts.Find(bson.M{"tel": string(tel), "tagkey": args.TagKey}).One(acc)
if err != nil {
if errors.Is(err, mgo.ErrNotFound) {
ret.Tag = common.LoginNew
return nil
} else {
return err
}
} else {
acc.Tel = args.Tel
caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"tel", args.Tel}}}})
}
} else {
ret.Tag = common.LoginNew
return nil
}
} else {
return err
}
return err
}
if args.CodeValid {
@ -229,6 +255,35 @@ func (svc *AccountSvc) AccountIsExist(args *model.AccIsExistArg, ret *model.AccR
return nil
}
func (svc *AccountSvc) setParam(acc *model.Account) {
if acc == nil || (acc.Channel != "" && acc.Channel != "0") {
return
}
c := PlayerDataCollection(acc.Platform)
if c == nil {
return
}
p := new(model.PlayerData)
err := c.Find(bson.M{"snid": acc.SnId}).One(p)
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
return
}
c = AccountCollection(acc.Platform)
if c == nil {
return
}
acc.Channel = p.Channel
if acc.Channel != "" {
err = c.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"channel", acc.Channel}}}})
if err != nil {
logger.Logger.Errorf("setChannel error:%v", err)
}
}
}
func (svc *AccountSvc) AccountTelIsRegiste(args *model.AccIsExistArg, exist *bool) error {
caccounts := AccountCollection(args.Platform)
if caccounts != nil {
@ -446,22 +501,22 @@ func (svc *AccountSvc) EditAccountPwd(acc *model.Account, ret *model.AccRet) err
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"backpassword", acc.TelPassWord}, {"telpassword", hashsum}}}})
}
func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error {
caccounts := AccountCollection(args.Platform)
if caccounts == nil {
return ErrAccDBNotOpen
}
var acc model.Account
err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc)
if err != nil {
return err
}
if len(acc.BackPassWord) > 0 {
return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}})
}
return nil
}
//func (svc *AccountSvc) ResetBackAccountPwd(args *model.AccIdArg, ret *model.AccRet) error {
// caccounts := AccountCollection(args.Platform)
// if caccounts == nil {
// return ErrAccDBNotOpen
// }
//
// var acc model.Account
// err := caccounts.Find(bson.M{"_id": bson.ObjectIdHex(args.AccId)}).One(&acc)
// if err != nil {
// return err
// }
// if len(acc.BackPassWord) > 0 {
// return caccounts.Update(bson.M{"_id": acc.AccountId}, bson.D{{"$set", bson.D{{"telpassword", acc.BackPassWord}}}})
// }
// return nil
//}
/*
* 修改帐号密码
@ -506,7 +561,7 @@ func (svc *AccountSvc) UpdateAccountPlatformInfo(acc *model.Account, ret *model.
return caccounts.Update(bson.M{"_id": acc.AccountId},
bson.D{{"$set", bson.M{"platform": acc.Platform,
"channel": acc.Channel, "promoter": acc.Promoter, "inviterid": acc.InviterId, "packegetag": acc.PackegeTag, "promotertree": acc.PromoterTree}}})
"channel": acc.Channel, "packegetag": acc.PackegeTag}}})
}
func (svc *AccountSvc) GetRobotAccounts(limit int, accs *[]model.Account) error {

View File

@ -7,9 +7,11 @@ import (
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
)
var (
@ -95,22 +97,42 @@ func (svc *BagSvc) AddBagItem(args *model.BagInfo, ret *bool) error {
if bag.BagId == "" {
bag.BagId = bson.NewObjectId()
}
var vCard int64 // v卡返还
for id, v := range args.BagItem {
if item, exist := bag.BagItem[id]; !exist {
if v.ItemNum <= 0 {
continue
}
bag.BagItem[id] = &model.Item{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
ObtainTime: time.Now().Unix(),
}
} else {
if v.ItemNum < 0 && -v.ItemNum > item.ItemNum {
v.ItemNum = -item.ItemNum
}
item.ItemNum += v.ItemNum
}
// v卡返还
if id == common.ItemIDVCard && args.GainWay == common.GainWay_Exchange && v.ItemNum > 0 {
vCard = v.ItemNum
}
}
_, err = cbag.Upsert(bson.M{"_id": bag.BagId}, bag)
if err != nil {
*ret = false
logger.Logger.Info("AddBagItem error ", err)
}
// v卡返还
if vCard > 0 {
c := PlayerDataCollection(args.Platform)
if c != nil {
err = c.Update(bson.M{"snid": args.SnId}, bson.M{"$inc": bson.M{"vcardcost": -vCard}})
}
}
return err
}

View File

@ -53,6 +53,16 @@ func (svc *GameKVDataSvc) UptGameKVData(args *model.GameKVData, ret *bool) error
return nil
}
func (svc *GameKVDataSvc) GetGameKVData(args *model.GameKVData, ret *model.GameKVData) error {
c := GameKVDatasCollection()
if c != nil {
err := c.Find(bson.M{"key": args.Key}).One(ret)
logger.Logger.Tracef("GetGameKVData: %#v %v", ret, err)
return err
}
return nil
}
var _GameKVDataSvc = &GameKVDataSvc{}
func init() {

View File

@ -21,7 +21,7 @@ import (
var (
InviteCodeDBName = "user"
InviteCodeCollName = "user_invitecode"
InviteCodeCollName = "user_icode"
InviteCodeColError = errors.New("InviteCode collection open failed")
InviteCodeMutex = sync.Mutex{}
)
@ -105,6 +105,19 @@ func (i *InviteCodeSvc) GetSnIdByCode(req *model.InviteSnIdReq, ret *model.Invit
return nil
}
func GetCodeBySnId(platform string, snid int32) (string, error) {
c := InviteCodeCollection(platform)
if c == nil {
return "", InviteCodeColError
}
col := new(model.InviteCode)
err := c.Find(bson.M{"snid": snid}).One(col)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return "", err
}
return col.Code, err
}
func init() {
rpc.Register(new(InviteCodeSvc))
}

View File

@ -1,325 +0,0 @@
package svc
import (
"errors"
"net/rpc"
"time"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
rankproto "mongo.games.com/game/protocol/rank"
)
var (
InviteScoreDBName = "user"
InviteScoreCollName = "user_invitescore"
InviteScoreColError = errors.New("InviteScore collection open failed")
)
func InviteScoreCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, InviteScoreDBName)
if s != nil {
c, first := s.DB().C(InviteScoreCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"invitesnid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"tp"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
}
return c
}
return nil
}
type BindScoreSvc struct {
}
func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.InviteScoreRet) error {
c := InviteScoreCollection(req.Platform)
if c == nil {
return InviteScoreColError
}
type M struct {
Score int64
}
var tc []M
err := c.Pipe([]bson.M{
{"$match": bson.M{
"invitesnid": req.SnId,
}},
{"$group": bson.M{
"_id": nil,
"score": bson.M{"$sum": "$score"},
}},
}).AllowDiskUse().All(&tc)
if err != nil {
logger.Logger.Error("GetInviteScore AllowDiskUse is error", err)
return err
}
if len(tc) > 0 {
ret.Score = tc[0].Score
c := PlayerDataCollection(req.Platform)
if c == nil {
return PlayerColError
}
err = c.Update(bson.M{"snid": req.SnId}, bson.M{"$set": bson.M{"invitescore": tc[0].Score}})
if err != nil {
logger.Logger.Error("GetInviteScore update invitescore is error", err)
return err
}
}
tc = tc[:0]
err = c.Pipe([]bson.M{
{"$match": bson.M{
"invitesnid": req.SnId,
"score": bson.M{"$gt": 0},
}},
{"$group": bson.M{
"_id": nil,
"score": bson.M{"$sum": "$score"},
}},
}).AllowDiskUse().All(&tc)
if err != nil {
logger.Logger.Error("GetInviteScore z AllowDiskUse is error", err)
return err
}
if len(tc) > 0 {
ret.ZScore = tc[0].Score
}
return nil
}
func (b *BindScoreSvc) SaveInviteScore(req *model.InviteScore, ret *bool) error {
logger.Logger.Tracef("SaveInviteScore req:%+v", *req)
if req.InviteSnId == 0 {
return nil
}
req.Id = bson.NewObjectId()
u := PlayerDataCollection(req.Platform)
if u == nil {
return PlayerColError
}
type M struct {
InviteScore int64
}
r := new(M)
err := u.Find(bson.M{"snid": req.InviteSnId}).Select(bson.M{"invitescore": 1}).One(r)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Errorf("GetInviteScore Find error:%v", err)
return err
}
if req.Score < 0 {
if -req.Score > r.InviteScore {
req.Score = -r.InviteScore
}
}
c := InviteScoreCollection(req.Platform)
if c == nil {
return InviteScoreColError
}
err = c.Insert(req)
if err != nil {
logger.Logger.Errorf("SaveInviteScore Insert error:%v", err)
return err
}
err = u.Update(bson.M{"snid": req.InviteSnId}, bson.M{"$inc": bson.M{"invitescore": req.Score}})
if err != nil {
logger.Logger.Errorf("inc InviteScore error:%v", err)
return err
}
*ret = true
return nil
}
func (b *BindScoreSvc) GetInviteRankList(req *model.FindPlayerRankInviteListArgs, ret *model.FindPlayerRankInviteListReply) error {
c := InviteScoreCollection(req.Platform)
if c == nil {
return InviteScoreColError
}
NowTime := time.Now().Local()
endTime := NowTime.UnixNano()
startTime := NowTime.AddDate(-100, 0, 0).UnixNano()
year, month, day := NowTime.Date()
today := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
if req.RankType == int32(rankproto.RankInvite_InviteType_Week) {
// 本周起始日期(周日)
startTime = today.AddDate(0, 0, -int(today.Weekday())).UnixNano()
} else if req.RankType == int32(rankproto.RankInvite_InviteType_Month) {
// 本月起始日期
startTime = time.Date(year, month, 1, 0, 0, 0, 0, time.Local).UnixNano()
//startTime = NowTime.AddDate(0, 0, -NowTime.Day()+1).UnixNano()
}
type M struct {
InviteSnId int32 // 邀请人id
Score int64 // 积分
}
var tc []M
err := c.Pipe([]bson.M{
{"$match": bson.M{
"score": bson.M{"$gt": 0},
"ts": bson.M{"$gte": startTime, "$lte": endTime},
}},
{"$group": bson.M{
"_id": bson.M{
"invitesnid": "$invitesnid",
},
"invitesnid": bson.M{"$first": "$invitesnid"},
"score": bson.M{"$sum": "$score"},
}},
{
"$sort": bson.M{"ts": -1},
},
{
"$sort": bson.M{"score": -1},
},
{
"$limit": model.GameParamData.RankInviteMaxNum,
},
}).AllowDiskUse().All(&tc)
if err != nil {
logger.Logger.Error("GetInviteRankList z AllowDiskUse is error", err)
return err
}
var conds []int32
if len(tc) > 0 {
type PInfo struct {
SnId int32
Name string // 昵称
Roles *model.RolePetInfo
}
var retPlayerList []PInfo
cplayerdata := PlayerDataCollection(req.Platform)
if cplayerdata == nil {
return err
}
for i := 0; i < len(tc); i++ {
conds = append(conds, tc[i].InviteSnId)
}
selecter := bson.M{"snid": bson.M{"$in": conds}}
//err = cplayerdata.Find(selecter).Select(bson.M{"snid": 1, "name": 1, "roles": 1}).All(&retPlayerList)
err = cplayerdata.Find(selecter).Select(bson.M{"snid": 1, "name": 1, "roles": 1}).All(&retPlayerList)
if err != nil {
logger.Logger.Error("svc.FindInvitePlayerList is error", err)
return nil
}
for _, inviteInfo := range tc {
for _, playerData := range retPlayerList {
if inviteInfo.InviteSnId == playerData.SnId {
var RankInvite model.PlayerRankInvite
RankInvite.Name = playerData.Name
RankInvite.Score = inviteInfo.Score
RankInvite.SnId = inviteInfo.InviteSnId
// 头像模型ID
roleId := common.DefaultRoleId
if playerData.Roles != nil {
roleId = int(playerData.Roles.ModId)
}
RankInvite.ModId = int32(roleId)
RankInvite.InviteNum, _ = GetInviteNum(req.Platform, inviteInfo.InviteSnId)
ret.List = append(ret.List, &RankInvite)
break
}
}
}
ret.RankType = req.RankType
}
return nil
}
func (b *BindScoreSvc) GetInviteList(req *model.InviteLisArgs, ret *model.InviteListRet) error {
c := InviteScoreCollection(req.Platform)
if c == nil {
return InviteScoreColError
}
type M struct {
SnId int32
Score int64
}
var tc []M
err := c.Pipe([]bson.M{
{"$match": bson.M{
"invitesnid": req.SnId,
}},
{"$group": bson.M{
"_id": bson.M{
"snid": "$snid",
},
"snid": bson.M{"$first": "$snid"},
"score": bson.M{"$sum": "$score"},
}},
{
"$sort": bson.M{
"score": -1,
},
},
}).AllowDiskUse().All(&tc)
if err != nil {
logger.Logger.Error("GetInviteList AllowDiskUse is error", err)
return err
}
u := PlayerDataCollection(req.Platform)
if u == nil {
return PlayerColError
}
for _, v := range tc {
d := &model.PlayerBaseInfo2{}
err = u.Find(bson.M{"snid": v.SnId}).Select(bson.M{"name": 1, "createtime": 1, "roles": 1}).One(d)
if err != nil {
logger.Logger.Warnf("GetInviteList Find player is error:%v", err)
}
roleId := common.DefaultRoleId
if d.Roles != nil && d.Roles.ModId != 0 {
roleId = int(d.Roles.ModId)
}
ret.List = append(ret.List, &model.InviteInfo{
Name: d.Name,
SnId: v.SnId,
CreateTs: d.CreateTime.Unix(),
Score: v.Score,
ModId: int32(roleId),
})
}
return nil
}
func init() {
rpc.Register(new(BindScoreSvc))
}

View File

@ -18,6 +18,10 @@ func MessageCollection(plt string) *mongo.Collection {
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"state"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"mtype"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"srcid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-creatts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"creatts"}, Background: true, Sparse: true})
}
return c
}

View File

@ -11,14 +11,19 @@ import (
"strings"
"time"
newMongo "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
newBson "go.mongodb.org/mongo-driver/bson"
"mongo.games.com/game/common"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
)
var (
@ -37,13 +42,12 @@ func PlayerDataCollection(plt string) *mongo.Collection {
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"snid"}, Unique: true, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"channel"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"tel"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"bankaccount"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"alipayaccount"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"alipayaccname"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"bankaccname"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"invitecode"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"invitesnid"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"name"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"createtime"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"-createtime"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"icode"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"psnid"}, Background: true, Sparse: true})
c_playerdata.EnsureIndex(mgo.Index{Key: []string{"pcode"}, Background: true, Sparse: true})
}
return c_playerdata
}
@ -147,8 +151,8 @@ func (svc *PlayerDataSvc) GetPlayerData(args *model.GetPlayerDataArgs, ret *mode
name = "Guest"
}
pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType)
pd = model.NewPlayerData(args.Acc, name, id, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType, a.ChannelId)
if pd != nil {
err = cplayerdata.Insert(pd)
if err != nil {
@ -222,8 +226,8 @@ func (svc *PlayerDataSvc) CreatePlayerDataByThird(args *model.CreatePlayer, ret
}
var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Promoter, a.InviterId,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, a.SubPromoter, a.TagKey, a.AccountType, a.DeviceOs)
pd = model.NewPlayerDataThird(acc, name, args.HeadUrl, id, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, a.TagKey, a.AccountType, a.DeviceOs)
if pd != nil {
err = cplayerdata.Insert(pd)
if err != nil {
@ -245,7 +249,7 @@ func (svc *PlayerDataSvc) CreatePlayerDataByThird(args *model.CreatePlayer, ret
func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg, ret *model.PlayerDataRet) (err error) {
cplayerdata := PlayerDataCollection(args.Plt)
if cplayerdata == nil {
return
return PlayerColError
}
acc := args.AccId
pd := &model.PlayerData{}
@ -265,13 +269,13 @@ func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg,
if !bson.IsObjectIdHex(acc) {
logger.Logger.Warn("NewPlayer failed: acc is illeage ", acc)
return
return errors.New("acc is illeage")
}
var a *model.Account
a, err = _AccountSvc.getAccount(args.Plt, args.AccId)
if err != nil {
logger.Logger.Warnf("_AccountSvc.getAccount(%v,%v) failed:%v", args.Plt, args.AccId, err)
return
return err
}
id := a.SnId
@ -279,7 +283,7 @@ func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg,
id, err = GetOnePlayerIdFromBucket()
if err != nil {
logger.Logger.Warn("NewPlayer failed:", err)
return
return err
}
}
@ -292,26 +296,30 @@ func (svc *PlayerDataSvc) CreatePlayerDataOnRegister(args *model.PlayerDataArg,
}
var dataParams model.PlayerParams
json.Unmarshal([]byte(a.Params), &dataParams)
pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Promoter, a.InviterId,
a.PromoterTree, a.Params, a.Tel, a.PackegeTag, dataParams.Ip, int64(args.AddCoin),
"", a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType)
pd = model.NewPlayerData(acc, name, id, a.Channel, a.Platform, a.Params, a.Tel, a.PackegeTag,
dataParams.Ip, int64(args.AddCoin), "", a.DeviceInfo, a.TagKey, a.AccountType, a.ChannelId)
pd.HeadUrl = args.HeadUrl
if pd != nil {
if pd.ICode == "" {
code, _ := GetInviteCode(pd.Platform, pd.SnId)
pd.ICode = code
pd.IScoreTs = time.Now()
}
err = cplayerdata.Insert(pd)
if err != nil {
logger.Logger.Trace("CreatePlayerDataOnRegister Insert failed:", err)
return
return err
}
ret.Pd = pd
ret.IsNew = true
return
return nil
}
return
return nil
}
if CorrectData(pd) {
}
ret.Pd = pd
return
return nil
}
func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArgs, ret *model.PlayerDataRet) (err error) {
@ -320,6 +328,39 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
return nil
}
//defer func() {
// logger.Logger.Debugf("Player Data: snid:%v VCardCost:%v MoneyTotal:%v", ret.Pd.SnId, ret.Pd.VCardCost, ret.Pd.MoneyTotal)
//}()
f := func(p *model.PlayerData) {
// 更新一下绑定关系
if p.PSnId > 0 && p.PCode != "" {
return
}
c := InviteScoreCollection(args.Plt)
if c == nil {
return
}
res := new(model.LogInviteScore)
c.Find(bson.M{"downsnid": args.SnId, "tp": common.InviteScoreTypeBind}).One(res)
param := bson.M{}
if res.UpSnid > 0 {
p.PSnId = int32(res.UpSnid)
param["psnid"] = p.PSnId
code, _ := GetCodeBySnId(args.Plt, p.PSnId)
if code != "" {
p.PCode = code
param["pcode"] = code
}
cplayerdata.Update(bson.M{"snid": args.SnId}, bson.M{"$set": param})
}
if p.GuideStep >= 0 && p.CreateTime.Unix() < model.GameParamData.GuideTs {
p.GuideStep = -1
param["guidestep"] = p.GuideStep
cplayerdata.Update(bson.M{"snid": args.SnId}, bson.M{"$set": param})
}
}
var code string
err = cplayerdata.Find(bson.M{"snid": args.SnId}).One(&ret.Pd)
if err != nil {
@ -342,18 +383,19 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
name = "Guest"
}
pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Promoter, a.InviterId, a.PromoterTree, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.SubPromoter, a.TagKey, a.AccountType)
pd := model.NewPlayerData(a.AccountId.Hex(), name, a.SnId, a.Channel, a.Platform, a.Params,
a.Tel, a.PackegeTag, dataParams.Ip, 0, dataParams.UnionId, a.DeviceInfo, a.TagKey, a.AccountType, a.ChannelId)
if pd != nil {
if pd.ICode == "" {
code, _ = GetInviteCode(pd.Platform, pd.SnId)
pd.ICode = code
pd.IScoreTs = time.Now()
}
err = cplayerdata.Insert(pd)
if err != nil {
logger.Logger.Errorf("GetPlayerDataBySnId Insert err:%v acc:%v snid:%v", err, a.AccountId.Hex(), a.SnId)
return err
}
if pd.InviteCode == "" {
code, err = GetInviteCode(pd.Platform, pd.SnId)
pd.InviteCode = code
}
ret.IsNew = true
ret.Pd = pd
return nil
@ -361,14 +403,22 @@ func (svc *PlayerDataSvc) GetPlayerDataBySnId(args *model.GetPlayerDataBySnIdArg
}
return err
}
if ret.Pd.InviteCode == "" {
code, err = GetInviteCode(ret.Pd.Platform, ret.Pd.SnId)
ret.Pd.InviteCode = code
if ret.Pd.ICode == "" {
code, _ = GetInviteCode(ret.Pd.Platform, ret.Pd.SnId)
ret.Pd.ICode = code
ret.Pd.IScoreTs = time.Now()
cplayerdata.Update(bson.M{"snid": args.SnId}, bson.M{"$set": bson.M{"icode": code, "iscorets": ret.Pd.IScoreTs}})
}
if ret.Pd.VCardCost == 0 {
ret.Pd.VCardCost = GetItemCount(ret.Pd.Platform, ret.Pd.SnId, common.ItemIDVCard, 1)
}
if ret.Pd.MoneyTotal == 0 {
ret.Pd.MoneyTotal = GetMoneyTotal(ret.Pd.Platform, ret.Pd.SnId)
}
f(ret.Pd)
if args.CorrectData && ret.Pd != nil {
CorrectData(ret.Pd)
}
return nil
}
@ -458,6 +508,12 @@ func SavePlayerData(pd *model.PlayerData) (err error) {
}
if pd != nil {
model.RecalcuPlayerCheckSum(pd)
//todo 排除字段更新,有没有更新好的方法
pd.IScore, pd.INum, pd.IMoney, pd.IScoreTs, err = GetInviteData(pd.Platform, pd.SnId)
if err != nil {
logger.Logger.Errorf("model.SavePlayerData GetInviteData %v err:%v", pd.SnId, err)
return
}
_, err = cplayerdata.Upsert(bson.M{"_id": pd.Id}, pd)
if err != nil {
logger.Logger.Errorf("model.SavePlayerData %v err:%v", pd.SnId, err)
@ -1494,59 +1550,192 @@ func (svc *PlayerDataSvc) GetPlayerInviteSnid(req *model.PlayerIsExistBySnIdArgs
}
type t struct {
InviteSnId int32
PSnId int32
}
res := &t{}
err := c.Find(bson.M{"snid": req.SnId}).Select(bson.M{"invitesnid": 1}).One(res)
if err != nil && errors.Is(err, mgo.ErrNotFound) {
err := c.Find(bson.M{"snid": req.SnId}).Select(bson.M{"psnid": 1}).One(res)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return err
}
*resp = res.InviteSnId
*resp = res.PSnId
return nil
}
func (svc *PlayerDataSvc) GetInviteNum(req *model.PlayerIsExistBySnIdArgs, resp *int32) error {
n, err := GetInviteNum(req.Plt, req.SnId)
func (svc *PlayerDataSvc) BindInviteSnId(args *model.BindArgs, ret *bool) error {
err := BindInviteSnId(args.Platform, args.SnId, args.PSnId, args.PCode)
if err != nil {
return err
}
*resp = n
*ret = true
return nil
}
func GetInviteNum(platform string, snId int32) (int32, error) {
c := PlayerDataCollection(platform)
if c == nil {
return 0, PlayerColError
}
n, err := c.Find(bson.M{"invitesnid": snId}).Count()
if err != nil {
return 0, err
}
return int32(n), nil
}
func BindInviteSnId(platform string, snId, inviteSnId int32, ts int64) error {
func BindInviteSnId(platform string, snId, inviteSnId int32, code string) error {
c := PlayerDataCollection(platform)
if c == nil {
return PlayerColError
}
err := c.Update(bson.M{"snid": snId}, bson.M{"$set": bson.M{"invitesnid": inviteSnId}})
err := c.Update(bson.M{"snid": snId}, bson.M{"$set": bson.M{"psnid": inviteSnId, "pcode": code}})
if err != nil {
logger.Logger.Error("BindInviteSnId error ", err)
return err
}
err = c.Update(bson.M{"snid": inviteSnId}, bson.M{"$inc": bson.M{"inum": 1}})
if err != nil {
logger.Logger.Error("BindInviteSnId error ", err)
return err
}
return nil
}
func ClearInviteScore(platform string, snId int32, now time.Time) error {
c := PlayerDataCollection(platform)
if c == nil {
return PlayerColError
}
err := c.Update(bson.M{"snid": snId}, bson.M{"$set": bson.M{"iscore": 0, "iscorets": now}})
if err != nil {
logger.Logger.Error("ClearInviteScore error ", err)
return err
}
return nil
}
func AddInviteScore(client *newMongo.Client, sc newMongo.SessionContext, platform string, psnId, snid, level, tp int32, num, rate, money int64, now time.Time, addMoney bool) error {
logger.Logger.Tracef("AddInviteScore ==> platform %v, psnId %v, snid %v, level %v, tp %v, num %v, rate %v, money %v, now %v, addMoney %v",
platform, psnId, snid, level, tp, num, rate, money, now, addMoney)
inviteCfg, b := mongo.MgoSessionMgrSington.GetCfg(platform, InviteScoreDBName)
if !b {
return InviteScoreColError
}
inviteC := client.Database(inviteCfg.Database).Collection(InviteScoreCollName)
if inviteC == nil {
return InviteScoreColError
}
playerCfg, b := mongo.MgoSessionMgrSington.GetCfg(platform, PlayerDBName)
if !b {
return PlayerColError
}
playerC := client.Database(playerCfg.Database).Collection(PlayerCollName)
if playerC == nil {
return PlayerColError
}
rankCfg, b := mongo.MgoSessionMgrSington.GetCfg(platform, RankInviteDBName)
if !b {
return RankDataDBErr
}
rankC := client.Database(rankCfg.Database).Collection(RankInviteCollName)
if rankC == nil {
return RankDataDBErr
}
// 积分变更记录
_, err := inviteC.InsertOne(sc, &model.NInviteScore{
UpSnid: psnId,
DownSnid: snid,
Level: level,
Tp: tp,
Rate: rate,
Score: num,
Money: money,
Ts: now.Unix(),
})
if err != nil {
logger.Logger.Error("AddInviteScore LogInviteScore error ", err)
return err
}
// 玩家积分和绑定数量
type m struct {
IScore int64
INum int64
}
res := &m{}
err = playerC.FindOne(sc, newBson.M{"snid": psnId}).Decode(res)
if err != nil {
logger.Logger.Error("AddInviteScore find error ", err)
return err
}
// 修改玩家积分
myMoney := money
if !addMoney {
myMoney = 0
}
//addNum := int64(0)
//if level == 0 && tp == common.InviteScoreTypeBind {
// addNum = 1
//}
_, err = playerC.UpdateOne(sc, newBson.M{"snid": psnId}, newBson.M{"$inc": bson.M{"iscore": num, "imoney": myMoney}, "$set": bson.M{"iscorets": now}})
if err != nil {
logger.Logger.Error("AddInviteScore error ", err)
return err
}
// 更新排行榜
data := model.RankInvite{
Platform: platform,
SnId: psnId,
Num: res.INum,
Score: res.IScore + num,
Ts: now.Unix(),
Week: common.GetWeekStartTs(now.Unix()),
}
_, err = rankC.UpdateOne(sc, newBson.M{"snid": psnId, "week": data.Week}, newBson.M{"$set": data}, options.Update().SetUpsert(true))
if err != nil {
logger.Logger.Tracef("SaveRankInvite error:%v", err)
return err
}
return nil
}
func GetInviteData(platform string, snId int32) (iscore, inum, imoney int64, iscorets time.Time, err error) {
c := PlayerDataCollection(platform)
if c == nil {
err = PlayerColError
return
}
type M struct {
IScore, Imoney, Inum int64
IScoreTs time.Time
}
res := &M{}
err = c.Find(bson.M{"snid": snId}).Select(bson.M{"iscore": 1, "inum": 1, "imoney": 1, "iscorets": 1}).One(res)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return
}
res.IScoreTs = res.IScoreTs.Local()
return res.IScore, res.Inum, res.Imoney, res.IScoreTs, nil
}
func GetPSnId(platform string, snId int32) (psnId int32, err error) {
c := PlayerDataCollection(platform)
if c == nil {
err = PlayerColError
return
}
type M struct {
PSnId int32
}
res := &M{}
err = c.Find(bson.M{"snid": snId}).Select(bson.M{"psnid": 1}).One(res)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return 0, err
}
return res.PSnId, nil
}
func CorrectData(pd *model.PlayerData) bool {
//var coinTotal int64
dirty := false

36
deploy.bat Normal file
View File

@ -0,0 +1,36 @@
@echo off
set work_path=%cd%
git checkout develop
call shell/gen_data.bat
call shell/gen_go.bat
call shell/update_public.bat
git add .
git commit -m "update develop"
git checkout release
git merge develop
git add .
git reset public
git commit -m "update release"
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go env -w GO111MODULE=off
call shell/build.bat
rem copy
cd %work_path%
call shell/update_deploy.bat
git checkout develop
pause

Some files were not shown because too many files have changed in this diff Show More