CheckUpdate.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. /* * **************************************************
  3. * 此代码为员工在公司工作期间创作.
  4. * 使用权和所有权归属于公司和员工共有.
  5. * 收益的权利归属于公司.
  6. * ——石家庄龙游科技有限公司
  7. * ************************************************** */
  8. namespace loyalsoft;
  9. include_once __DIR__ . '/../../main.php';
  10. class UpdateRetInfo {
  11. public $err = 0;
  12. public $msg = "";
  13. public $newVer = "";
  14. public $cdn = "";
  15. /**
  16. * @var \sm_clientVersionHistory 版本信息
  17. */
  18. public $versionInfo = null;
  19. }
  20. /**
  21. * 检查更新(基于和王解的update模块的约定)
  22. * @author gwang
  23. * @version 1.0.0 Created by wanggangzero at 2020.4.27 13:48:33.
  24. */
  25. class CheckUpdate {
  26. /**
  27. * 打印消息并且停止游戏
  28. */
  29. const HaltWithMsg = false;
  30. const Md5_file = "UpdateFile";
  31. static function CDN_Root() {
  32. if (GAME_ONLINE) {
  33. return "http://115.159.121.129/ylsj2019/CDN/";
  34. } else {
  35. return "http://192.168.10.86/ylsj2019/CDN/";
  36. }
  37. }
  38. /**
  39. * 检查客户端版本是否需要强制更新
  40. * @param Req $req
  41. * @return int ErrCode
  42. */
  43. public static function Check() {
  44. $clientVer = self::GetClientVersion(); # 客户端版本号
  45. $platform = self::GetClientPlatform(); # 客户端平台(安卓/IOS)
  46. $ret = new UpdateRetInfo(); # 返回值
  47. $url = self::CDN_Root() . self::Md5_file . $platform . ".json"; # 资源文件MD5列表
  48. $lisJson = HttpUtil::makeRequest($url, array(), array(), array(), "get"); # 取CDN上版本列表
  49. if (isset($lisJson["result"]) && $lisJson["result"]) {
  50. $fileList = JsonUtil::decode($lisJson["msg"]);
  51. $newVer = $fileList->Version; # 取出最新版本号
  52. $ret->versionInfo = GameConfig::clientVersionHistory_getItem($newVer);
  53. $ret->newVer = $newVer;
  54. $ret->cdn = self::CDN_Root();
  55. if (($newVer - $clientVer) > 10) { # 版本号差异大于10=>整包更
  56. $ret->err = ErrCode::clientversionlow_err; # 返回错误码,强制更新1
  57. $ret->msg = "客户端有更新-整包更";
  58. } else if (($newVer - $clientVer) > 0) { # # 修订版本号不一致, 提示更新
  59. $ret->err = ErrCode::clientnewversion_msg;
  60. $ret->msg = "客户端有更新-差分更";
  61. } elseif (self::HaltWithMsg) { # 显示消息并且退出游戏
  62. $ret->msg = "sorry";
  63. $ret->err = ErrCode::clientPrintMsg_Halt;
  64. } else {
  65. $ret->err = ErrCode::ok; # 平安无事
  66. $ret->msg = "平安无事";
  67. }
  68. } else { # 检查更新失败
  69. $ret->err = 1031;
  70. $ret->msg = "检查更新失败!";
  71. }
  72. return $ret; # 返回
  73. }
  74. /**
  75. * 读取参数中的客户端版本
  76. * @return int
  77. */
  78. static function GetClientVersion() {
  79. $valueMap = HttpUtil::getQueryParas(); // array
  80. if (!is_array($valueMap)) {
  81. exit("无参数");
  82. }
  83. $clientVer = "";
  84. if (isset($valueMap["clientVer"])) {
  85. $clientVer = urldecode($valueMap['clientVer']);
  86. } else {
  87. exit("缺少参数 'clientVer'!");
  88. }
  89. return intval($clientVer);
  90. }
  91. /**
  92. * 读取参数中的客户端平台(Android/IOS)
  93. * @return string
  94. */
  95. static function GetClientPlatform() {
  96. $valueMap = HttpUtil::getQueryParas(); // array
  97. if (!is_array($valueMap)) {
  98. exit("无参数");
  99. }
  100. $plat = "";
  101. if (isset($valueMap["plat"])) {
  102. $plat = urldecode($valueMap['plat']);
  103. } else {
  104. exit("缺少参数 'plat'!");
  105. }
  106. return $plat;
  107. }
  108. }
  109. echo(JsonUtil::encode(CheckUpdate::Check())); # 打印json给客户端