# WW2-Server **Repository Path**: war-of-glory/WW2-Server ## Basic Information - **Project Name**: WW2-Server - **Description**: New WW2 Server - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-04-26 - **Last Updated**: 2021-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # War of glory - 服务端项目 ## Tips * Version: 2.4 * Client: 0.3.0 *New* > 大地图新端 > 以原离线战斗作为主战斗方式进行战斗,其余构想新篇 > 加入redis作为数据缓存,针对性数据落地以及缓存 ### Change Log #### 2017-01-23 > 修复各种bug > 新版本 2.4 <-> 0.3.0 *** #### 2017-01-19 > 修复一些bug > 修改联盟创建条件 > 新增新手礼包II,购买送坦克 > 准备发布新版本 2.4 <-> 0.2.7 *** #### 2017-01-18 > 搞定月卡,测试完毕 *** #### 2017-01-17 > 月卡初步完成 > 新 新手引导 修改 *** #### 2017-01-16 > 修复新号数据异常问题 *** #### 2017-01-14 > 修复穿装问题 *** #### 2017-01-12 > 取消创建联盟资源限定 > 取消掠夺功能消耗掠夺币限定 > 新手引导延后, 1-2之间添加两点 *** #### 2017-01-10 > 修复排行榜问题 Redis-sort > 修复天下大势问题 Redis-sort > 差不多修复了 Redis table landing Exceptions when server shutdown... *** #### 2017-01-06 > 将体力消耗 转移 至结算,而非开始 >> 关卡与扫荡均转移 *** #### 2017-01-05 > 全部ok,上传新端. > 适用客户端 0.2.4 *** #### 2017-01-04 > 优化Redis中Table的landing >> 优化SQL语句,改为使用事务批量提交,而非一条语句提交所有 > 修复充值礼包问题 > 修复首冲金条无双倍问题 > 商店购买资源限定取消 > 修复充值记录问题 payItems (也是redis造成) *** #### 2017-01-03 > 充值礼包已经ok > 探寻谷歌充值orderId问题 >> 结论: 测试订单回执数据中是不会存在orderId的,只有正式订单具有orderId >> 测试订单使用系统生成id记录到数据库 >> 非测试订单使用谷歌orderId, 新格式: GPA.xxxx-xxxx-xxxx-xxxxx x为数字 >> 旧版本(v2以及以下)orderId格式为 xxxxxxxxxxxxxxxxxxxxx 纯数字 *** #### 2017-01-02 > 添加充值礼包功能(与原pay结合) >> 功能: 规定限购次数进行限购 > 数据结构略作修改 *** #### 2016-12-30 > 修复 关卡 不给物品 的问题 > 修复一些其他bug > 将game.init移除,重新融合到push.init中 > 暂时取消 排行榜 查询功能 > 添加FCMToken绑定功能 *** #### 2016-12-29 > 修复Redis占用高的问题 > 优化getworldmapdata 接口 执行速度慢的问题 >> Aws Redis 访问速度似乎没那么快 ,可能是配置过低 >> 读取一个key 平均耗时 20ms+ > 临时添加 game.init 接口 *** #### 2016-12-26 > 取消game.init接口,融合至push.init(OnUserJoinZoneHandler) > 添加几个记录,特别是充值记录 *** #### 2016-12-21 > 修复一堆杂七杂八的bug *** #### 2016-12-18 > 测试并修复一些问题 >> 扫荡关卡 扣体力 涨经验 *无体力不扫荡未做判定 >> 操作玩家资源时,扣资源不应该check max *** #### 2016-12-17 > 完全修复declarwar > 修复几个隐患bug > 抽奖系统搞定 *** #### 2016-12-16 > 更换物品推送机制 > 实现蓝图自动解锁,并实现解锁过的无需再解锁 > 修复部分declarwar的方法 > 准备修改 城战时间 的判定方式 > 修改用户权限判定方式 *** #### 2016-12-15 > 宝箱系统全部ok > 发现bug->换装 > 修复换装bug > 修改宝箱策略模式接口,添加data *** #### 2016-12-14 > 使用物品接口ok > 宝箱规则ok > 宝箱ok > 物品配置添加新东西 > 权重随机数(赌盘随机)抽取工具完成 RandomSelector 使用有向图以及treemap搞定 *** #### 2016-12-13 > 物品系统重制完成 > 使用物品 - 未完整 > 其余接口均已修改 *** #### 2016-12-12 >不再由java缓存来做一级缓存,直接使用redis做一级缓存,无二级缓存 >存取的临时结构从HashMap转移到Table(Guava19.0+) >不再有那么多基类/转而使用接口 >由于物品ID的变化,一些Enum以及代码结构需要改变 >结构部分的分类规则是按照装备种类进行大类划分,按照可用性添加接口 >修改Inventory的数据存取等一系列方法 >修改ItemConfig中的存取方法,大多遗留注释,明日再删 *** #### 2016-12-09 > 添加大城特产 >> 领取 >> 每日刷新 >> 已领取列表 > 调整一些 事件 机制 >> 取消 关卡 完成事件 >> 添加 奖励 事件监听及触发 > 修改 玩家背包,将物品系统分离开来单独成套 >> 重新整理道具ID,使得更明确 >> 添加新的物品系统(模块化) *** #### 2016-12-08 > 添加新的城池建设相关配置 > 添加城池建设接口(产业) 除了大城特产,均搞定 >> 购买产业 >> 舍弃产业 >> 升级产业 >> 收集产业产出的资源 >> 获取玩家产业列表 > 与客户端py方面得到一个比较科学的做法 >> 即: 回传初始化数据中添加 产业标识位(表示玩家是否拥有产业) >> Y: 客户端再次请求 收集产业资源 接口,回传 时间间隔 后 开始计时 >> N: 不做任何操作 > 测试所有当前已完成接口OK,有一个小bug(客户端莫名其妙重发很多次收集资源 cityconst.collectRes) *** #### 2016-12-07 > 添加城池建设配置 > 设计城池建设结构 > 修改几处联盟方面不合理的地方 *** #### 2016-12-06 > 修改几个数据表,修改数据结构(id问题) > 优化transfer功能 > 贡献分开为据点贡献以及充值贡献 > 添加玩家第一次加入联盟标识 > 测试所有接口 *** #### 2016-12-05 > 新增玩家事件监听器和分发器 > 更换几个事件接口的位置,将玩家事件分离开 > 新增玩家贡献变化时,自动变更官职. (特定条件) > 新增联盟贡献变化事件分发,需要及时修改客户端数据 > 新联盟功能搞整完毕 >> 等级系统优化,推送和数据更新机制 >> 权限系统优化,满足一些特定情况的复杂条件 >> 新接口->罢免官职 (recall) >> 新接口->转让联盟 (transfer) > 玩家-联盟 历史记录表 >> 历史贡献值 *** #### 2016-12-03 > 修改和新增联盟新功能 >> 等级系统 >> 贡献系统,贡献足够自动升级机制 >> 扩容系统,暂时写死每个道具扩容量 > *** #### 2016-12-01 > 修复事件处理的巨大bug > 排行榜 找不到问题所在.需要另辟蹊径.. *** #### 2016-11-30 > 几个重要推送重做 > 城池/据点数据推送并测试ok >> 单个推送 >> 整体推送 > 战报以及数据记录调整 * 数据记录还有bug > 联盟成员变动时对大地图部分的影响重做(事件机制), 但还存在一些TODO->数据重置 > 发现重大bug,监听器部分 >> 添加监听出现重复 *** #### 2016-11-29 > 修复所有大地图相关的问题 > 重做据点/城池判定 > 重做据点战斗结束的事件处理(原来是单纯调用) > 重做消息分发 > 添加新的区域 AreaCityBattle ,用于推送踢出消息 > 所以添加了很多接口之类的用于事件处理 *** #### 2016-11-28 > 测试所有联盟相关接口(除与大地图部分相关) OK > 测试玩家-联盟事件处理和消息分发 OK > 修复消息分发引发的处理问题 > 修复联盟权限配置 > 修复联盟角色配置数量-1未处理的bug > 生产士兵回调添加 code 以及 pc > 修复sql问题(mybatis) *** #### 2016-11-26 > 联盟事件处理和消息分发完全搞定 > 玩家联盟事件处理和消息分发完全搞定 > 优化和修复联盟相关bug *** #### 2016-11-25 > 完善联盟事件处理和消息分发机制 >> 添加触发 >> 添加事件监听(不完美) > 修复大地图部分数据 >> 据点/城池 数据获取,取消status落地,改为实时获取 > 玩家时间处理器暂时不需要(应该还是需要一个) *** #### 2016-11-24 > GM工具添加新功能 >> 直接补充体力 >> 修改购买次数 > 联盟事件添加(未完整) > 重新封装WorldMap数据(操作部分) >> 优化结构并修复bug *** #### 2016-11-23 > 完善封装联盟结构(完结) >> 加入/回执 请求 >> 解散/取消 请求 >> 退出 请求 >> 修改联盟参数(由四个其他修改合并) >> 查询成员列表 >> 查询联盟列表 >> 查询联盟数据 *** #### 2016-11-22 > 优化联盟相关数据库结构 >> 联盟id采用uuid而非sql自增id >> 为联盟单独添加country属性 >> 为联盟单独添加curMember(当前成员数量)属性,方便查询数量 > 进一步封装联盟 >> AllianceManager - 缓存所有联盟/缓存当前联盟在线玩家 >> AllianceService - 联盟相关操作服务 > 创建联盟封装完毕(待检查测试) *** #### 2016-11-21 > 整理包结构,为以后留白 > 搭建MyBatis基础环境 >> BoneCP数据源(DataSource) Factory >> PoJo(DAO/Mapper) 构建程序 >> SessionFactory工具类(管理SqlSession) >> 优化包结构 *** #### 2016-11-18 > 修复城池时间问题 > 联盟成员变动导致城池变动bug修复(变动有问题,而不是不变动) > 去掉一些乱码注释 *** #### 2016-11-17 > 添加GM接口-> 解锁玩家关卡 > 修复一些联盟的bug >> 主要是关于数据刷新(worldmap)的问题 *** #### 2016-11-16 > 据点 升级/强化 捐献升级的消息推送 > getworldmapdata(待优化,耗时有点高),任何时候均可以给与时间 > 移除渠道配置,从properties中获取 > 去除多余的TODO > 金条时间比例修改 (根据加速类型不同而不同) *** #### 2016-11-15 > 删掉GeoIP, 使用smartfoxserver自带(完整的数据库) > 移除服务端的server/xxx.json配置,改用properties(结构更好) > 添加新的配置读取器 ServerProperties.java > 修改redis,为其增加重连特性 >> Server->Redis 自动重连 >> Redis->MySQL 自动重连(暂时使用SmartFoxServer连接池/因为目前游戏数据库只有一个) > 重做 背包 服务器端数据结构(由Multi-Bean改为Map->Single-Bean) > 修复购买资源不扣金条的bug > 添加重置 地图 数据接口的实现(包含消息通知) *** #### 2016-11-14 > 升级smartfoxserver2x 到2.12版本 > custom-geoip 可能要删掉了 *** #### 2016-11-10 > 扫荡机制修改,使用事件处理而非到处调用 > 扫荡奖励给全,以回调的方式显示数值 > *** #### 2016-11-09 > 重做物品数据结构,原结构多物品数量支持不友好 > 更新所有与"物品"关联的所有接口回调 (整个背包) > 任务完成接口 物品推送 > 购买资源/充值 回调 (数量) *** #### 2016-11-07 > 重做谷歌支付验证,原验证方式有刷单bug *** #### 2016-11-04 > 修复bug *** #### 2016-11-03 > 修复一些bug *** #### 2016-11-2 > 修复 疲劳恢复功能 (离线恢复) > 添加 WebProxyImpl 代理 > 据点 升级/强化 捐献消息回调 (升级推送未做) > 建筑升级完成回调修改(推送方式) > 兵种涨经验特性修改 *** #### 2016-11-1 > 绑定帐号功能完成(测试ok) facebook & google > 读取旧帐号记录接口(客户端提示覆盖原有,服务端暂时没管,应该做定时清理) > 修复任务结束 新手引导 的bug > 用户初始数据添加渠道号(作为帐号渠道标识) > *** #### 2016-10-31 > 研究渠道如何绑定等(google & facebook) > 重新封装一下server端的access_token刷新机(简单方式,固定时间) > 新增渠道工具 >> 目前只完成了谷歌的user登录验证,绑定未做 >> facebook登录验证已经研究透彻,明日再说! *** #### 2016-10-29 > 修复一些接口bug *** #### 2016-10-28 > 添加 GuideStep 同步(仅第一次) > 添加物品接口同步 >> 合成物品(物品) >> 合成装备(物品/兵) >> 升级装备(物品/兵) >> 使用物品(物品/...具体作用) >> 兵种换装(物品/兵) > 调试设置昵称接口,客户端另存昵称(由game.init传入,而后由setnickname回调传入) > 调试补充疲劳接口(修复错误) *** #### 2016-10-27 > 添加疲劳补充接口(一次补满且只能补满) shop.fill_fatigue >> 疲劳次数记录 >> 补充时间记录 > 添加新手引导接口(存储当前已完成的步骤) >> 步骤 >> 奖励 > 添加AbstractClientRequestHandler作为BaseClientRequestHandler 与 CustomHandler 的中间件 >> 简化Handler的构建过程,提升效率 > 修复operRes(ISFSObejct)的bug,为其添加可选性(增添/减少) > 修复兵种涨经验值的bug(取建筑等级时建筑未解锁报的NullPointerException) > 添加vipLv(当前只有0) > 几个接口位置调整(详见接口文档) > 修复game.init回传数据未完整的问题 *** #### 2016-10-26 > 升级捐献完成(暂不支持一次多级) > 修复造兵接口(时间问题) > DevTime结构修改,去除count和code(无用),只保留startTime duration endTime (其实只要endTime就可以的...) > 修复副本结算问题 > 修改GetBaseData接口回传信息 > 建筑升级(解锁)前置条件添加指挥官等级限定 > 添加联盟相关的封装(未完成) > 修复ShutDownHook中玩家信息不会保存的问题(redis需要强制同步一次) > 去除排行榜的TaskSchedule (PVP排行榜现在无用) *** #### 2016-10-25 > 修改IUserMission... 接口 >> 修改数据回传方式,由Object和getKey()方法改为Map... >> JSON换成Gson (由于SmartFox自带SFSObject巨大的坑...)(SFSDataType.fromClass(..) 方法未完成) > 副本修改为不送兵,客户端模拟兵种出现 > 测试副本接口成功(兵种信息未推送) *** #### 2016-10-24 > 基本封装完毕 > 额外的联盟封装考虑下个版本吧. *** #### 2016-10-20 > 开始封装WorldMap, 要修改的地方有点多,所以干脆一起封装了 > 重新思考 UserProfile 中的各种管理器问题 >> 由于使用了redis,那么管理器就不太应该用来存储数据了(只存储关系性的数据,如:id) *** #### 2016-10-19 > 修改资源操作方式(不再那么多判断) > 据点很多接口需要修改 > 据点升级改为捐献方式(未完成) *** #### 2016-10-18 > 修改worldmap配置文件的结构(以后都要慢慢改) > 修改接口 GetWorldMapData中的 getBlockList (这个方法以后要封装,先简单改一下) 很多配置文件都需要客户端自己读取了 *** #### 2016-10-17 > 添加关卡的扫荡功能 > 新增关卡handler(原副本更换位置) > 设计新的Web服务处理器(代理模式 WebProxy) [具体见文档](https://www.draw.io/?state=%7B%22folderId%22:%220B8E0IyWXk-uZemVxQ285dDIzWkk%22,%22action%22:%22create%22,%22userId%22:%22106430494843774251052%22%7D#G0B8E0IyWXk-uZcWRaZVFXTHlpMkU) *** #### 2016-10-14 > 测试接口OK(数据回传另测) >> Equip(兵换装) >> UseItem(使用道具) >> UpgradeEquipment(兵身上的装备升级) > 修改几个配置文件结构 > 删除几个接口 >> GetMissionData(客户端自己读) *** #### 2016-10-13 > 客户端下载文件重做 (支持重试的WWW) > 测试接口OK(数据回传另测) >> CompositeEquipment >> CompositeItem *** #### 2016-10-12 > 所有数据结构确定完成,并录表 > 更换客户端library (LitJson -> LitJson 0.9.3) 支持 js风格的 comments. *** #### 2016-10-11 > 确定物品数据结构 > 确定兵种数据结构 > 合成系统OK > 装备升级OK > 使用物品OK *** #### 2016-10-10 > 封装基本完成 > 背包系统完成 > 士兵装备系统完成 > 物品系统完成 > 合成系统 一半 > 士兵属性结构修改完成 *** #### 2016-09-22 > pvp修复完成 > 计划下一步需要做的事情 *** #### 2016-09-21 > 接口功能性测试 > game > userbase > chat > aggression > shop > alliance > worldmap (-2) >> 此项修改了getcitybaselist中针对base的action , 移动到了 getbasedata 中 > account (autosignup) *** #### 2016-09-20 > 基本修改完毕(欠缺) > 测试了一些基本功能 > 主要修改了redis tool > 重做离线作战完成,并测试成功(功能性测试) *** #### 2016-09-19 > 放假结束 > 客户端计时搞定 > 区域接口修改 > 联盟用户缓存 > 修改文件结构 > TODO 地图用户缓存移除 *** #### 2016-09-16 > 将时间再次改回客户端计时,服务端验证 *** #### 2016-09-14 > 测试N个接口完毕 *** #### 2016-09-13 > 基本改动完毕 > 下一步准备测试 *** #### 2016-09-12 > 改动3/4 *** #### 2016-09-09 > 终于改完了...一半 > 有很多改动需要测试,再重新添加新特性 *** #### 2016-09-08 > 添加新的计时特性,类似schedule > 修改很多东西(旧接口几乎全改) *** #### 2016-09-07 > 修改很多接口 > 时间格式 > 资源建筑计算(不以旧方式计算)(用现有的计时器进行计时计算60s) > 单位升级时间调整(用现有计时器计时) > 用户经验增长以及等级提升时的消息推送 *** #### 2016-09-06 > 开始修改用户数据(+Redis) > 改结构改接口 *** #### 2016-09-05 > 添加自动注册机制 > 添加登录渠道 > 暂将SignUpZone功能暂停咯(不删) *** #### 2016-09-03 > 基地攻击冷却 > 城池占领冷却 *** #### 2016-09-02 > 攻击冷却 > 每日结算 *** #### 2016-09-01 > 添加玩家/联盟 排行榜(记录) > 完善天下大势接口 > 时间规则 *** #### 2016-08-31 > redis报错是因为 reload 了 extension,而__lib__没有reload,目前为了避免此问题,尽量不要reload,正在解决这个问题 > Task List文档已经整理好(google docs) > 推送消息基本测试ok,现有个bug(无法推送给当前的发送者user) > *** #### 2016-08-30 > 升级/强化 据点接口已经做完 > 测试接口基本Ok,包括资源扣除,错误回执(此项客户端未处理) > 准备整理一个TODO Task文档 > redis单线程报错 *** #### 2016-08-29 > 接口基本做完 > 研究了升级/强化 据点的花费公式 *** #### 2016-08-26 > 测试OK > getworldmapdata > getcitybaselist > getbasemap > 基本ok > basebattlestart > basebattleend > missionbattlestart > missionbattleend > getmissiondata *** #### 2016-08-25 > 修改接口以及数据结构 > 添加副本接口 *** #### 2016-08-24 > 修改城池数据结构 > 添加区块数据 > 添加大地图_用户数据 > 添加用户解锁数据 > 修改接口 *** #### 2016-08-21 > 处理一些接口数据 *** #### 2016-08-18 > 添加新接口,但未完善 > GetTrend.java *** #### 2016-08-17 > 完善据点升级以及强化接口(公式未弄) *** #### 2016-08-16 > 添加接口: > BattleStart.java > BattleEnd.java > BaseEnhance.java (未完成) > BaseLevelUp.java (未完成) > 优化修复一些接口逻辑 *** #### 2016-08-15 > 大地图数据结构已就位 > 很多接口已就位,列表如下: > EnterArea.java > GetBaseData.java > GetBaseMap.java > GetCityBaseList.java > GetCityDataList.java > 优化配置文件逻辑,使之不再混乱 *** #### 2016-08-11 > 开始正式搞整WorldMap > 据点地图生成器已就位 > Redis已就位 *** #### 2016-08-10 > 修改定时方法 > 将添加一个总定时器专门用于定时任务TimerTask.java (per second) > 其提供一个静态方法,用于传入条件判断结果和runnable > 提供一个条件判断接口,用于在类外判断条件 > 修改的计时列表: > - alliance.Disband.java (解散联盟) > - alliancebattle.DeclarWar.java (宣战) > - alliancebattle.AllianceBattleHandler.java (选择重计时) *** #### 2016-08-09 > 更新客户端版本 > 检查各种bug *** #### 2016-08-05 > 添加worldmap全局数据 > 重新整理redis设计方式 *** #### 2016-08-01 > 添加新的聊天接口,不使用PublicMessage(坑比) > 剔除 30日 移除UserActionRoomExt 的后遗症(bug) *** #### 2016-07-30 > 设计数据库(考虑redis加入情况) > 移除UserActionRoomExt ( room 不能重载,且classloader不是固定的,即每次开启的room classloader不一定是parentZone的classloader) *** #### 2016-07-29 > 加入redis并测试其可用性 *** #### 2016-07-25 > 新加入redis子项目,使用redis作为一级缓存(二级缓存机制暂时不需要) > 若需要二级缓存,则直接将redis作为二级,将ehcache作为一级缓存即可 > 考虑是否需要使用mybatis,结果为否